mcpField
A
ai

ai

github.com/vercel-labsDevelopment196169 installsUpdated 1d ago
Repository

About ai

`ai` is an AI SDK for Python 3.12+ that supports model calls and agents with Python tool execution and managed conversation history. Models can be accessed through AI Gateway or directly through a named provider.

Key features

  1. 01Call models through AI Gateway or providers
  2. 02Stream model responses
  3. 03Define executable Python tools
  4. 04Use agents to manage tool loops and history

Use cases

  1. 01Call language models from Python applications
  2. 02Build agents that execute Python tools
  3. 03Process response streams and conversation history

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/vercel-labs/ai-python --skill ai

After installing, type/aiin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
custom-loops.md
custom-provider.md
durable.md
serverless.md
streaming-tools.md
ui.md

Details

From the project README

AI SDK for Python

Package: ai. Requires Python 3.12+. Install with uv add ai.

Unprefixed model IDs use AI Gateway and AI_GATEWAY_API_KEY. Direct providers use provider:model, their API key, and an extra:

uv add "ai[openai]"     # OPENAI_API_KEY,    ai.get_model("openai:gpt-5")
uv add "ai[anthropic]"  # ANTHROPIC_API_KEY, ai.get_model("anthropic:claude-sonnet-4")

Basic use

Use ai.stream for one model call without Python tool execution:

import ai

model = ai.get_model("anthropic/claude-sonnet-4")
messages = [
    ai.system_message("Be concise."),
    ai.user_message("Write a haiku about rain."),
]

async with ai.stream(model, messages) as stream:
    async for event in stream:
        if isinstance(event, ai.events.TextDelta):
            print(event.chunk, end="", flush=True)

answer = stream.output
message = stream.message

Use ai.Agent for a loop that executes Python tools and manages history:

@ai.tool
async def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return "Sunny"


agent = ai.Agent(tools=[get_weather])
async with agent.run(model, messages) as run:
    async for event in run:
        if isinstance(event, ai.events.TextDelta):
            print(event.chunk, end="", flush=True)

answer = run.output
history = run.messages

These examples are sufficient for basic model calls, messages, tools, and agents.

Advanced work

For an advanced task, fetch its page under https://ai-python.dev/docs/ and read the listed local notes before writing code.

TaskPageLocal notes
Provider clients, options, discoverybasics/providers.md—
Structured output, complex streamsbasics/streaming.md—
Buffered language-model callsbasics/streaming.md—
Images, video, speech, embeddings, transcription, reranking, evaluationbasics/model-operations.md—
Events and serializationbasics/messages-and-events.md—
Advanced tools, streaming, aggregationbasics/tools.mdstreaming-tools.md
Advanced agent behaviorbasics/agents.md—
Deterministic model and agent testsbasics/testing.md—
Subagents and multi-agentbasics/subagents-and-multi-agent.mdstreaming-tools.md
Custom agent loopsbasics/custom-loops.mdcustom-loops.md
Approvals and hooksbasics/human-in-the-loop.md—
Serverless resumebasics/human-in-the-loop.mdserverless.md
Durable executionbasics/durable-execution.mddurable.md
Telemetry and tracingbasics/telemetry.md—
AI SDK UI backendsbasics/ai-sdk-ui.mdui.md
Custom providersbasics/providers.mdcustom-provider.md

For exact APIs, use reference.md and the relevant reference/*.md page.

Comments

Markdown supported