Providers

Out of the box support for 11 providers, with more to come.

Provider Capabilities

ProviderDefault ModelDefault Embedding ModelCapabilitiesNotes
OpenAIgpt-4otext-embedding-3-smallChat, Embeddings, Vision, Tools, StreamingFull feature support
Anthropicclaude-3-5-sonnet-20241022-Chat, Vision, Tools, StreamingNo embeddings
Googlegemini-2.0-flash-exptext-embedding-004Chat, Embeddings, Vision, Tools, StreamingNative Gemini API
Mistralmistral-large-latestmistral-embedChat, Embeddings, Tools, StreamingEuropean servers
Coherecommand-r-plusembed-english-v3.0Chat, Embeddings, Tools, StreamingRAG-optimized
Ollamallama3.2:latest-Chat, Tools, StreamingLocal models only
OpenRouteropenai/gpt-4o-Chat, Vision, Tools, StreamingMulti-model gateway
Together AImeta-llama/Meta-Llama-3.1-8B-Instruct-Turbo-Chat, Tools, StreamingOpen source models
Lambdahermes-3-llama-3.1-405b-fp8-Chat, Tools, StreamingResearch models
Google-OpenAIgemini-2.0-flash-exp-Chat, Vision, Tools, StreamingGemini via OpenAI API
Ollama-OpenAIllama3.2:latest-Chat, Tools, StreamingOllama via OpenAI API

Provider Configuration

ProviderProvider PrefixAliasesAPI KeyProvider Type
OpenAIopenai-OPENAI_API_KEYOpenAIProvider
AnthropicanthropicclaudeANTHROPIC_API_KEYAnthropicProvider
Googlegooglegemini, googleaiGEMINI_API_KEYGoogleProvider
Mistralmistral-MISTRAL_API_KEYMistralProvider
Coherecohere-COHERE_API_KEYCohereProvider
Ollamaollama-None (local)OllamaProvider
OpenRouteropenrouter-OPENROUTER_API_KEYOpenAIProvider
Together AItogetheraitogetherTOGETHER_API_KEYOpenAIProvider
Lambdalambda-LAMBDA_API_KEYOpenAIProvider
Google-OpenAIgoogle-openai-GEMINI_API_KEYOpenAIProvider
Ollama-OpenAIollama-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 conversations
  • embeddings - Vector embeddings
  • vision - Image/file processing
  • toolCalls - Function calling
  • multiToolCalls - Multiple tool calls
  • streaming - Stream responses
  • typedOutput - 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)