diff --git a/python/samples/02-agents/providers/anthropic/anthropic_advanced.py b/python/samples/02-agents/providers/anthropic/anthropic_advanced.py index b9647f104e..fde25647ca 100644 --- a/python/samples/02-agents/providers/anthropic/anthropic_advanced.py +++ b/python/samples/02-agents/providers/anthropic/anthropic_advanced.py @@ -20,7 +20,7 @@ This sample demonstrates using Anthropic with: async def main() -> None: """Example of streaming response (get results as they are generated).""" - client = AnthropicClient[AnthropicChatOptions]() + client = AnthropicClient[AnthropicChatOptions](model_id="claude-sonnet-4-5-20250929") # Create MCP tool configuration using instance method mcp_tool = client.get_mcp_tool( diff --git a/python/samples/02-agents/providers/azure/openai_client_with_session.py b/python/samples/02-agents/providers/azure/openai_client_with_session.py index ad1c87f2d2..4aceecb5ab 100644 --- a/python/samples/02-agents/providers/azure/openai_client_with_session.py +++ b/python/samples/02-agents/providers/azure/openai_client_with_session.py @@ -4,7 +4,7 @@ import asyncio from random import randint from typing import Annotated -from agent_framework import Agent, AgentSession, tool +from agent_framework import Agent, AgentSession, ChatOptions, tool from agent_framework.openai import OpenAIChatClient from azure.identity import AzureCliCredential from dotenv import load_dotenv @@ -76,19 +76,19 @@ async def example_with_session_persistence_in_memory() -> None: # First conversation query1 = "What's the weather like in Tokyo?" print(f"User: {query1}") - result1 = await agent.run(query1, session=session, store=False) + result1 = await agent.run(query1, session=session, options=ChatOptions(store=False)) print(f"Agent: {result1.text}") # Second conversation using the same session - maintains context query2 = "How about London?" print(f"\nUser: {query2}") - result2 = await agent.run(query2, session=session, store=False) + result2 = await agent.run(query2, session=session, options=ChatOptions(store=False)) print(f"Agent: {result2.text}") # Third conversation - agent should remember both previous cities query3 = "Which of the cities I asked about has better weather?" print(f"\nUser: {query3}") - result3 = await agent.run(query3, session=session, store=False) + result3 = await agent.run(query3, session=session, options=ChatOptions(store=False)) print(f"Agent: {result3.text}") print("Note: The agent remembers context from previous messages in the same session.\n") diff --git a/python/samples/02-agents/providers/foundry/foundry_agent_basic.py b/python/samples/02-agents/providers/foundry/foundry_agent_basic.py index 4c896e6803..e88ccbd7a0 100644 --- a/python/samples/02-agents/providers/foundry/foundry_agent_basic.py +++ b/python/samples/02-agents/providers/foundry/foundry_agent_basic.py @@ -1,10 +1,14 @@ # Copyright (c) Microsoft. All rights reserved. import asyncio +import os from agent_framework.foundry import FoundryAgent from azure.identity import AzureCliCredential +from dotenv import load_dotenv +# Load environment variables from .env file +load_dotenv() """ Foundry Agent — Connect to a pre-configured agent in Microsoft Foundry @@ -21,9 +25,9 @@ Environment variables: async def main() -> None: agent = FoundryAgent( - project_endpoint="https://your-project.services.ai.azure.com", - agent_name="my-prompt-agent", - agent_version="1.0", + project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], + agent_name=os.environ["FOUNDRY_AGENT_NAME"], + agent_version=os.environ["FOUNDRY_AGENT_VERSION"], credential=AzureCliCredential(), ) diff --git a/python/samples/02-agents/providers/foundry/foundry_agent_custom_client.py b/python/samples/02-agents/providers/foundry/foundry_agent_custom_client.py index 6ab3e44ee2..b274adb789 100644 --- a/python/samples/02-agents/providers/foundry/foundry_agent_custom_client.py +++ b/python/samples/02-agents/providers/foundry/foundry_agent_custom_client.py @@ -1,10 +1,15 @@ # Copyright (c) Microsoft. All rights reserved. import asyncio +import os from agent_framework import Agent from agent_framework.foundry import FoundryAgent, RawFoundryAgentChatClient from azure.identity import AzureCliCredential +from dotenv import load_dotenv + +# Load environment variables from .env file +load_dotenv() """ Foundry Agent — Custom client configuration @@ -25,9 +30,9 @@ Environment variables: async def main() -> None: # Option 1: Default — full middleware on both agent and client agent = FoundryAgent( - project_endpoint="https://your-project.services.ai.azure.com", - agent_name="my-agent", - agent_version="1.0", + project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], + agent_name=os.environ["FOUNDRY_AGENT_NAME"], + agent_version=os.environ["FOUNDRY_AGENT_VERSION"], credential=AzureCliCredential(), ) result = await agent.run("Hello from the default setup!") @@ -35,9 +40,9 @@ async def main() -> None: # Option 2: Raw client — no client-level middleware (agent middleware still active) agent_raw_client = FoundryAgent( - project_endpoint="https://your-project.services.ai.azure.com", - agent_name="my-agent", - agent_version="1.0", + project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], + agent_name=os.environ["FOUNDRY_AGENT_NAME"], + agent_version=os.environ["FOUNDRY_AGENT_VERSION"], credential=AzureCliCredential(), client_type=RawFoundryAgentChatClient, ) @@ -47,9 +52,9 @@ async def main() -> None: # Option 3: Composition — use Agent(client=...) directly # this will not run the checks that the `FoundryAgent` does on things like tools. client = RawFoundryAgentChatClient( - project_endpoint="https://your-project.services.ai.azure.com", - agent_name="my-agent", - agent_version="1.0", + project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], + agent_name=os.environ["FOUNDRY_AGENT_NAME"], + agent_version=os.environ["FOUNDRY_AGENT_VERSION"], credential=AzureCliCredential(), ) agent_composed = Agent(client=client) diff --git a/python/samples/02-agents/providers/foundry/foundry_agent_hosted.py b/python/samples/02-agents/providers/foundry/foundry_agent_hosted.py index 188e374af9..0dd5f89abd 100644 --- a/python/samples/02-agents/providers/foundry/foundry_agent_hosted.py +++ b/python/samples/02-agents/providers/foundry/foundry_agent_hosted.py @@ -1,9 +1,14 @@ # Copyright (c) Microsoft. All rights reserved. import asyncio +import os from agent_framework.foundry import FoundryAgent from azure.identity import AzureCliCredential +from dotenv import load_dotenv + +# Load environment variables from .env file +load_dotenv() """ Foundry Agent — Connect to a HostedAgent (no version needed) @@ -20,8 +25,8 @@ Environment variables: async def main() -> None: # HostedAgents don't need agent_version agent = FoundryAgent( - project_endpoint="https://your-project.services.ai.azure.com", - agent_name="my-hosted-agent", + project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], + agent_name=os.environ["FOUNDRY_AGENT_NAME"], credential=AzureCliCredential(), ) diff --git a/python/samples/02-agents/providers/foundry/foundry_agent_with_env_vars.py b/python/samples/02-agents/providers/foundry/foundry_agent_with_env_vars.py index 4b64025de4..dad4df6471 100644 --- a/python/samples/02-agents/providers/foundry/foundry_agent_with_env_vars.py +++ b/python/samples/02-agents/providers/foundry/foundry_agent_with_env_vars.py @@ -5,7 +5,10 @@ import os from agent_framework.foundry import FoundryAgent from azure.identity import AzureCliCredential +from dotenv import load_dotenv +# Load environment variables from .env file +load_dotenv() """ Foundry Agent with Environment Variables @@ -23,7 +26,7 @@ async def main() -> None: agent = FoundryAgent( project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], agent_name=os.environ["FOUNDRY_AGENT_NAME"], - agent_version=os.environ.get("FOUNDRY_AGENT_VERSION"), + agent_version=os.environ["FOUNDRY_AGENT_VERSION"], credential=AzureCliCredential(), ) diff --git a/python/samples/02-agents/providers/foundry/foundry_agent_with_function_tools.py b/python/samples/02-agents/providers/foundry/foundry_agent_with_function_tools.py index 29277d563f..3a1b1a19e9 100644 --- a/python/samples/02-agents/providers/foundry/foundry_agent_with_function_tools.py +++ b/python/samples/02-agents/providers/foundry/foundry_agent_with_function_tools.py @@ -1,13 +1,18 @@ # Copyright (c) Microsoft. All rights reserved. import asyncio +import os from typing import Annotated from agent_framework import tool from agent_framework.foundry import FoundryAgent from azure.identity import AzureCliCredential +from dotenv import load_dotenv from pydantic import Field +# Load environment variables from .env file +load_dotenv() + """ Foundry Agent with Local Function Tools @@ -35,9 +40,9 @@ def get_weather( async def main() -> None: agent = FoundryAgent( - project_endpoint="https://your-project.services.ai.azure.com", - agent_name="my-weather-agent", - agent_version="1.0", + project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"], + agent_name=os.environ["FOUNDRY_AGENT_NAME"], + agent_version=os.environ["FOUNDRY_AGENT_VERSION"], credential=AzureCliCredential(), tools=[get_weather], ) diff --git a/python/samples/02-agents/providers/foundry/foundry_chat_client_code_interpreter_files.py b/python/samples/02-agents/providers/foundry/foundry_chat_client_code_interpreter_files.py index 1e156da17c..ff8cf453ab 100644 --- a/python/samples/02-agents/providers/foundry/foundry_chat_client_code_interpreter_files.py +++ b/python/samples/02-agents/providers/foundry/foundry_chat_client_code_interpreter_files.py @@ -8,7 +8,7 @@ from agent_framework import Agent from agent_framework.foundry import FoundryChatClient from azure.identity import AzureCliCredential from dotenv import load_dotenv -from openai import AsyncAzureOpenAI +from openai import AsyncOpenAI # Load environment variables from .env file load_dotenv() @@ -23,7 +23,7 @@ for Python code execution and data analysis with uploaded files. # Helper functions -async def create_sample_file_and_upload(openai_client: AsyncAzureOpenAI) -> tuple[str, str]: +async def create_sample_file_and_upload(openai_client: AsyncOpenAI) -> tuple[str, str]: """Create a sample CSV file and upload it for Foundry code interpreter use.""" csv_data = """name,department,salary,years_experience Alice Johnson,Engineering,95000,5 @@ -51,7 +51,7 @@ Frank Wilson,Engineering,88000,6 return temp_file_path, uploaded_file.id -async def cleanup_files(openai_client: AsyncAzureOpenAI, temp_file_path: str, file_id: str) -> None: +async def cleanup_files(openai_client: AsyncOpenAI, temp_file_path: str, file_id: str) -> None: """Clean up both local temporary file and uploaded file.""" # Clean up: delete the uploaded file await openai_client.files.delete(file_id) @@ -67,21 +67,14 @@ async def main() -> None: # Initialize the underlying OpenAI client for file operations credential = AzureCliCredential() + project_endpoint = os.environ.get("FOUNDRY_PROJECT_ENDPOINT") - async def get_token(): - token = credential.get_token("https://cognitiveservices.azure.com/.default") - return token.token - - openai_client = AsyncAzureOpenAI( - azure_ad_token_provider=get_token, - api_version="2024-05-01-preview", - ) + # Create FoundryChatClient first, then reuse its project client for file operations + client = FoundryChatClient(credential=credential, project_endpoint=project_endpoint) + openai_client = client.project_client.get_openai_client() temp_file_path, file_id = await create_sample_file_and_upload(openai_client) - # Create agent using FoundryChatClient - client = FoundryChatClient(credential=credential) - # Create code interpreter tool with file access code_interpreter_tool = client.get_code_interpreter_tool(file_ids=[file_id])