mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
a2856d3b92
* restructure: Python samples into progressive 01-05 layout - 01-get-started/: 6 numbered steps (hello agent → hosting) - 02-agents/: all agent concept samples (tools, middleware, providers, etc.) - 03-workflows/: ALL existing workflow samples preserved as-is - 04-hosting/: azure-functions, durabletask, a2a - 05-end-to-end/: demos, evaluation, hosted agents - Old files moved to _to_delete/ for review - Added AGENTS.md with structure documentation - autogen-migration/ and semantic-kernel-migration/ preserved at root * fix: switch to AzureOpenAI Foundry, fix CI failures - Switch all 01-get-started samples to AzureOpenAIResponsesClient with Azure AI Foundry project endpoint (AZURE_AI_PROJECT_ENDPOINT + AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME + AzureCliCredential) - Add _to_delete/ and 05-end-to-end/ to pyrightconfig.samples.json excludes - Fix test paths in packages/ that referenced old getting_started/ dirs: durabletask conftest + streaming test, azurefunctions conftest, devui conftest + capture_messages + openai_sdk_integration - Fix workflow_as_agent_human_in_the_loop.py import (sibling import) - Update hosting READMEs and tool comment paths - Replace root README.md with new structure overview - Update AGENTS.md to document Azure OpenAI Foundry as default provider * cleanup: remove _to_delete folder, copy resource files to active dirs All files in _to_delete/ were either: - Exact duplicates of files in the new structure (240 files) - Same file with only comment path updates (100 files) - One import-fix diff (workflow_as_agent_human_in_the_loop.py) - One superseded minimal_sample.py Resource files (sample.pdf, countries.json, employees.pdf, weather.json) copied to 02-agents/sample_assets/ and 02-agents/resources/ since active samples reference them. * fix: address PR review comments, centralize resources, remove root duplicates - Fix type annotation in 04_memory.py (string union -> proper types) - Fix old sample paths in observability files - Fix grammar/spelling in observability samples - Move sample_assets/ and resources/ to shared/ folder - Remove 8 duplicate observability files from 02-agents root - Update resource path references in multimodal_input and provider samples * fix: update broken links from old getting_started paths to new structure - Update relative paths in READMEs: getting_started/ → 01-get-started/, 02-agents/, 03-workflows/, 04-hosting/, 05-end-to-end/ - Fix absolute GitHub URLs in package READMEs - Fix broken link in ollama package README * fix: convert absolute GitHub URLs to relative paths for link checker Absolute URLs to python/samples/ on main branch 404 until PR merges. Converted to relative paths that linkspector can verify locally. * fix: update link for handoff sample moved to orchestrations/ * fix: update chatkit-integration README path from demos/ to 05-end-to-end/ * fix: update broken links in orchestrations README to match flat directory structure
8.2 KiB
8.2 KiB
OpenAI Agent Framework Examples
This folder contains examples demonstrating different ways to create and use agents with the OpenAI clients from the agent_framework.openai package.
Examples
| File | Description |
|---|---|
openai_assistants_basic.py |
Basic usage of OpenAIAssistantProvider with streaming and non-streaming responses. |
openai_assistants_provider_methods.py |
Demonstrates all OpenAIAssistantProvider methods: create_agent(), get_agent(), and as_agent(). |
openai_assistants_with_code_interpreter.py |
Using OpenAIAssistantsClient.get_code_interpreter_tool() with OpenAIAssistantProvider to execute Python code. |
openai_assistants_with_existing_assistant.py |
Working with pre-existing assistants using get_agent() and as_agent() methods. |
openai_assistants_with_explicit_settings.py |
Configuring OpenAIAssistantProvider with explicit settings including API key and model ID. |
openai_assistants_with_file_search.py |
Using OpenAIAssistantsClient.get_file_search_tool() with OpenAIAssistantProvider for file search capabilities. |
openai_assistants_with_function_tools.py |
Function tools with OpenAIAssistantProvider at both agent-level and query-level. |
openai_assistants_with_response_format.py |
Structured outputs with OpenAIAssistantProvider using Pydantic models. |
openai_assistants_with_thread.py |
Thread management with OpenAIAssistantProvider for conversation context persistence. |
openai_chat_client_basic.py |
The simplest way to create an agent using Agent with OpenAIChatClient. Shows both streaming and non-streaming responses for chat-based interactions with OpenAI models. |
openai_chat_client_with_explicit_settings.py |
Shows how to initialize an agent with a specific chat client, configuring settings explicitly including API key and model ID. |
openai_chat_client_with_function_tools.py |
Demonstrates how to use function tools with agents. Shows both agent-level tools (defined when creating the agent) and query-level tools (provided with specific queries). |
openai_chat_client_with_local_mcp.py |
Shows how to integrate OpenAI agents with local Model Context Protocol (MCP) servers for enhanced functionality and tool integration. |
openai_chat_client_with_thread.py |
Demonstrates thread management with OpenAI agents, including automatic thread creation for stateless conversations and explicit thread management for maintaining conversation context across multiple interactions. |
openai_chat_client_with_web_search.py |
Shows how to use OpenAIChatClient.get_web_search_tool() for web search capabilities with OpenAI agents. |
openai_chat_client_with_runtime_json_schema.py |
Shows how to supply a runtime JSON Schema via additional_chat_options for structured output without defining a Pydantic model. |
openai_responses_client_basic.py |
The simplest way to create an agent using Agent with OpenAIResponsesClient. Shows both streaming and non-streaming responses for structured response generation with OpenAI models. |
openai_responses_client_image_analysis.py |
Demonstrates how to use vision capabilities with agents to analyze images. |
openai_responses_client_image_generation.py |
Demonstrates how to use OpenAIResponsesClient.get_image_generation_tool() to create images based on text descriptions. |
openai_responses_client_reasoning.py |
Demonstrates how to use reasoning capabilities with OpenAI agents, showing how the agent can provide detailed reasoning for its responses. |
openai_responses_client_streaming_image_generation.py |
Demonstrates streaming image generation with partial images for real-time image creation feedback and improved user experience. |
openai_responses_client_with_agent_as_tool.py |
Shows how to use the agent-as-tool pattern with OpenAI Responses Client, where one agent delegates work to specialized sub-agents wrapped as tools using as_tool(). Demonstrates hierarchical agent architectures. |
openai_responses_client_with_code_interpreter.py |
Shows how to use OpenAIResponsesClient.get_code_interpreter_tool() to write and execute Python code. |
openai_responses_client_with_code_interpreter_files.py |
Shows how to use code interpreter with uploaded files for data analysis. |
openai_responses_client_with_explicit_settings.py |
Shows how to initialize an agent with a specific responses client, configuring settings explicitly including API key and model ID. |
openai_responses_client_with_file_search.py |
Demonstrates how to use OpenAIResponsesClient.get_file_search_tool() for searching through uploaded files. |
openai_responses_client_with_function_tools.py |
Demonstrates how to use function tools with agents. Shows both agent-level tools (defined when creating the agent) and run-level tools (provided with specific queries). |
openai_responses_client_with_hosted_mcp.py |
Shows how to use OpenAIResponsesClient.get_mcp_tool() for hosted MCP servers, including approval workflows. |
openai_responses_client_with_local_mcp.py |
Shows how to integrate OpenAI agents with local Model Context Protocol (MCP) servers for enhanced functionality and tool integration. |
openai_responses_client_with_runtime_json_schema.py |
Shows how to supply a runtime JSON Schema via additional_chat_options for structured output without defining a Pydantic model. |
openai_responses_client_with_structured_output.py |
Demonstrates how to use structured outputs with OpenAI agents to get structured data responses in predefined formats. |
openai_responses_client_with_thread.py |
Demonstrates thread management with OpenAI agents, including automatic thread creation for stateless conversations and explicit thread management for maintaining conversation context across multiple interactions. |
openai_responses_client_with_web_search.py |
Shows how to use OpenAIResponsesClient.get_web_search_tool() for web search capabilities. |
Environment Variables
Make sure to set the following environment variables before running the examples:
OPENAI_API_KEY: Your OpenAI API keyOPENAI_CHAT_MODEL_ID: The OpenAI model to use (e.g.,gpt-4o,gpt-4o-mini,gpt-3.5-turbo)OPENAI_RESPONSES_MODEL_ID: The OpenAI model to use (e.g.,gpt-4o,gpt-4o-mini,gpt-3.5-turbo)- For image processing examples, use a vision-capable model like
gpt-4oorgpt-4o-mini
Optionally, you can set:
OPENAI_ORG_ID: Your OpenAI organization ID (if applicable)OPENAI_API_BASE_URL: Your OpenAI base URL (if using a different base URL)
Optional Dependencies
Some examples require additional dependencies:
- Image Generation Example: The
openai_responses_client_image_generation.pyexample requires PIL (Pillow) for image display. Install with:# Using uv uv add pillow # Or using pip pip install pillow