跳到正文
cccskills
免费在 GitHub 公开

ai-python-durable-execution

Use when adding durable execution to AI SDK for Python, building durable agent loops, or serializing messages across workflow steps.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md3.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

ai-python-durable-execution

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:

  • model calls
  • tool I/O
  • approval or resume boundaries

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)

Model Step

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")

Durable Tools

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.

Agent Loop

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.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Use for AI SDK for Python basics. Configure a model, make messages, stream, declare tools, build a basic agent.

中文简介正在准备中。当前显示原文说明。

vercel-labs/seal82026年10月7日 更新

Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow.

中文简介正在准备中。当前显示原文说明。

vercel-labs/seal82026年10月7日 更新

Use for implementing custom providers in AI SDK for Python.

中文简介正在准备中。当前显示原文说明。

vercel-labs/seal82026年10月7日 更新

Use when building serverless AI SDK for Python endpoints, handling hook approvals, deferring hooks, or resuming runs across requests.

中文简介正在准备中。当前显示原文说明。

vercel-labs/seal82026年10月7日 更新

Use for AI SDK for Python async-generator tools, streaming tool output, subagent tools, PartialToolCallResult events, and custom tool aggregation.

中文简介正在准备中。当前显示原文说明。

vercel-labs/seal82026年10月7日 更新

Use for the subagent-as-a-tool pattern.

中文简介正在准备中。当前显示原文说明。

vercel-labs/seal82026年10月7日 更新

查看 vercel-labs 的全部技能

报告此技能的问题