310 lines
7.6 KiB
Markdown
310 lines
7.6 KiB
Markdown
# LLM Provider Reference
|
|
|
|
This document provides detailed information about supported LLM providers, their configurations, models, and capabilities.
|
|
|
|
## Supported Providers
|
|
|
|
### OpenAI (Default)
|
|
|
|
**Provider ID:** `openai` (or empty string)
|
|
**Base URL:** Default OpenAI endpoint
|
|
**Environment Variable:** `OPENAI_API_KEY`
|
|
|
|
#### Popular Models
|
|
|
|
- **GPT-5** (`gpt-5`, `gpt-5-mini`, `gpt-5-nano`) - Latest generation with advanced reasoning
|
|
- `gpt-5`: Complex reasoning, broad world knowledge, code-heavy tasks
|
|
- `gpt-5-mini`: Cost-optimized reasoning and chat
|
|
- `gpt-5-nano`: High-throughput, simple instruction-following
|
|
- **GPT-4** (`gpt-4o`, `gpt-4o-mini`) - Multimodal, balanced performance
|
|
- **GPT-3.5** (`gpt-3.5-turbo`) - Fast and economical
|
|
|
|
#### Configuration Example
|
|
|
|
```bash
|
|
swiftopenai config set provider ""
|
|
swiftopenai config set base-url ""
|
|
swiftopenai config set api-key sk-...
|
|
swiftopenai config set default-model gpt-5-mini
|
|
```
|
|
|
|
#### Agent Mode
|
|
|
|
Supports full agent mode with MCP tools, session management, and auto-compaction.
|
|
|
|
---
|
|
|
|
### xAI (Grok)
|
|
|
|
**Provider ID:** `xai`
|
|
**Base URL:** `https://api.x.ai/v1`
|
|
**Environment Variable:** `XAI_API_KEY`
|
|
|
|
#### Popular Models
|
|
|
|
- **Grok-4** (`grok-4-0709`) - Latest Grok model with enhanced reasoning
|
|
- **Grok-3** (`grok-3`) - General purpose language model
|
|
- **Grok Code Fast** (`grok-code-fast-1`) - Optimized for code generation
|
|
|
|
#### Configuration Example
|
|
|
|
```bash
|
|
swiftopenai config set provider xai
|
|
swiftopenai config set base-url https://api.x.ai/v1
|
|
swiftopenai config set api-key xai-...
|
|
swiftopenai config set default-model grok-4-0709
|
|
```
|
|
|
|
#### Agent Mode
|
|
|
|
Fully supported with agent mode capabilities.
|
|
|
|
---
|
|
|
|
### Groq
|
|
|
|
**Provider ID:** `groq`
|
|
**Base URL:** `https://api.groq.com/openai/v1`
|
|
**Environment Variable:** `GROQ_API_KEY`
|
|
|
|
#### Popular Models
|
|
|
|
- **Llama 3.3** (`llama-3.3-70b-versatile`) - Versatile open-source model
|
|
- **Mixtral** (`mixtral-8x7b-32768`) - Mixture of experts architecture
|
|
- Various other open-source models with ultra-fast inference
|
|
|
|
#### Configuration Example
|
|
|
|
```bash
|
|
swiftopenai config set provider groq
|
|
swiftopenai config set base-url https://api.groq.com/openai/v1
|
|
swiftopenai config set api-key gsk_...
|
|
swiftopenai config set default-model llama-3.3-70b-versatile
|
|
```
|
|
|
|
#### Agent Mode
|
|
|
|
Supported with agent mode capabilities.
|
|
|
|
---
|
|
|
|
### DeepSeek
|
|
|
|
**Provider ID:** `deepseek`
|
|
**Base URL:** `https://api.deepseek.com`
|
|
**Environment Variable:** `DEEPSEEK_API_KEY`
|
|
|
|
#### Popular Models
|
|
|
|
- **DeepSeek Chat** (`deepseek-chat`) - General purpose conversational model
|
|
- **DeepSeek Coder** (`deepseek-coder`) - Specialized for coding tasks
|
|
- **DeepSeek Reasoner** (`deepseek-reasoner`) - Advanced reasoning capabilities
|
|
|
|
#### Configuration Example
|
|
|
|
```bash
|
|
swiftopenai config set provider deepseek
|
|
swiftopenai config set base-url https://api.deepseek.com
|
|
swiftopenai config set api-key sk-...
|
|
swiftopenai config set default-model deepseek-reasoner
|
|
```
|
|
|
|
#### Agent Mode
|
|
|
|
Supported with agent mode capabilities.
|
|
|
|
---
|
|
|
|
### OpenRouter
|
|
|
|
**Provider ID:** `openrouter`
|
|
**Base URL:** `https://openrouter.ai/api/v1`
|
|
**Environment Variable:** `OPENROUTER_API_KEY`
|
|
|
|
#### Popular Models
|
|
|
|
OpenRouter provides access to 300+ models from various providers:
|
|
|
|
- **Anthropic:** `anthropic/claude-3.5-sonnet`, `anthropic/claude-3.5-haiku`
|
|
- **OpenAI:** `openai/gpt-4`, `openai/gpt-4-turbo`
|
|
- **Google:** `google/gemini-pro`, `google/gemini-pro-vision`
|
|
- **Meta:** `meta-llama/llama-3.1-405b`
|
|
- And many more...
|
|
|
|
#### Configuration Example
|
|
|
|
```bash
|
|
swiftopenai config set provider openrouter
|
|
swiftopenai config set base-url https://openrouter.ai/api/v1
|
|
swiftopenai config set api-key sk-or-v1-...
|
|
swiftopenai config set default-model anthropic/claude-3.5-sonnet
|
|
```
|
|
|
|
#### Agent Mode
|
|
|
|
Supported with agent mode capabilities.
|
|
|
|
---
|
|
|
|
## Agent Mode Features
|
|
|
|
SwiftOpenAI-CLI's agent mode provides:
|
|
|
|
- **MCP Integration** - Connect to external tools via Model Context Protocol
|
|
- **Conversation Memory** - Maintains context within sessions
|
|
- **Auto-Compaction** - Automatically summarizes long conversations
|
|
- **Session Management** - Continue conversations with `--session-id`
|
|
- **Tool Calling** - Execute built-in and MCP tools
|
|
- **Multiple Output Formats** - plain, json, stream-json
|
|
|
|
### Agent Mode Usage
|
|
|
|
```bash
|
|
# Simple agent command
|
|
swiftopenai agent "Calculate 25 * 37 and tell me today's date"
|
|
|
|
# With specific model
|
|
swiftopenai agent "Explain quantum computing" --model gpt-5
|
|
|
|
# Interactive mode
|
|
swiftopenai agent --interactive
|
|
|
|
# With MCP tools
|
|
swiftopenai agent "Read config.json" \
|
|
--mcp-servers filesystem \
|
|
--allowed-tools "mcp__filesystem__*"
|
|
```
|
|
|
|
## Common Configuration Commands
|
|
|
|
### View Current Configuration
|
|
|
|
```bash
|
|
swiftopenai config list
|
|
```
|
|
|
|
### Get Specific Setting
|
|
|
|
```bash
|
|
swiftopenai config get default-model
|
|
swiftopenai config get provider
|
|
```
|
|
|
|
### Set Configuration Values
|
|
|
|
```bash
|
|
swiftopenai config set <key> <value>
|
|
```
|
|
|
|
### Interactive Configuration Setup
|
|
|
|
```bash
|
|
swiftopenai config setup
|
|
```
|
|
|
|
## Temperature and Parameters
|
|
|
|
Control response randomness and behavior:
|
|
|
|
```bash
|
|
# Set default temperature (0.0-2.0)
|
|
swiftopenai config set temperature 0.7
|
|
|
|
# Override per command
|
|
swiftopenai chat "Write a poem" --temperature 1.5
|
|
|
|
# Set max tokens
|
|
swiftopenai config set max-tokens 2000
|
|
```
|
|
|
|
## Managing Multiple Provider API Keys
|
|
|
|
### Best Practice: Use Provider-Specific Environment Variables
|
|
|
|
To seamlessly use multiple providers without constantly reconfiguring API keys, set all provider keys as environment variables in your shell profile.
|
|
|
|
**Add to `~/.zshrc` or `~/.bashrc`:**
|
|
|
|
```bash
|
|
# API Keys for LLM Providers
|
|
export OPENAI_API_KEY=sk-...
|
|
export XAI_API_KEY=xai-...
|
|
export GROQ_API_KEY=gsk_...
|
|
export DEEPSEEK_API_KEY=sk-...
|
|
export OPENROUTER_API_KEY=sk-or-v1-...
|
|
```
|
|
|
|
**Benefits:**
|
|
- ✅ All keys available at once
|
|
- ✅ Automatic key selection based on provider
|
|
- ✅ No need to reconfigure when switching providers
|
|
- ✅ Keys persist across terminal sessions
|
|
- ✅ More secure than storing in config file
|
|
|
|
**After adding, reload your shell:**
|
|
```bash
|
|
source ~/.zshrc # or source ~/.bashrc
|
|
```
|
|
|
|
### How SwiftOpenAI-CLI Selects API Keys
|
|
|
|
When you configure a provider, SwiftOpenAI-CLI uses this priority:
|
|
|
|
1. **Provider-specific environment variable** (e.g., `XAI_API_KEY` for Grok)
|
|
2. Config file `api-key` setting (if set)
|
|
3. Generic `OPENAI_API_KEY` fallback (for OpenAI provider only)
|
|
|
|
**Example Flow:**
|
|
```bash
|
|
# Configure for Grok
|
|
swiftopenai config set provider xai
|
|
|
|
# CLI automatically uses XAI_API_KEY environment variable
|
|
swiftopenai agent "Hello, world!"
|
|
|
|
# Switch to OpenAI
|
|
swiftopenai config set provider ""
|
|
|
|
# CLI automatically uses OPENAI_API_KEY environment variable
|
|
swiftopenai agent "Hello, world!"
|
|
```
|
|
|
|
### Config File Limitation
|
|
|
|
The config file (`~/.swiftopenai/config.json`) only stores **ONE** api-key value. If you use `swiftopenai config set api-key <key>`, it will be used for **all providers** (unless overridden by a provider-specific env var).
|
|
|
|
This is why environment variables are recommended for multiple providers.
|
|
|
|
## Debug Mode
|
|
|
|
Enable debug mode to see HTTP details:
|
|
|
|
```bash
|
|
swiftopenai config set debug true
|
|
```
|
|
|
|
Shows:
|
|
- HTTP status codes and headers
|
|
- Full API requests (when built in debug mode)
|
|
- Response details
|
|
|
|
## Troubleshooting
|
|
|
|
### Authentication Errors
|
|
|
|
- Verify API key is set correctly
|
|
- Check environment variable is exported
|
|
- Ensure provider configuration matches your API key
|
|
|
|
### Model Not Available
|
|
|
|
- Verify model name is correct for the provider
|
|
- Use `swiftopenai models` to list available models
|
|
- Check provider documentation for model availability
|
|
|
|
### Connection Issues
|
|
|
|
- Verify base URL is correct
|
|
- Check network connectivity
|
|
- Ensure API service is operational
|