Use for AI SDK for Python basics. Configure a model, make messages, stream, declare tools, build a basic agent.
中文简介正在准备中。当前显示原文说明。
Use for AI SDK for Python async-generator tools, streaming tool output, subagent tools, PartialToolCallResult events, and custom tool aggregation.
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
Use async-generator tools when a tool should show progress while it runs.
A streaming tool yields many values, but the agent still needs one final tool result for the next model turn. The return type tells the SDK how to combine those yields.
Use ai.StreamingTextTool when yielded strings should concatenate into the
final tool result.
@ai.tool
async def draft_reply(topic: str) -> ai.StreamingTextTool:
yield "Checking records for "
yield topic
The caller sees each yield as ai.events.PartialToolCallResult. The model later
sees one string: "Checking records for {topic}".
Use ai.StreamingStatusTool[T] when the last yielded value is the tool result.
@ai.tool
async def ask_mothership(question: str) -> ai.StreamingStatusTool[str]:
yield "connecting"
yield "transmitting"
yield f"The mothership says: {question} is under review."
The progress values stream to the caller. The model sees only the final yielded value.
Use ai.SubAgentTool when a tool runs another agent and streams its events.
@ai.tool
async def research(topic: str) -> ai.SubAgentTool:
researcher = ai.Agent()
messages = [
ai.system_message("Research briefly."),
ai.user_message(topic),
]
async with researcher.run(model, messages) as stream:
async for event in stream:
yield event
The parent caller receives nested events as PartialToolCallResult.value.
async with agent.run(model, messages) as stream:
async for event in stream:
if isinstance(event, ai.events.PartialToolCallResult):
if isinstance(event.value, ai.events.TextDelta):
yield event.value.chunk
SubAgentTool stores a typed MessageBundle as the tool result. The parent
model sees the nested agent's final assistant text, not the raw bundle.
When saving history, keep the typed message data:
data = message.model_dump(mode="json")
message = ai.messages.Message.model_validate(data)
Do not stringify MessageBundle or drop result_kind.
Prefer the aliases above. If you need custom aggregation, use either
@ai.tool(aggregator=...) or an Annotated return type. Do not use both.
from collections.abc import AsyncGenerator
from typing import Annotated
JoinedLines = Annotated[
AsyncGenerator[str],
ai.agents.Aggregate(ai.agents.ConcatAggregator, delim="\n"),
]
@ai.tool
async def outline(topic: str) -> JoinedLines:
yield f"# {topic}"
yield "- first point"
Custom aggregators implement ai.events.Aggregator.
ai.events.PartialToolCallResult.ToolRunner events flowing; otherwise partial
tool output will not reach the caller.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Use for AI SDK for Python basics. Configure a model, make messages, stream, declare tools, build a basic agent.
中文简介正在准备中。当前显示原文说明。
Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow.
中文简介正在准备中。当前显示原文说明。
Use for implementing custom providers in AI SDK for Python.
中文简介正在准备中。当前显示原文说明。
Use when adding durable execution to AI SDK for Python, building durable agent loops, or serializing messages across workflow steps.
中文简介正在准备中。当前显示原文说明。
Use when building serverless AI SDK for Python endpoints, handling hook approvals, deferring hooks, or resuming runs across requests.
中文简介正在准备中。当前显示原文说明。
Use for the subagent-as-a-tool pattern.
中文简介正在准备中。当前显示原文说明。