Python: Fix sample bugs: incorrect API params, wrong client types, and invalid options (#4983)

* Fix sample bugs: incorrect API params, wrong client types, and invalid options

- typed_options.py: Fix AnthropicClient model->model_id, wrap raw strings in Message objects for get_response(), fix reasoning_effort->reasoning dict, fix budget_tokens minimum (1024), use OpenAIChatClient not FoundryChatClient, remove unused import

- client_reasoning.py: Fix deprecated model_id to model param

- client_with_hosted_mcp.py: Remove invalid store=True kwarg from Agent.run()

- code_defined_skill.py: Fix precision kwarg to use function_invocation_kwargs

- Various other samples: Fix deprecated API usage and incorrect params

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address PR review comments

- client_with_hosted_mcp.py: Fix remaining store=True kwarg on line 68 to use options dict

- client_with_session.py: Change store=True to store=False to match in-memory persistence demo intent

- typed_options.py: Remove non-existent import and model key from docstring example

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* new sample fixes

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Giles Odigwe
2026-03-31 09:58:51 -07:00
committed by GitHub
Unverified
parent 3d09337446
commit 7c2dae8855
13 changed files with 34 additions and 41 deletions
@@ -4,7 +4,7 @@ import asyncio
from collections.abc import Awaitable, Callable
from agent_framework import Agent, AgentContext, AgentSession, FunctionInvocationContext, tool
from agent_framework.openai import OpenAIResponsesClient
from agent_framework.openai import OpenAIChatClient
from dotenv import load_dotenv
load_dotenv()
@@ -63,7 +63,7 @@ def recall_findings(ctx: FunctionInvocationContext) -> str:
async def main() -> None:
print("=== Agent-as-Tool: Session Propagation ===\n")
client = OpenAIResponsesClient()
client = OpenAIChatClient()
research_agent = Agent(
client=client,
@@ -4,7 +4,7 @@ import asyncio
from typing import Annotated
from agent_framework import Agent, tool
from agent_framework.openai import OpenAIResponsesClient
from agent_framework.openai import OpenAIChatClient
from dotenv import load_dotenv
# Load environment variables from .env file
@@ -81,7 +81,7 @@ async def scenario_max_iterations():
print("Scenario 1: max_iterations — limit LLM roundtrips")
print("=" * 60)
client = OpenAIResponsesClient()
client = OpenAIChatClient()
# 1. Set max_iterations to 3 — the tool loop will run at most 3 roundtrips
# to the model before forcing a text response.
@@ -116,7 +116,7 @@ async def scenario_max_function_calls():
print("Scenario 2: max_function_calls — limit total tool executions")
print("=" * 60)
client = OpenAIResponsesClient()
client = OpenAIChatClient()
# 1. Allow many iterations but cap total function calls to 4.
# If the model requests 3 parallel searches per iteration, after 2
@@ -158,7 +158,7 @@ async def scenario_max_invocations():
print("=" * 60)
agent = Agent(
client=OpenAIResponsesClient(),
client=OpenAIChatClient(),
name="APIAgent",
instructions="Use call_expensive_api when asked to analyze something.",
tools=[call_expensive_api],
@@ -214,7 +214,7 @@ async def scenario_per_agent_tool_limits():
agent_a_lookup = tool(name="lookup", approval_mode="never_require", max_invocations=2)(_do_lookup)
agent_b_lookup = tool(name="lookup", approval_mode="never_require", max_invocations=5)(_do_lookup)
client = OpenAIResponsesClient()
client = OpenAIChatClient()
agent_a = Agent(
client=client,
name="AgentA",
@@ -259,7 +259,7 @@ async def scenario_combined():
print("Scenario 5: Combined — all mechanisms together")
print("=" * 60)
client = OpenAIResponsesClient()
client = OpenAIChatClient()
# 1. Configure the client with both iteration and function call limits.
client.function_invocation_configuration["max_iterations"] = 5 # max 5 LLM roundtrips
@@ -4,7 +4,7 @@ import asyncio
from typing import Annotated
from agent_framework import Agent, tool
from agent_framework.openai import OpenAIResponsesClient
from agent_framework.openai import OpenAIChatClient
from dotenv import load_dotenv
# Load environment variables from .env file
@@ -46,7 +46,7 @@ def safe_divide(
async def main():
# tools = Tools()
agent = Agent(
client=OpenAIResponsesClient(),
client=OpenAIChatClient(),
name="ToolAgent",
instructions="Use the provided tools.",
tools=[greet, safe_divide],
@@ -5,7 +5,7 @@ from random import randrange
from typing import TYPE_CHECKING, Annotated, Any
from agent_framework import Agent, AgentResponse, Message, tool
from agent_framework.openai import OpenAIResponsesClient
from agent_framework.openai import OpenAIChatClient
from dotenv import load_dotenv
if TYPE_CHECKING:
@@ -134,7 +134,7 @@ async def run_weather_agent_with_approval(stream: bool) -> None:
print(f"\n=== Weather Agent with Approval Required ({'Streaming' if stream else 'Non-Streaming'}) ===\n")
async with Agent(
client=OpenAIResponsesClient(),
client=OpenAIChatClient(),
name="WeatherAgent",
instructions=("You are a helpful weather assistant. Use the get_weather tool to provide weather information."),
tools=[get_weather, get_weather_detail],