Model Selection
Choose and configure models for your Built-in Agent.
The Built-in Agent uses the Vercel AI SDK, so you can use models from OpenAI, Anthropic, and Google, or pass any custom AI SDK model.
Supported Models#
Specify a model using the "provider:model" format. "provider/model" also works.
OpenAI#
| Model | Specifier |
|---|---|
| GPT-5 | openai:gpt-5 |
| GPT-5 Mini | openai:gpt-5-mini |
| GPT-4.1 | openai:gpt-4.1 |
| GPT-4.1 Mini | openai:gpt-4.1-mini |
| GPT-4.1 Nano | openai:gpt-4.1-nano |
| GPT-4o | openai:gpt-4o |
| GPT-4o Mini | openai:gpt-4o-mini |
| o3 | openai:o3 |
| o3-mini | openai:o3-mini |
| o4-mini | openai:o4-mini |
const agent = new BuiltInAgent({
model: "openai:gpt-4.1",
});Anthropic#
| Model | Specifier |
|---|---|
| Claude Sonnet 4.5 | anthropic:claude-sonnet-4.5 |
| Claude Sonnet 4 | anthropic:claude-sonnet-4 |
| Claude 3.7 Sonnet | anthropic:claude-3.7-sonnet |
| Claude Opus 4.1 | anthropic:claude-opus-4.1 |
| Claude Opus 4 | anthropic:claude-opus-4 |
| Claude 3.5 Haiku | anthropic:claude-3.5-haiku |
const agent = new BuiltInAgent({
model: "anthropic:claude-sonnet-4.5",
});Google#
| Model | Specifier |
|---|---|
| Gemini 2.5 Pro | google:gemini-2.5-pro |
| Gemini 2.5 Flash | google:gemini-2.5-flash |
| Gemini 2.5 Flash Lite | google:gemini-2.5-flash-lite |
const agent = new BuiltInAgent({
model: "google:gemini-2.5-pro",
});Environment Variables#
Set the API key for your chosen provider:
# OpenAI
OPENAI_API_KEY=sk-...
# Anthropic
ANTHROPIC_API_KEY=sk-ant-...
# Google
GOOGLE_API_KEY=...Alternatively, pass the API key directly in your configuration:
const agent = new BuiltInAgent({
model: "openai:gpt-4.1",
apiKey: process.env.MY_OPENAI_KEY,
});Custom Models (AI SDK)#
For models not in the built-in list, you can pass any Vercel AI SDK LanguageModel instance directly:
import { BuiltInAgent } from "@copilotkit/runtime/v2";
import { createOpenAI } from "@ai-sdk/openai";
const customProvider = createOpenAI({
apiKey: process.env.MY_API_KEY,
baseURL: "https://my-proxy.example.com/v1",
});
const agent = new BuiltInAgent({
model: customProvider("my-fine-tuned-model"),
});This works with any AI SDK provider, including Azure OpenAI, AWS Bedrock, Ollama, or any OpenAI-compatible endpoint:
import { createAzure } from "@ai-sdk/azure";
const azure = createAzure({
resourceName: "my-resource",
apiKey: process.env.AZURE_API_KEY,
});
const agent = new BuiltInAgent({
model: azure("my-deployment"),
});OpenRouter, proxies, and bring-your-own LLM#
Anything that exposes an OpenAI-compatible API, including OpenRouter,
a self-hosted gateway, an internal LLM proxy, Ollama, Together,
Groq, or your own fine-tuned endpoint, works through the same
createOpenAI({ baseURL }) pattern shown in Custom Models
above. Point baseURL at the provider's OpenAI-compatible route and pass your key:
import { BuiltInAgent } from "@copilotkit/runtime/v2";
import { createOpenAI } from "@ai-sdk/openai";
// OpenRouter: one key, hundreds of models behind an OpenAI-compatible API
const openrouter = createOpenAI({
apiKey: process.env.OPENROUTER_API_KEY,
baseURL: "https://openrouter.ai/api/v1",
});
const agent = new BuiltInAgent({
model: openrouter("anthropic/claude-sonnet-4.5"),
});The same shape works for any OpenAI-compatible proxy. Swap the baseURL and key.
There is no CopilotKit-specific provider to install; if the
AI SDK can talk to it, the Built-in Agent can use it.
The model is set on the agent
CopilotKit does not expose a hosted/Cloud endpoint for choosing or
switching the model at request time. The model is configured on the agent,
either as a "provider:model" string or an AI SDK LanguageModel instance:
new BuiltInAgent({ model: "openai:gpt-4.1" }); // built-in string
new BuiltInAgent({ model: openrouter("...") }); // any LanguageModelTo switch models per user, request, or feature flag, construct the agent with
the desired model on your own backend. For full control over the runtime you
can also use a Custom Agent.
How it works#
The Built-in Agent resolves model strings to AI SDK provider instances:
| Model string | AI SDK provider | Resolved call |
|---|---|---|
"openai:gpt-4.1" | @ai-sdk/openai | openai("gpt-4.1") |
"anthropic:claude-sonnet-4.5" | @ai-sdk/anthropic | anthropic("claude-sonnet-4.5") |
"google:gemini-2.5-pro" | @ai-sdk/google | google("gemini-2.5-pro") |
Both "provider:model" and "provider/model" separators are supported and work identically.
Need a different AI SDK or full control?
The Custom Agent lets you bring your own AI SDK, TanStack AI, or any custom LLM backend while CopilotKit handles the rest.