Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ag2ai avatar

Ag2 Quickstart

  • 35 installs
  • 8 repo stars
  • Updated July 27, 2026
  • ag2ai/ag2-skills

ag2-quickstart is a Claude Code skill that builds a minimal AG2 beta Agent end to end and shows multi-turn conversation chaining.

About

This skill builds a minimal AG2 beta Agent end to end: pick a model provider, set a prompt, call agent.ask(), then chain follow-up turns with reply.ask() to preserve context. A developer uses it when starting a new AG2 beta project or when unsure which provider config to use. It covers OpenAIConfig, AnthropicConfig, GeminiConfig, OllamaConfig, env-var fallback for API keys, and OpenAI-compatible endpoints.

  • Builds a minimal AG2 beta Agent end to end: pick a model, set a prompt, call ask()
  • Covers OpenAI, Anthropic, Gemini, Ollama and other provider configs
  • Shows multi-turn chaining with reply.ask() to preserve context

Ag2 Quickstart by the numbers

  • 35 all-time installs (skills.sh)
  • Ranked #8,710 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

ag2-quickstart capabilities & compatibility

Free skill; requires an LLM provider API key (or local Ollama, no key).

Capabilities
agent quickstart · model config · multi turn chaining
Works with
openai · anthropic
Use cases
orchestration
Pricing
Bring your own API key
From the docs

What ag2-quickstart says it does

The user is starting from a blank file and wants a working AG2 beta agent.
SKILL.md
`reply.ask()` keeps the prior turns in scope so the LLM remembers the constraints.
SKILL.md
npx skills add https://github.com/ag2ai/ag2-skills --skill ag2-quickstart

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs35
repo stars8
Last updatedJuly 27, 2026
Repositoryag2ai/ag2-skills

What it does

Build a first working AG2 beta agent and chain multi-turn conversation with reply.ask().

Who is it for?

Developers starting a new AG2 beta project or unsure which provider config to use.

Skip if: Projects not built on AG2 beta (autogen.beta).

When should I use this skill?

The user is starting a new AG2 beta project, has no working Agent yet, or needs the multi-turn chaining pattern.

What you get

A working AG2 agent answers a first turn and chains follow-up turns with preserved context.

By the numbers

  • 6 provider configs in the prerequisites table (OpenAI, Anthropic, Gemini, Vertex, Ollama, DashScope)

Files

SKILL.mdMarkdownGitHub ↗

Quickstart: build your first AG2 beta Agent

When to use

  • The user is starting from a blank file and wants a working AG2 beta agent.
  • The user is unsure which provider config to use.
  • The user wants to chain follow-up turns without losing conversation context.
  • A larger task needs the basic Agent setup as its skeleton — start here, then layer the relevant feature skill on top.

Prerequisites

Required step: install dependencies before finishing.
After writing AG2 code, install the matching provider extra (plus any feature extra the task needs, e.g. ag-ui, tracing). Run the install:

>

```bash
pip install "ag2[openai]" # swap in the provider/extra you used
```

>

If you cannot run commands, state the exact pip install command. This is part of finishing the task, not an optional note.

>

For a multi-file project (more than a throwaway script), also drop a requirements.txt pinning ag2 with the extras you used (e.g. ag2[openai]>=0.13.4) so the environment is reproducible.

Install the right provider extra and have a key for it. Each *Config requires its provider SDK — without the matching extra you'll see ImportError: ... requires optional dependencies. Install with pip install "ag2[<provider>]".

ProviderInstallEnv varConfig class
OpenAIpip install "ag2[openai]"OPENAI_API_KEYOpenAIConfig, OpenAIResponsesConfig
Anthropicpip install "ag2[anthropic]"ANTHROPIC_API_KEYAnthropicConfig
Gemini (API key)pip install "ag2[gemini]"GEMINI_API_KEY (or GOOGLE_API_KEY)GeminiConfig
Vertex AI (Gemini)pip install "ag2[gemini]"service-account / ADCVertexAIConfig
Ollama (local)pip install "ag2[ollama]"OllamaConfig
DashScope (Qwen)pip install "ag2[dashscope]"DASHSCOPE_API_KEYDashScopeConfig

Load env vars from a project-root .env with python-dotenv so scripts pick up keys without exporting them in your shell:

from dotenv import load_dotenv
load_dotenv()  # reads .env at project root

Quick sanity-check before debugging weird import errors — make sure you're running against the ag2 you think:

python -c "import sys, autogen; print(sys.executable); print('ag2', autogen.__version__)"

60-second recipe

