mcpbeat Sign in

AI Python Basics Skill for Claude

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

562 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
4
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/vercel-labs/seal --skill ai-python-basics

What it tells the agent to use

found in the instruction text
Task spawns other agents

The instruction itself

1 sections, as written by the author

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:

model = ai.get_model("anthropic/claude-sonnet-4")

Direct providers need extras:

uv add "ai[openai]"
uv add "ai[anthropic]"

Messages are typed Python objects:

messages = [
    ai.system_message("Be concise."),
    ai.user_message("Write a haiku about rain."),
]

Minimal agent happy path:

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:

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.

How to use it

Copy the folder

Take vercel-labs/ai-python-basics from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.