본문으로 건너뛰기
cccskills
무료GitHub에 공개

ai-python-streaming-tools

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

ai-python-streaming-tools

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.

Text Chunks

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}".

Progress Then Result

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.

Subagents

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.

Custom Aggregation

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.

Rules

  • Streaming tools must be async generators.
  • Every streaming tool needs an aggregator, usually from the return type alias.
  • Consume live output from ai.events.PartialToolCallResult.
  • The final aggregated value is sent back to the model as a normal tool result.
  • In custom agent loops, keep ToolRunner events flowing; otherwise partial tool output will not reach the caller.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 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 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 the subagent-as-a-tool pattern.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

vercel-labs/seal82026년 10월 7일 업데이트

vercel-labs의 스킬 모두 보기

이 스킬의 문제 신고