import asyncio
from autogen.beta import Agent
from autogen.beta.config import OpenAIConfig

async def main() -> None:
    agent = Agent(
        "assistant",
        prompt="You are a helpful assistant. Reply in one sentence.",
        config=OpenAIConfig(model="gpt-4o-mini"),
    )

    # First turn
    reply = await agent.ask("What is the capital of France?")
    print(reply.body)

    # Continue the same conversation — context is preserved
    reply = await reply.ask("And of Germany?")
    print(reply.body)

asyncio.run(main())

Agent.ask(...) starts a new turn and returns an AgentReply. AgentReply.ask(...) continues the same conversation, preserving its context and history. The reply text is in reply.body; for typed output see the ag2-structured-output skill (reply.content()).

Picking a provider

Each provider has its own config class in autogen.beta.config. All accept model=, optional api_key=, and (where supported) streaming=True. Streaming is recommended — AG2 beta is async- and streaming-first.

from autogen.beta.config import OpenAIConfig          # gpt-4o, gpt-5-*, o-series, etc.
from autogen.beta.config import OpenAIResponsesConfig # OpenAI Responses API (image gen, file_id support)
from autogen.beta.config import AnthropicConfig       # claude-sonnet-4-6, claude-opus-4-7, etc.
from autogen.beta.config import GeminiConfig          # Gemini Developer API (api_key)
from autogen.beta.config import VertexAIConfig        # Gemini on Google Vertex AI (project + location)
from autogen.beta.config import OllamaConfig          # local Ollama
from autogen.beta.config import DashScopeConfig       # Alibaba Qwen

config = AnthropicConfig(model="claude-sonnet-4-6", streaming=True)

If api_key= is omitted, the config reads the standard env var — OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY (or GOOGLE_API_KEY), etc.

For OpenAI-compatible endpoints (vLLM, LM Studio, Together, NVIDIA NIM, etc.) use OpenAIConfig with base_url= set:

config = OpenAIConfig(
    model="qwen-3",
    base_url="http://localhost:8000/v1",
    api_key="NotRequired",  # pragma: allowlist secret
)

Multi-turn — chain reply.ask()

agent = Agent("planner", prompt="...", config=config)
reply = await agent.ask("Plan a 5-day Japan trip in late April.")
reply = await reply.ask("Budget is $2500 per person, two travellers.")
reply = await reply.ask("Prefer trains. Day-by-day itinerary.")
print(reply.body)

reply.ask() keeps the prior turns in scope so the LLM remembers the constraints. Calling agent.ask(...) again instead would start a fresh conversation. See assets/multi_turn.py for the full travel-planner example.

Reusing model configs

Configs are immutable. Use .copy(...) to fork one with overrides:

base = OpenAIConfig(model="gpt-5")
hot = base.copy(temperature=0.8)
cheap = base.copy(model="gpt-5-mini")

You can also override the model per ask — useful when the user brings their own API key per request:

agent = Agent("assistant", prompt="Help.")
reply = await agent.ask("Hello!", config=OpenAIConfig(model="gpt-5", api_key="sk-..."))  # pragma: allowlist secret

The per-ask config completely replaces the agent's config for that turn.

Going deeper

  • Working starter (single-turn): assets/hello_agent.py (mirrors code_examples/01).
  • Multi-turn starter: assets/multi_turn.py (mirrors code_examples/03).
  • Full provider reference, including VertexAIConfig auth, extra_body, custom httpx client, env-var fallback table: website/docs/beta/model_configuration.mdx.
  • Agent communication API surface (events, observing, HITL): website/docs/beta/agents.mdx.
  • Static, dynamic, per-turn prompts: website/docs/beta/system_prompts.mdx.

Common pitfalls

  • Forgetting to `await` — every method on Agent / AgentReply is async. Wrap in asyncio.run(main()) for scripts.
  • Calling `agent.ask()` twice expecting context to carry — it doesn't; use reply.ask() instead.
  • Hardcoding API keys — prefer env-var fallback (OPENAI_API_KEY, etc.) so configs commit cleanly.
  • Skipping `streaming=True` — AG2 beta is streaming-first; you'll get a worse user experience without it on supported providers.
  • Per-ask `config=` is total override, not a partial merge — be deliberate about which knobs you set.

Related skills

FAQ

How do I continue the same conversation?

Call reply.ask(); it keeps prior turns in scope, while agent.ask() again starts a fresh conversation.

Where does the API key come from if I omit api_key?

The config reads the standard env var like OPENAI_API_KEY or ANTHROPIC_API_KEY.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.