Skip to main content

ai-python-basics

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

Source facts

Repository
vercel-labs/seal
Last source activity
July 15, 2026 at 12:36
Detected SKILL.md language
English
Stars
8
Forks
3

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
ai-python-basics
description
Use for AI SDK for Python basics. Configure a model, make messages, stream, declare tools, build a basic agent.
metadata
{"sdk-version":"0.2.1"}
# ai-python-basics Requires Python 3.12 or later. Install with `uv add ai`. Use `import ai`. For gateway-routed model IDs, set `AI_GATEWAY_API_KEY`. Core pieces: - `Model` selects the provider and model. - Messages are typed Python objects. - `ai.stream` makes one model call and returns one assistant message. - `ai.Agent` wraps `ai.stream` in a loop that executes Python tools and manages history. Use gateway model IDs unless you need a direct provider: ```python model = ai.get_model("anthropic/claude-sonnet-4") ``` Direct providers need extras: ```bash uv add "ai[openai]" uv add "ai[anthropic]" ``` Messages are typed Python objects: ```python messages = [ ai.system_message("Be concise."), ai.user_message("Write a haiku about rain."), ] ``` Minimal agent happy path: ```python import asyncio import ai @ai.tool async def get_weather(city: str) -> str: """Get the weather for a city.""" return "Sunny" async def main() -> None: model = ai.get_model("anthropic/claude-sonnet-4") agent = ai.Agent(tools=[get_weather]) messages = [ ai.system_message("Use tools when useful."), ai.user_message("What is the weather in San Francisco?"), ] 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 if __name__ == "__main__": asyncio.run(main()) ``` For one model call without Python tool execution, use `ai.stream`: ```python 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 messages.append(stream.message) ``` Use `ai-python-custom-loop`, `ai-python-subagents`, `ai-python-streaming-tools`, `ai-python-serverless-execution`, `ai-python-durable-execution`, `ai-python-ui-adapter`, and `ai-python-custom-provider` for advanced patterns.
View on GitHub