# LLM URL: /docs/framework/llm Source: /app/src/content/docs/framework/llm.mdx import { DocImage } from '@/components/DocImage'; **Unified interface for multiple LLM providers with automatic routing** import { Step, Steps } from 'fumadocs-ui/components/steps'; ## Overview The LLM abstraction layer provides seamless integration with multiple AI providers, allowing you to switch between OpenAI, Claude, Gemini, and Ollama without changing your code. It handles provider-specific implementations, message formatting, and streaming while providing a consistent API across all providers. ## Supported Providers Astreus supports four major LLM providers with automatic model routing: ### OpenAI **All 14 supported models:** * **Latest**: `gpt-4.5`, `gpt-4.1`, `gpt-4.1-mini`, `gpt-4.1-nano`, `o4-mini`, `o4-mini-high`, `o3` * **Stable**: `gpt-4o`, `gpt-4o-mini`, `gpt-4-turbo`, `gpt-4`, `gpt-3.5-turbo`, `gpt-3.5-turbo-16k`, `gpt-3.5-turbo-instruct` * **API Key**: Set `OPENAI_API_KEY` environment variable ### Anthropic Claude **All 9 supported models:** * **Latest**: `claude-sonnet-4-20250514`, `claude-opus-4-20250514`, `claude-3.7-sonnet-20250224` * **Stable**: `claude-3-5-sonnet-20241022`, `claude-3-5-sonnet-20240620`, `claude-3-5-haiku-20241022`, `claude-3-opus-20240229`, `claude-3-sonnet-20240229`, `claude-3-haiku-20240307` * **API Key**: Set `ANTHROPIC_API_KEY` environment variable ### Google Gemini **All 12 supported models:** * **Latest**: `gemini-2.5-pro`, `gemini-2.5-pro-deep-think`, `gemini-2.5-flash`, `gemini-2.5-flash-lite` * **Stable**: `gemini-2.0-flash`, `gemini-2.0-flash-thinking`, `gemini-2.0-flash-lite`, `gemini-2.0-pro-experimental`, `gemini-1.5-pro`, `gemini-1.5-flash`, `gemini-1.5-flash-8b`, `gemini-pro` * **API Key**: Set `GOOGLE_API_KEY` environment variable ### Ollama (Local) **All 32 supported models:** * **Latest**: `deepseek-r1`, `deepseek-v3`, `deepseek-v2.5`, `deepseek-coder`, `deepseek-coder-v2`, `qwen3`, `qwen2.5-coder`, `llama3.3`, `gemma3`, `phi4` * **Popular**: `mistral-small`, `codellama`, `llama3.2`, `llama3.1`, `qwen2.5`, `gemma2`, `phi3`, `mistral`, `codegemma`, `wizardlm2` * **Additional**: `dolphin-mistral`, `openhermes`, `deepcoder`, `stable-code`, `wizardcoder`, `magicoder`, `solar`, `yi`, `zephyr`, `orca-mini`, `vicuna` * **Configuration**: Set `OLLAMA_BASE_URL` (default: `http://localhost:11434`) ## Configuration ### Environment Variables Set up your API keys and configuration: ```bash # OpenAI export OPENAI_API_KEY="your-openai-key" export OPENAI_BASE_URL="https://api.openai.com/v1" # Optional # Anthropic Claude export ANTHROPIC_API_KEY="your-anthropic-key" export ANTHROPIC_BASE_URL="https://api.anthropic.com" # Optional # Google Gemini export GOOGLE_API_KEY="your-google-key" # Ollama (Local) export OLLAMA_BASE_URL="http://localhost:11434" # Optional ``` ### Agent Configuration Specify the model when creating agents: ```typescript import { Agent } from '@astreus-ai/astreus'; const agent = await Agent.create({ name: 'MyAgent', model: 'gpt-4.5', // Model automatically routes to correct provider temperature: 0.7, maxTokens: 2000 }); ``` ## Usage Examples ### Basic LLM Usage ```typescript import { getLLM } from '@astreus-ai/astreus'; const llm = getLLM(); // Generate response const response = await llm.generateResponse({ model: 'claude-sonnet-4-20250514', messages: [{ role: 'user', content: 'Explain quantum computing' }], temperature: 0.7, maxTokens: 1000 }); console.log(response.content); ``` ### Streaming Responses ```typescript // Stream response in real-time for await (const chunk of llm.generateStreamResponse({ model: 'gpt-4.5', messages: [{ role: 'user', content: 'Write a story about AI' }], stream: true })) { if (!chunk.done) { process.stdout.write(chunk.content); } } ``` ### Function Calling ```typescript const response = await llm.generateResponse({ model: 'gpt-4o', messages: [{ role: 'user', content: 'What\'s the weather in Tokyo?' }], tools: [{ type: 'function', function: { name: 'get_weather', description: 'Get current weather information', parameters: { type: 'object', properties: { location: { type: 'string', description: 'City name' } }, required: ['location'] } } }] }); // Handle tool calls if (response.toolCalls) { response.toolCalls.forEach(call => { console.log(`Tool: ${call.function.name}`); console.log(`Args: ${call.function.arguments}`); }); } ``` ## LLM Options Configure LLM behavior with these options: ```typescript interface LLMRequestOptions { model: string; // Required: Model identifier messages: LLMMessage[]; // Required: Conversation history temperature?: number; // Creativity level (0.0-1.0, default: 0.7) maxTokens?: number; // Max output tokens (default: 4096) stream?: boolean; // Enable streaming responses systemPrompt?: string; // System instructions tools?: Tool[]; // Function calling tools } ``` ### Parameter Details * **temperature**: Controls randomness (0.0 = deterministic, 1.0 = very creative) * **maxTokens**: Maximum tokens in the response (varies by model) * **stream**: Enable real-time streaming for long responses * **systemPrompt**: Sets behavior and context for the model * **tools**: Enable function calling capabilities ## Provider Features | Feature | OpenAI | Claude | Gemini | Ollama | | ---------------- | ------ | ------ | ------- | ------- | | Streaming | ✅ | ✅ | ✅ | ✅ | | Function Calling | ✅ | ✅ | Limited | Limited | | Token Usage | ✅ | ✅ | Limited | ✅ | | Custom Base URL | ✅ | ✅ | ❌ | ✅ | | Local Models | ❌ | ❌ | ❌ | ✅ | ## Model Selection Guide ### For Code Generation * **Best**: `gpt-4o`, `claude-3-5-sonnet-20241022`, `deepseek-coder` * **Fast**: `gpt-4o-mini`, `claude-3-5-haiku-20241022` ### For Reasoning Tasks * **Best**: `claude-opus-4-20250514`, `gpt-4.5`, `o3` * **Balanced**: `claude-sonnet-4-20250514`, `gpt-4o` ### For Creative Writing * **Best**: `gpt-4.5`, `claude-3-opus-20240229` * **Fast**: `gemini-2.5-pro`, `gpt-4o-mini` ### For Privacy/Local Use * **Best**: `deepseek-r1`, `llama3.3`, `qwen3` * **Code**: `deepseek-coder`, `codellama`