Agents
ToolsToFinalOutputFunctionmodule-attribute
ToolsToFinalOutputFunction:TypeAlias=Callable[[RunContextWrapper[TContext],list[FunctionToolResult]],MaybeAwaitable[ToolsToFinalOutputResult],]A function that takes a run context and a list of tool results, and returns aToolsToFinalOutputResult.
ToolsToFinalOutputResultdataclass
Source code insrc/agents/agent.py
is_final_outputinstance-attribute
Whether this is the final output. If False, the LLM will run again and receive the tool calloutput.
AgentToolStreamEvent
Bases:TypedDict
Streaming event emitted when an agent is invoked as a tool.
Source code insrc/agents/agent.py
StopAtTools
Bases:TypedDict
Source code insrc/agents/agent.py
MCPConfig
Bases:TypedDict
Configuration for MCP servers.
Source code insrc/agents/agent.py
AgentBasedataclass
Bases:Generic[TContext]
Base class forAgent andRealtimeAgent.
Source code insrc/agents/agent.py
handoff_descriptionclass-attributeinstance-attribute
A description of the agent. This is used when the agent is used as a handoff, so that anLLM knows what it does and when to invoke it.
toolsclass-attributeinstance-attribute
tools:list[Tool]=field(default_factory=list)A list of tools that the agent can use.
mcp_serversclass-attributeinstance-attribute
mcp_servers:list[MCPServer]=field(default_factory=list)A list ofModel Context Protocol servers thatthe agent can use. Every time the agent runs, it will include tools from these servers in thelist of available tools.
NOTE: You are expected to manage the lifecycle of these servers. Specifically, you must callserver.connect() before passing it to the agent, andserver.cleanup() when the server is nolonger needed.
mcp_configclass-attributeinstance-attribute
Configuration for MCP servers.
get_mcp_toolsasync
get_mcp_tools(run_context:RunContextWrapper[TContext],)->list[Tool]Fetches the available tools from the MCP servers.
Source code insrc/agents/agent.py
get_all_toolsasync
get_all_tools(run_context:RunContextWrapper[TContext],)->list[Tool]All agent tools, including MCP tools and function tools.
Source code insrc/agents/agent.py
Agentdataclass
Bases:AgentBase,Generic[TContext]
An agent is an AI model configured with instructions, tools, guardrails, handoffs and more.
We strongly recommend passinginstructions, which is the "system prompt" for the agent. Inaddition, you can passhandoff_description, which is a human-readable description of theagent, used when the agent is used inside tools/handoffs.
Agents are generic on the context type. The context is a (mutable) object you create. It ispassed to tool functions, handoffs, guardrails, etc.
SeeAgentBase for base parameters that are shared withRealtimeAgents.
Source code insrc/agents/agent.py
155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573 | |
instructionsclass-attributeinstance-attribute
instructions:(str|Callable[[RunContextWrapper[TContext],Agent[TContext]],MaybeAwaitable[str],]|None)=NoneThe instructions for the agent. Will be used as the "system prompt" when this agent isinvoked. Describes what the agent should do, and how it responds.
Can either be a string, or a function that dynamically generates instructions for the agent. Ifyou provide a function, it will be called with the context and the agent instance. It mustreturn a string.
promptclass-attributeinstance-attribute
prompt:Prompt|DynamicPromptFunction|None=NoneA prompt object (or a function that returns a Prompt). Prompts allow you to dynamicallyconfigure the instructions, tools and other config for an agent outside of your code. Onlyusable with OpenAI models, using the Responses API.
handoffsclass-attributeinstance-attribute
Handoffs are sub-agents that the agent can delegate to. You can provide a list of handoffs,and the agent can choose to delegate to them if relevant. Allows for separation of concerns andmodularity.
modelclass-attributeinstance-attribute
model:str|Model|None=NoneThe model implementation to use when invoking the LLM.
By default, if not set, the agent will use the default model configured inagents.models.get_default_model() (currently "gpt-4.1").
model_settingsclass-attributeinstance-attribute
model_settings:ModelSettings=field(default_factory=get_default_model_settings)Configures model-specific tuning parameters (e.g. temperature, top_p).
input_guardrailsclass-attributeinstance-attribute
input_guardrails:list[InputGuardrail[TContext]]=field(default_factory=list)A list of checks that run in parallel to the agent's execution, before generating aresponse. Runs only if the agent is the first agent in the chain.
output_guardrailsclass-attributeinstance-attribute
output_guardrails:list[OutputGuardrail[TContext]]=field(default_factory=list)A list of checks that run on the final output of the agent, after generating a response.Runs only if the agent produces a final output.
output_typeclass-attributeinstance-attribute
output_type:type[Any]|AgentOutputSchemaBase|None=NoneThe type of the output object. If not provided, the output will bestr. In most cases,you should pass a regular Python type (e.g. a dataclass, Pydantic model, TypedDict, etc).You can customize this in two ways:1. If you want non-strict schemas, passAgentOutputSchema(MyClass, strict_json_schema=False).2. If you want to use a custom JSON schema (i.e. without using the SDK's automatic schema) creation, subclass and pass anAgentOutputSchemaBase subclass.
hooksclass-attributeinstance-attribute
hooks:AgentHooks[TContext]|None=NoneA class that receives callbacks on various lifecycle events for this agent.
tool_use_behaviorclass-attributeinstance-attribute
tool_use_behavior:(Literal["run_llm_again","stop_on_first_tool"]|StopAtTools|ToolsToFinalOutputFunction)="run_llm_again"This lets you configure how tool use is handled.- "run_llm_again": The default behavior. Tools are run, and then the LLM receives the results and gets to respond.- "stop_on_first_tool": The output from the first tool call is treated as the final result. In other words, it isn’t sent back to the LLM for further processing but is used directly as the final output.- A StopAtTools object: The agent will stop running if any of the tools listed instop_at_tool_names is called. The final output will be the output of the first matching tool call. The LLM does not process the result of the tool call.- A function: If you pass a function, it will be called with the run context and the list of tool results. It must return aToolsToFinalOutputResult, which determines whether the tool calls result in a final output.
NOTE: This configuration is specific to FunctionTools. Hosted tools, such as file search, web search, etc. are always processed by the LLM.
reset_tool_choiceclass-attributeinstance-attribute
Whether to reset the tool choice to the default value after a tool has been called. Defaultsto True. This ensures that the agent doesn't enter an infinite loop of tool usage.
handoff_descriptionclass-attributeinstance-attribute
A description of the agent. This is used when the agent is used as a handoff, so that anLLM knows what it does and when to invoke it.
toolsclass-attributeinstance-attribute
tools:list[Tool]=field(default_factory=list)A list of tools that the agent can use.
mcp_serversclass-attributeinstance-attribute
mcp_servers:list[MCPServer]=field(default_factory=list)A list ofModel Context Protocol servers thatthe agent can use. Every time the agent runs, it will include tools from these servers in thelist of available tools.
NOTE: You are expected to manage the lifecycle of these servers. Specifically, you must callserver.connect() before passing it to the agent, andserver.cleanup() when the server is nolonger needed.
mcp_configclass-attributeinstance-attribute
Configuration for MCP servers.
clone
clone(**kwargs:Any)->Agent[TContext]Make a copy of the agent, with the given arguments changed.Notes: - Usesdataclasses.replace, which performs ashallow copy. - Mutable attributes liketools andhandoffs are shallow-copied: new list objects are created only if overridden, but their contents (tool functions and handoff objects) are shared with the original. - To modify these independently, pass new lists when callingclone().Example:
Source code insrc/agents/agent.py
as_tool
as_tool(tool_name:str|None,tool_description:str|None,custom_output_extractor:Callable[[RunResult|RunResultStreaming],Awaitable[str]]|None=None,is_enabled:bool|Callable[[RunContextWrapper[Any],AgentBase[Any]],MaybeAwaitable[bool],]=True,on_stream:Callable[[AgentToolStreamEvent],MaybeAwaitable[None]]|None=None,run_config:RunConfig|None=None,max_turns:int|None=None,hooks:RunHooks[TContext]|None=None,previous_response_id:str|None=None,conversation_id:str|None=None,session:Session|None=None,failure_error_function:ToolErrorFunction|None=default_tool_error_function,)->ToolTransform this agent into a tool, callable by other agents.
This is different from handoffs in two ways:1. In handoffs, the new agent receives the conversation history. In this tool, the new agent receives generated input.2. In handoffs, the new agent takes over the conversation. In this tool, the new agent is called as a tool, and the conversation is continued by the original agent.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tool_name | str | None | The name of the tool. If not provided, the agent's name will be used. | required |
tool_description | str | None | The description of the tool, which should indicate what it does andwhen to use it. | required |
custom_output_extractor | Callable[[RunResult |RunResultStreaming],Awaitable[str]] | None | A function that extracts the output from the agent. If notprovided, the last message from the agent will be used. | None |
is_enabled | bool |Callable[[RunContextWrapper[Any],AgentBase[Any]],MaybeAwaitable[bool]] | Whether the tool is enabled. Can be a bool or a callable that takes the runcontext and agent and returns whether the tool is enabled. Disabled tools are hiddenfrom the LLM at runtime. | True |
on_stream | Callable[[AgentToolStreamEvent],MaybeAwaitable[None]] | None | Optional callback (sync or async) to receive streaming events from the nestedagent run. The callback receives an | None |
failure_error_function | ToolErrorFunction | None | If provided, generate an error message when the tool (agent) runfails. The message is sent to the LLM. If None, the exception is raised instead. | default_tool_error_function |
Source code insrc/agents/agent.py
405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538 | |
get_promptasync
get_prompt(run_context:RunContextWrapper[TContext],)->ResponsePromptParam|Noneget_mcp_toolsasync
get_mcp_tools(run_context:RunContextWrapper[TContext],)->list[Tool]Fetches the available tools from the MCP servers.
Source code insrc/agents/agent.py
get_all_toolsasync
get_all_tools(run_context:RunContextWrapper[TContext],)->list[Tool]All agent tools, including MCP tools and function tools.