flakestorm/docs/LLM_PROVIDERS.md

85 lines
2.4 KiB
Markdown

# LLM Providers and API Keys
Flakestorm uses an LLM to generate adversarial prompt mutations. You can use a local model (Ollama) or cloud APIs (OpenAI, Anthropic, Google Gemini).
## Configuration
In `flakestorm.yaml`, the `model` section supports:
```yaml
model:
provider: ollama # ollama | openai | anthropic | google
name: qwen3:8b # model name (e.g. gpt-4o-mini, claude-3-5-sonnet, gemini-2.0-flash)
api_key: ${OPENAI_API_KEY} # required for non-Ollama; env var only
base_url: null # optional; for Ollama default is http://localhost:11434
temperature: 0.8
```
## API Keys (Environment Variables Only)
**Literal API keys are not allowed in config.** Use environment variable references only:
- **Correct:** `api_key: "${OPENAI_API_KEY}"`
- **Wrong:** Pasting a key like `sk-...` into the YAML
If you use a literal key, Flakestorm will fail with:
```
Error: Literal API keys are not allowed in config.
Use: api_key: "${OPENAI_API_KEY}"
```
Set the variable in your shell or in a `.env` file before running:
```bash
export OPENAI_API_KEY="sk-..."
flakestorm run
```
## Providers
| Provider | `name` examples | API key env var |
|----------|-----------------|-----------------|
| **ollama** | `qwen3:8b`, `llama3.2` | Not needed |
| **openai** | `gpt-4o-mini`, `gpt-4o` | `OPENAI_API_KEY` |
| **anthropic** | `claude-3-5-sonnet-20241022` | `ANTHROPIC_API_KEY` |
| **google** | `gemini-2.0-flash`, `gemini-1.5-pro` | `GOOGLE_API_KEY` (or `GEMINI_API_KEY`) |
Use `provider: google` for Gemini models (Google is the provider; Gemini is the model family).
## Optional Dependencies
Ollama is included by default. For cloud providers, install the optional extra:
```bash
# OpenAI
pip install flakestorm[openai]
# Anthropic
pip install flakestorm[anthropic]
# Google (Gemini)
pip install flakestorm[google]
# All providers
pip install flakestorm[all]
```
If you set `provider: openai` but do not install `flakestorm[openai]`, Flakestorm will raise a clear error telling you to install the extra.
## Custom Base URL (OpenAI-compatible)
For OpenAI, you can point to a custom endpoint (e.g. proxy or local server):
```yaml
model:
provider: openai
name: gpt-4o-mini
api_key: ${OPENAI_API_KEY}
base_url: "https://my-proxy.example.com/v1"
```
## Security
- Never commit config files that contain literal API keys.
- Use env vars only; Flakestorm expands `${VAR}` at runtime and does not log the resolved value.