원클릭으로
ai-python-custom-loop
Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when building serverless AI SDK for Python endpoints, handling hook approvals, deferring hooks, or resuming runs across requests.
Use when connecting AI SDK for Python streams to AI SDK UI useChat clients.
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.
Use for the subagent-as-a-tool pattern.
Use for implementing custom providers in AI SDK for Python.
| name | ai-python-custom-loop |
| description | Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow. |
| metadata | {"sdk-version":"0.2.1"} |
Keep the default shape unless you must change control flow:
class MyAgent(ai.Agent):
async def loop(self, context: ai.Context):
while context.keep_running():
async with (
ai.stream(context=context) as stream,
ai.ToolRunner() as runner,
):
async for event in ai.util.merge(stream, runner.events()):
yield event
if isinstance(event, ai.events.ToolEnd):
runner.schedule(context.resolve(event.tool_call))
context.add(stream.message)
context.add(runner.get_tool_message())
Rules:
context.keep_running() at the top of each turn.ai.stream(context=context) so model, messages, tools, output type, and params stay together.Agent.run hides replay events from callers.ToolEnd, use context.resolve(event.tool_call). It handles validation, approval gates, and cached replay results.tool.fn directly unless you also handle validation, approvals, and cached results.ToolRunner.schedule(...).ToolRunner.schedule(...) also accepts a zero-arg async callable that returns ai.events.ToolCallResult.runner.add_result(ai.tool_result(...)).stream.message, then runner.get_tool_message(). context.add(...) skips replay messages.context.resolve(...) build the gated call. Use ai-python-serverless-execution for request boundaries.ai-python-durable-execution.