Files
agent-framework/python/samples/getting_started/agents/azure_ai
T
Eduard van Valkenburg 838a7fd61d Python: [BREAKING] Types API Review improvements (#3647)
* Replace Role and FinishReason classes with NewType + Literal

- Remove EnumLike metaclass from _types.py
- Replace Role class with NewType('Role', str) + RoleLiteral
- Replace FinishReason class with NewType('FinishReason', str) + FinishReasonLiteral
- Update all usages across codebase to use string literals
- Remove .value access patterns (direct string comparison now works)
- Add backward compatibility for legacy dict serialization format
- Update tests to reflect new string-based types

Addresses #3591, #3615

* Simplify ChatResponse and AgentResponse type hints (#3592)

- Remove overloads from ChatResponse.__init__
- Remove text parameter from ChatResponse.__init__
- Remove | dict[str, Any] from finish_reason and usage_details params
- Remove **kwargs from AgentResponse.__init__
- Both now accept ChatMessage | Sequence[ChatMessage] | None for messages
- Update docstrings and examples to reflect changes
- Fix tests that were using removed kwargs
- Fix Role type hint usage in ag-ui utils

* Remove text parameter from ChatResponseUpdate and AgentResponseUpdate (#3597)

- Remove text parameter from ChatResponseUpdate.__init__
- Remove text parameter from AgentResponseUpdate.__init__
- Remove **kwargs from both update classes
- Simplify contents parameter type to Sequence[Content] | None
- Update all usages to use contents=[Content.from_text(...)] pattern
- Fix imports in test files
- Update docstrings and examples

* Rename from_chat_response_updates to from_updates (#3593)

- ChatResponse.from_chat_response_updates โ†’ ChatResponse.from_updates
- ChatResponse.from_chat_response_generator โ†’ ChatResponse.from_update_generator
- AgentResponse.from_agent_run_response_updates โ†’ AgentResponse.from_updates

* Remove try_parse_value method from ChatResponse and AgentResponse (#3595)

- Remove try_parse_value method from ChatResponse
- Remove try_parse_value method from AgentResponse
- Remove try_parse_value calls from from_updates and from_update_generator methods
- Update samples to use try/except with response.value instead
- Update tests to use response.value pattern
- Users should now use response.value with try/except for safe parsing

* Add agent_id to AgentResponse and clarify author_name documentation (#3596)

- Add agent_id parameter to AgentResponse class
- Document that author_name is on ChatMessage objects, not responses
- Update ChatResponse docstring with author_name note
- Update AgentResponse docstring with author_name note

* Simplify ChatMessage.__init__ signature (#3618)

- Make contents a positional argument accepting Sequence[Content | str]
- Auto-convert strings in contents to TextContent
- Remove overloads, keep text kwarg for backward compatibility with serialization
- Update _parse_content_list to handle string items
- Update all usages across codebase to use new format: ChatMessage("role", ["text"])

* Allow Content as input on run and get_response

- Update prepare_messages and normalize_messages to accept Content
- Update type signatures in _agents.py and _clients.py
- Add tests for Content input handling

* Fix ChatMessage usage across packages and samples

Update all remaining ChatMessage(role=..., text=...) to use new
ChatMessage('role', ['text']) signature.

* Fix Role string usage and response format parsing

- Fix redis provider: remove .value access on string literals
- Fix durabletask ensure_response_format: set _response_format before accessing .value

* Fix ollama .value and ai_model_id issues, handle None in content list

- Fix ollama _chat_client: remove .value on string literals
- Fix ollama _chat_client: rename ai_model_id to model_id
- Fix _parse_content_list: skip None values gracefully

* Fix A2AAgent type signature to include Content

* Fix Role/FinishReason NewType dict annotations and improve test coverage to 95%

* Fix mypy errors for Role/FinishReason NewType usage

* Fix Role.TOOL and Role.ASSISTANT usage in _orchestrator_helpers.py

* Fix Role NewType usage in durabletask _models.py
838a7fd61d ยท 2026-02-04 10:13:23 +00:00
History
..

Azure AI Agent Examples

This folder contains examples demonstrating different ways to create and use agents with the Azure AI client from the agent_framework.azure package. These examples use the AzureAIClient with the azure-ai-projects 2.x (V2) API surface (see changelog). For V1 (azure-ai-agents 1.x) samples using AzureAIAgentClient, see the Azure AI V1 examples folder.

Examples

File Description
azure_ai_basic.py The simplest way to create an agent using AzureAIProjectAgentProvider. Demonstrates both streaming and non-streaming responses with function tools. Shows automatic agent creation and basic weather functionality.
azure_ai_provider_methods.py Comprehensive guide to AzureAIProjectAgentProvider methods: create_agent() for creating new agents, get_agent() for retrieving existing agents (by name, reference, or details), and as_agent() for wrapping SDK objects without HTTP calls.
azure_ai_use_latest_version.py Demonstrates how to reuse the latest version of an existing agent instead of creating a new agent version on each instantiation by using provider.get_agent() to retrieve the latest version.
azure_ai_with_agent_as_tool.py Shows how to use the agent-as-tool pattern with Azure AI agents, where one agent delegates work to specialized sub-agents wrapped as tools using as_tool(). Demonstrates hierarchical agent architectures.
azure_ai_with_agent_to_agent.py Shows how to use Agent-to-Agent (A2A) capabilities with Azure AI agents to enable communication with other agents using the A2A protocol. Requires an A2A connection configured in your Azure AI project.
azure_ai_with_azure_ai_search.py Shows how to use Azure AI Search with Azure AI agents to search through indexed data and answer user questions with proper citations. Requires an Azure AI Search connection and index configured in your Azure AI project.
azure_ai_with_bing_grounding.py Shows how to use Bing Grounding search with Azure AI agents to search the web for current information and provide grounded responses with citations. Requires a Bing connection configured in your Azure AI project.
azure_ai_with_bing_custom_search.py Shows how to use Bing Custom Search with Azure AI agents to search custom search instances and provide responses with relevant results. Requires a Bing Custom Search connection and instance configured in your Azure AI project.
azure_ai_with_browser_automation.py Shows how to use Browser Automation with Azure AI agents to perform automated web browsing tasks and provide responses based on web interactions. Requires a Browser Automation connection configured in your Azure AI project.
azure_ai_with_code_interpreter.py Shows how to use the HostedCodeInterpreterTool with Azure AI agents to write and execute Python code for mathematical problem solving and data analysis.
azure_ai_with_code_interpreter_file_generation.py Shows how to retrieve file IDs from code interpreter generated files using both streaming and non-streaming approaches.
azure_ai_with_code_interpreter_file_download.py Shows how to download files generated by code interpreter using the OpenAI containers API.
azure_ai_with_content_filtering.py Shows how to enable content filtering (RAI policy) on Azure AI agents using RaiConfig. Requires creating an RAI policy in Azure AI Foundry portal first.
azure_ai_with_existing_agent.py Shows how to work with a pre-existing agent by providing the agent name and version to the Azure AI client. Demonstrates agent reuse patterns for production scenarios.
azure_ai_with_existing_conversation.py Demonstrates how to use an existing conversation created on the service side with Azure AI agents. Shows two approaches: specifying conversation ID at the client level and using AgentThread with an existing conversation ID.
azure_ai_with_application_endpoint.py Demonstrates calling the Azure AI application-scoped endpoint.
azure_ai_with_explicit_settings.py Shows how to create an agent with explicitly configured AzureAIClient settings, including project endpoint, model deployment, and credentials rather than relying on environment variable defaults.
azure_ai_with_file_search.py Shows how to use the HostedFileSearchTool with Azure AI agents to upload files, create vector stores, and enable agents to search through uploaded documents to answer user questions.
azure_ai_with_hosted_mcp.py Shows how to integrate hosted Model Context Protocol (MCP) tools with Azure AI Agent.
azure_ai_with_local_mcp.py Shows how to integrate local Model Context Protocol (MCP) tools with Azure AI agents.
azure_ai_with_response_format.py Shows how to use structured outputs (response format) with Azure AI agents using Pydantic models to enforce specific response schemas.
azure_ai_with_runtime_json_schema.py Shows how to use structured outputs (response format) with Azure AI agents using a JSON schema to enforce specific response schemas.
azure_ai_with_search_context_agentic.py Shows how to use AzureAISearchContextProvider with agentic mode. Uses Knowledge Bases for multi-hop reasoning across documents with query planning. Recommended for most scenarios - slightly slower with more token consumption for query planning, but more accurate results.
azure_ai_with_search_context_semantic.py Shows how to use AzureAISearchContextProvider with semantic mode. Fast hybrid search with vector + keyword search and semantic ranking for RAG. Best for simple queries where speed is critical.
azure_ai_with_sharepoint.py Shows how to use SharePoint grounding with Azure AI agents to search through SharePoint content and answer user questions with proper citations. Requires a SharePoint connection configured in your Azure AI project.
azure_ai_with_thread.py Demonstrates thread management with Azure AI agents, including automatic thread creation for stateless conversations and explicit thread management for maintaining conversation context across multiple interactions.
azure_ai_with_image_generation.py Shows how to use the ImageGenTool with Azure AI agents to generate images based on text prompts.
azure_ai_with_memory_search.py Shows how to use memory search functionality with Azure AI agents for conversation persistence. Demonstrates creating memory stores and enabling agents to search through conversation history.
azure_ai_with_microsoft_fabric.py Shows how to use Microsoft Fabric with Azure AI agents to query Fabric data sources and provide responses based on data analysis. Requires a Microsoft Fabric connection configured in your Azure AI project.
azure_ai_with_openapi.py Shows how to integrate OpenAPI specifications with Azure AI agents using dictionary-based tool configuration. Demonstrates using external REST APIs for dynamic data lookup.
azure_ai_with_reasoning.py Shows how to enable reasoning for a model that supports it.
azure_ai_with_web_search.py Shows how to use the HostedWebSearchTool with Azure AI agents to perform web searches and retrieve up-to-date information from the internet.

Environment Variables

Before running the examples, you need to set up your environment variables. You can do this in one of two ways:

  1. Copy the .env.example file from the python directory to create a .env file:

    cp ../../../../.env.example ../../../../.env
    
  2. Edit the .env file and add your values:

    AZURE_AI_PROJECT_ENDPOINT="your-project-endpoint"
    AZURE_AI_MODEL_DEPLOYMENT_NAME="your-model-deployment-name"
    

Option 2: Using environment variables directly

Set the environment variables in your shell:

export AZURE_AI_PROJECT_ENDPOINT="your-project-endpoint"
export AZURE_AI_MODEL_DEPLOYMENT_NAME="your-model-deployment-name"

Required Variables

  • AZURE_AI_PROJECT_ENDPOINT: Your Azure AI project endpoint (required for all examples)
  • AZURE_AI_MODEL_DEPLOYMENT_NAME: The name of your model deployment (required for all examples)

Authentication

All examples use AzureCliCredential for authentication by default. Before running the examples:

  1. Install the Azure CLI
  2. Run az login to authenticate with your Azure account
  3. Ensure you have appropriate permissions to the Azure AI project

Alternatively, you can replace AzureCliCredential with other authentication options like DefaultAzureCredential or environment-based credentials.

Running the Examples

Each example can be run independently. Navigate to this directory and run any example:

python azure_ai_basic.py
python azure_ai_with_code_interpreter.py
# ... etc

The examples demonstrate various patterns for working with Azure AI agents, from basic usage to advanced scenarios like thread management and structured outputs.