OpenAI Agents SDK 中文文档 中文教程 (7)
Streaming events
StreamEvent 模块属性
代码语言:javascript代码运行次数:0运行复制StreamEvent: TypeAlias = Union[
RawResponsesStreamEvent,
RunItemStreamEvent,
AgentUpdatedStreamEvent,
]
来自代理的流式处理事件。
RawResponsesStreamEvent 数据类
来自 LLM 的流式处理事件。这些是 “原始” 事件,即它们直接传递 来自 LLM。
源码src/agents/stream_events.py
data instance-attribute
代码语言:javascript代码运行次数:0运行复制data: TResponseStreamEvent
来自 LLM 的原始响应流式处理事件。
类型 类-属性
实例-属性
代码语言:javascript代码运行次数:0运行复制type: Literal['raw_response_event'] = 'raw_response_event'
事件的类型。
RunItemStreamEvent 数据类
将 .当代理处理 LLM 响应时,它将 为新消息、工具调用、工具输出、切换等生成这些事件。RunItem
源码src/agents/stream_events.py
name 实例属性
代码语言:javascript代码运行次数:0运行复制name: Literal[
"message_output_created",
"handoff_requested",
"handoff_occured",
"tool_called",
"tool_output",
"reasoning_item_created",
]
事件的名称。
item 实例属性
代码语言:javascript代码运行次数:0运行复制item: RunItem
创建的项。
AgentUpdatedStreamEvent 数据类
通知有新代理正在运行的事件。
源码src/agents/stream_events.py
new_agent instance-attribute
代码语言:javascript代码运行次数:0运行复制new_agent: Agent[Any]
新代理。
Handoffs
HandoffInputFilter 模块属性
代码语言:javascript代码运行次数:0运行复制HandoffInputFilter: TypeAlias = Callable[
[HandoffInputData], HandoffInputData
]
过滤传递给下一个代理的输入数据的函数。
HandoffInputData 数据类
源码src/agents/handoffs.py
input_history instance-attribute
代码语言:javascript代码运行次数:0运行复制input_history: str | tuple[TResponseInputItem, ...]
调用之前的输入历史记录。Runner.run()
pre_handoff_items instance-attribute
代码语言:javascript代码运行次数:0运行复制pre_handoff_items: tuple[RunItem, ...]
在代理轮到调用切换的位置之前生成的项目。
new_items instance-attribute
代码语言:javascript代码运行次数:0运行复制new_items: tuple[RunItem, ...]
当前代理回合期间生成的新物品,包括触发 Handoff 和表示 Handoff 输出响应的工具输出消息。
Handoff 数据类
基地:Generic[TContext]
移交是指代理将任务委派给另一个代理。 例如,在客户支持方案中,您可能有一个“分类代理”,它确定 哪个代理应该处理用户的请求,以及专门从事不同 计费、帐户管理等领域。
源码src/agents/handoffs.py
tool_name instance-attribute
代码语言:javascript代码运行次数:0运行复制tool_name: str
表示移交的工具的名称。
tool_description instance-attribute
代码语言:javascript代码运行次数:0运行复制tool_description: str
表示移交的工具的描述。
input_json_schema instance-attribute
代码语言:javascript代码运行次数:0运行复制input_json_schema: dict[str, Any]
移交输入的 JSON 架构。如果 handoff 不接受输入,则可以为空。
on_invoke_handoff instance-attribute
代码语言:javascript代码运行次数:0运行复制on_invoke_handoff: Callable[
[RunContextWrapper[Any], str],
Awaitable[Agent[TContext]],
]
调用 handoff 的函数。传递的参数包括: 1. handoff 运行上下文 2. 来自 LLM 的参数,以 JSON 字符串形式。如果 input_json_schema 为空,则为空字符串。
必须返回代理。
agent_name instance-attribute
代码语言:javascript代码运行次数:0运行复制agent_name: str
要移交给的代理的名称。
input_filter 类属性
instance-attribute
代码语言:javascript代码运行次数:0运行复制input_filter: HandoffInputFilter | None = None
过滤传递给下一个代理的输入的函数。默认情况下,新的 代理可以看到整个对话历史记录。在某些情况下,您可能希望过滤输入,例如 以删除较旧的输入,或从现有输入中删除工具。
该函数将接收到目前为止的整个对话历史记录,包括输入项 触发 Handoff 和表示 Handoff 工具输出的 Tool Call 输出项。
您可以根据需要自由修改输入历史记录或新项目。下一个代理 运行将接收 。handoff_input_data.all_items
重要提示:在流式处理模式下,我们不会因为此功能而流式处理任何内容。这 之前生成的项目已经被流式传输。
strict_json_schema 类属性
instance-attribute
代码语言:javascript代码运行次数:0运行复制strict_json_schema: bool = True
输入 JSON 架构是否处于严格模式。我们强烈建议将此设置为 True,因为它增加了正确 JSON 输入的可能性。
切换
代码语言:javascript代码运行次数:0运行复制handoff(
agent: Agent[TContext],
*,
tool_name_override: str | None = None,
tool_description_override: str | None = None,
input_filter: Callable[
[HandoffInputData], HandoffInputData
]
| None = None,
) -> Handoff[TContext]
代码语言:javascript代码运行次数:0运行复制handoff(
agent: Agent[TContext],
*,
on_handoff: OnHandoffWithInput[THandoffInput],
input_type: type[THandoffInput],
tool_description_override: str | None = None,
tool_name_override: str | None = None,
input_filter: Callable[
[HandoffInputData], HandoffInputData
]
| None = None,
) -> Handoff[TContext]
代码语言:javascript代码运行次数:0运行复制handoff(
agent: Agent[TContext],
*,
on_handoff: OnHandoffWithoutInput,
tool_description_override: str | None = None,
tool_name_override: str | None = None,
input_filter: Callable[
[HandoffInputData], HandoffInputData
]
| None = None,
) -> Handoff[TContext]
代码语言:javascript代码运行次数:0运行复制handoff(
agent: Agent[TContext],
tool_name_override: str | None = None,
tool_description_override: str | None = None,
on_handoff: OnHandoffWithInput[THandoffInput]
| OnHandoffWithoutInput
| None = None,
input_type: type[THandoffInput] | None = None,
input_filter: Callable[
[HandoffInputData], HandoffInputData
]
| None = None,
) -> Handoff[TContext]
从代理创建移交。
参数:
名字 | 类型 | 描述 | 违约 |
---|---|---|---|
agent | Agent[TContext] | 要移交给的代理,或返回代理的函数。 | 必填 |
tool_name_override | str | None | 表示切换的工具名称的可选覆盖。 | None |
tool_description_override | str | None | 工具描述的可选 override 表示切换。 | None |
on_handoff | OnHandoffWithInput[THandoffInput] | OnHandoffWithoutInput | None | 在调用切换时运行的函数。 | None |
input_type | type[THandoffInput] | None | 移交的输入类型。如果提供,将验证输入 针对这种类型。仅当您传递的函数接受输入时才有意义。 | None |
input_filter | Callable[[HandoffInputData], HandoffInputData] | None | 一个函数,用于筛选传递给下一个代理的输入。 | None |
Lifecycle
RunHooks
基地:Generic[TContext]
一个类,用于接收代理运行中各种生命周期事件的回调。Subclass 和 覆盖您需要的方法。
on_agent_start 异步
代码语言:javascript代码运行次数:0运行复制on_agent_start(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
) -> None
在调用代理之前调用。每次当前代理更改时调用。
on_agent_end async
代码语言:javascript代码运行次数:0运行复制on_agent_end(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
output: Any,
) -> None
当代理生成最终输出时调用。
on_handoff async
代码语言:javascript代码运行次数:0运行复制on_handoff(
context: RunContextWrapper[TContext],
from_agent: Agent[TContext],
to_agent: Agent[TContext],
) -> None
发生切换时调用。
on_tool_start async
代码语言:javascript代码运行次数:0运行复制on_tool_start(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
tool: Tool,
) -> None
在调用工具之前调用。
on_tool_end async
代码语言:javascript代码运行次数:0运行复制on_tool_end(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
tool: Tool,
result: str,
) -> None
在调用工具后调用。
代理钩子
基地:Generic[TContext]
一个类,用于接收特定代理的各种生命周期事件的回调。您可以 将此项设置为“打开”以接收该特定代理的事件。agent.hooks
子类化并覆盖您需要的方法。
on_start async
代码语言:javascript代码运行次数:0运行复制on_start(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
) -> None
在调用代理之前调用。每次将正在运行的代理更改为此 代理。
on_end async
代码语言:javascript代码运行次数:0运行复制on_end(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
output: Any,
) -> None
当代理生成最终输出时调用。
on_handoff async
代码语言:javascript代码运行次数:0运行复制on_handoff(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
source: Agent[TContext],
) -> None
在将代理移交给时调用。是正在处理的代理 去这个代理。source
on_tool_start async
代码语言:javascript代码运行次数:0运行复制on_tool_start(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
tool: Tool,
) -> None
在调用工具之前调用。
on_tool_end async
代码语言:javascript代码运行次数:0运行复制on_tool_end(
context: RunContextWrapper[TContext],
agent: Agent[TContext],
tool: Tool,
result: str,
) -> None
在调用工具后调用。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-03-17,如有侵权请联系 cloudcommunity@tencent 删除sdkopenai代理工具教程
发布评论