Use for AI SDK for Python basics. Configure a model, make messages, stream, declare tools, build a basic agent.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use when adding durable execution to AI SDK for Python, building durable agent loops, or serializing messages across workflow steps.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Use durable execution when an agent run must survive restarts, worker moves, or long waits.
The SDK does not provide durability by itself. Build a custom Agent.loop, and
put side effects inside durable steps:
Keep the workflow replayable. Durable steps should take JSON inputs and return JSON outputs.
Serialize messages like this:
data = message.model_dump(mode="json")
message = ai.messages.Message.model_validate(data)
A durable model step should drain ai.stream(...) inside the step and return one
complete assistant Message.
@workflow.step
async def llm_step(
model_data: dict[str, object],
messages_data: list[dict[str, object]],
tools_data: list[dict[str, object]],
) -> dict[str, object]:
model = ai.Model.model_validate(model_data)
messages = [
ai.messages.Message.model_validate(message)
for message in messages_data
]
tools = [ai.Tool.model_validate(tool) for tool in tools_data]
async with ai.stream(model, messages, tools=tools) as stream:
async for _event in stream:
pass
if stream.message is None:
raise RuntimeError("LLM stream ended without a message")
return stream.message.model_dump(mode="json")
Prefer wrapping the tool body in the durable step:
@ai.tool
@workflow.step
async def ask_mothership(question: str) -> str:
response = await mothership_client.ask(question)
return response.summary
If the workflow system needs separate activity dispatch, schedule a zero-arg
callable that returns ai.tool_result(...). Do not call tool.fn directly.
Use the model step result as a complete message. Do not wrap it in ai.Stream,
ai.events.replay_message_events, or ai.util.merge, those utilities are
used for fluent dispatch in non-durable applications, which is impossible
in a workflow setting since streams are considered side-effects.
class DurableAgent(ai.Agent):
async def loop(self, context: ai.Context):
while context.keep_running():
result = await llm_step(
context.model.model_dump(mode="json"),
[m.model_dump(mode="json") for m in context.messages],
[t.model_dump(mode="json") for t in context.tools],
)
assistant_message = ai.messages.Message.model_validate(result)
context.add(assistant_message)
async with ai.ToolRunner() as runner:
for tool_call in assistant_message.tool_calls:
runner.schedule(context.resolve(tool_call))
async for event in runner.events():
yield event
context.add(runner.get_tool_message())
This pattern does not stream model tokens to the caller. That is usually the right tradeoff for durable workflows, because many durable systems do not support async generators. You can build a queue-based side channel for streaming; however, that kind of stream can't be used to dispatch tools and affect control flow directly.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
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 building serverless AI SDK for Python endpoints, handling hook approvals, deferring hooks, or resuming runs across requests.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use for AI SDK for Python async-generator tools, streaming tool output, subagent tools, PartialToolCallResult events, and custom tool aggregation.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Use for the subagent-as-a-tool pattern.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.