Providers

Point DeepDoc at Anthropic, OpenAI, Gemini, Azure, or a local model.

DeepDoc talks to models through LiteLLM, so anything LiteLLM supports works. deepdoc init --provider picks sensible defaults for the common ones.

deepdoc init --provider anthropic
export ANTHROPIC_API_KEY=sk-ant-...
.deepdoc.yaml
llm:
  provider: anthropic
  model: claude-sonnet-4-20250514
  api_key_env: ANTHROPIC_API_KEY

Anthropic has no embedding models. If you enable the chatbot, embeddings come from the local fastembed default or another provider.

deepdoc init --provider openai
export OPENAI_API_KEY=sk-...
.deepdoc.yaml
llm:
  provider: openai
  model: gpt-4o
  api_key_env: OPENAI_API_KEY
deepdoc init --provider gemini
export GEMINI_API_KEY=...
.deepdoc.yaml
llm:
  provider: gemini
  model: gemini/gemini-2.0-flash
  api_key_env: GEMINI_API_KEY

Keep the gemini/ prefix

LiteLLM uses it to route to the Gemini API. Without it you may be routed to Vertex AI, which authenticates differently.

deepdoc init --provider azure
export AZURE_API_KEY=...
.deepdoc.yaml
llm:
  provider: azure
  model: azure/your-deployment-name
  api_key_env: AZURE_API_KEY
  base_url: "https://your-resource.openai.azure.com"
  api_version: "2024-02-01"

Azure needs base_url and api_version as well as the key. DeepDoc says so if either is missing.

deepdoc init --provider ollama
ollama pull llama3.2
.deepdoc.yaml
llm:
  provider: ollama
  model: ollama/llama3.2

No API key, no per-token cost, and nothing leaves your machine. Slower than a hosted model, and quality varies — but for a private repository it is often the right trade.

Any other provider

--provider is not restricted to the list above. Any LiteLLM alias works:

deepdoc init --provider groq
deepdoc config set llm.model "groq/llama-3.3-70b-versatile"
deepdoc config set llm.api_key_env GROQ_API_KEY

Rate limits

If you hit 429s, lower the concurrency:

.deepdoc.yaml
llm:
  rate_limits:
    max_concurrency: 2
    requests_per_minute: 30
    tokens_per_minute: 100000
    adaptive_backoff: true

These apply to documentation generation. The chatbot's answer model is a separate surface and does not read them.

Switching later

deepdoc config set llm.provider openai
deepdoc config set llm.model gpt-4o
deepdoc config set llm.api_key_env OPENAI_API_KEY

Changing the model changes what gets written, so it takes effect on your next generate or update — not on serve.

Next