Providers
Out of the box support for 11 providers, with more to come.
Provider Capabilities
Provider | Default Model | Default Embedding Model | Capabilities | Notes |
---|---|---|---|---|
OpenAI | gpt-4o | text-embedding-3-small | Chat, Embeddings, Vision, Tools, Streaming | Full feature support |
Anthropic | claude-3-5-sonnet-20241022 | - | Chat, Vision, Tools, Streaming | No embeddings |
gemini-2.0-flash-exp | text-embedding-004 | Chat, Embeddings, Vision, Tools, Streaming | Native Gemini API | |
Mistral | mistral-large-latest | mistral-embed | Chat, Embeddings, Tools, Streaming | European servers |
Cohere | command-r-plus | embed-english-v3.0 | Chat, Embeddings, Tools, Streaming | RAG-optimized |
Ollama | llama3.2:latest | - | Chat, Tools, Streaming | Local models only |
OpenRouter | openai/gpt-4o | - | Chat, Vision, Tools, Streaming | Multi-model gateway |
Together AI | meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo | - | Chat, Tools, Streaming | Open source models |
Lambda | hermes-3-llama-3.1-405b-fp8 | - | Chat, Tools, Streaming | Research models |
Google-OpenAI | gemini-2.0-flash-exp | - | Chat, Vision, Tools, Streaming | Gemini via OpenAI API |
Ollama-OpenAI | llama3.2:latest | - | Chat, Tools, Streaming | Ollama via OpenAI API |
Provider Configuration
Provider | Provider Prefix | Aliases | API Key | Provider Type |
---|---|---|---|---|
OpenAI | openai | - | OPENAI_API_KEY | OpenAIProvider |
Anthropic | anthropic | claude | ANTHROPIC_API_KEY | AnthropicProvider |
google | gemini , googleai | GEMINI_API_KEY | GoogleProvider | |
Mistral | mistral | - | MISTRAL_API_KEY | MistralProvider |
Cohere | cohere | - | COHERE_API_KEY | CohereProvider |
Ollama | ollama | - | None (local) | OllamaProvider |
OpenRouter | openrouter | - | OPENROUTER_API_KEY | OpenAIProvider |
Together AI | togetherai | together | TOGETHER_API_KEY | OpenAIProvider |
Lambda | lambda | - | LAMBDA_API_KEY | OpenAIProvider |
Google-OpenAI | google-openai | - | GEMINI_API_KEY | OpenAIProvider |
Ollama-OpenAI | ollama-openai | - | None (local) | OpenAIProvider |
Setup
# Set API keys
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GEMINI_API_KEY="..."
Usage
// Basic
Agent('openai');
// With model
Agent('anthropic:claude-3-5-sonnet');
// Chat + embeddings
Agent('openai?chat=gpt-4o&embeddings=text-embedding-3-large');
Find Providers
// All providers
Providers.all
// By capability
Providers.allWith({ProviderCaps.vision})
// By name
Providers.get('claude') // → anthropic
Custom Config
final provider = OpenAIProvider(
apiKey: 'key',
baseUrl: Uri.parse('https://custom.api.com/v1'),
);
Agent.forProvider(provider);
Check Capabilities
// Check what a provider supports
final agent = Agent('openrouter');
print('Capabilities: ${provider.caps}');
// Output: {chat, vision, toolCalls, streaming}
// Check specific capability
if (provider.caps.contains(ProviderCaps.embeddings)) {
final embed = await agent.embedQuery('test');
} else {
print('Provider does not support embeddings');
}
Available Capabilities
chat
- Chat conversationsembeddings
- Vector embeddingsvision
- Image/file processingtoolCalls
- Function callingmultiToolCalls
- Multiple tool callsstreaming
- Stream responsestypedOutput
- Structured output
List Models
// List all models from a provider
final provider = Providers.openai;
await for (final model in provider.listModels()) {
final status = model.stable ? 'stable' : 'preview';
print('${model.name}: ${model.displayName} [$status]');
}
// Example output:
// - openai:gpt-4-0613 (chat)
// - openai:gpt-4 (chat)
// - openai:gpt-3.5-turbo (chat)