跳到正文
cccskills
免费在 GitHub 公开

ai-python-serverless-execution

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

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

查看安装方法

包含的文件(1)

  • SKILL.md2.8 KB

SKILL.md(原文)

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

ai-python-serverless-execution

Use this when working in a serverless setup, e.g. Vercel Fluid Compute.

The only major difference in serverless is processing tool approvals and other hooks. Since you can't keep the hook future alive, you need to stop the run, save messages, then start a later request with the hook resolution pre-registered.

Tool Approval

Mark approval-gated tools with require_approval=True:

@ai.tool(require_approval=True)
async def delete_file(path: str) -> str:
    return f"Deleted {path}"

First Request

When a deferred hook appears, send it to the client and call ai.defer_hook(...).

Keep draining the stream. Do not break after the first hook. This lets sibling tools finish or get marked deferred, and makes stream.messages complete.

deferred_hooks = []

async with agent.run(model, messages) as stream:
    async for event in stream:
        if (
            isinstance(event, ai.events.HookEvent)
            and event.hook.status == "pending"
        ):
            deferred_hooks.append(event.hook)
            ai.defer_hook(event.hook)

        yield event

saved_messages = [
    message.model_dump(mode="json")
    for message in stream.messages
]
save_messages(saved_messages)
save_deferred_hook_ids([hook.hook_id for hook in deferred_hooks])

Resume Request

Load the saved messages, pre-register hook resolutions, then call agent.run.

messages = [
    ai.messages.Message.model_validate(message)
    for message in load_messages()
]

for approval in approvals:
    ai.resolve_hook(
        approval.hook_id,
        ai.tools.ToolApproval(
            granted=approval.granted,
            reason=approval.reason,
        ),
    )

async with agent.run(model, messages) as stream:
    async for event in stream:
        yield event

save_messages([
    message.model_dump(mode="json")
    for message in stream.messages
])

Call ai.resolve_hook(...) before agent.run(...). Do not ask the model to make the tool call again.

Agent.run prepares saved interrupted messages for replay. Completed sibling tool results are reused, deferred hooks receive the pre-registered resolution, and replay-only events are hidden from the caller.

Rules

  • Use normal agent.run(...); serverless resume usually does not need a custom loop.
  • If you do write a custom loop, use context.resolve(...), ToolRunner, and context.add(...) so approvals and replay keep working.
  • For custom hooks, pre-register with ai.resolve_hook(hook_id, data, payload=PayloadType).
  • For AI SDK UI clients, use ai-python-ui-adapter for message conversion, approval responses, and SSE.

评价

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

评论

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

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

提交后会立即公开。请勿填写邮箱、电话等个人信息。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 adding durable execution to AI SDK for Python, building durable agent loops, or serializing messages across workflow steps.

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

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 的全部技能

报告此技能的问题