OpenSynodOpenSynod
Home
  • What is OpenSynod?
  • How It Works
  • Features
  • Screenshots
  • Demo Videos
  • Installation Guide
  • Configuration
  • Under the Hood
Home
  • What is OpenSynod?
  • How It Works
  • Features
  • Screenshots
  • Demo Videos
  • Installation Guide
  • Configuration
  • Under the Hood
  • Under the Hood

    • Architecture
    • Technical Stack
    • Agents
    • Judges / Moderators
    • LLM Providers

LLM Providers

OpenSynod supports four LLM provider categories through a unified abstraction layer. Application code never imports provider SDKs directly — all inference goes through a common interface.

Supported Providers

ProviderModels
AnthropicClaude Opus, Claude Sonnet, Claude Haiku
OpenAIGPT-4o, GPT-4o mini, o3
GoogleGemini 2.5 Pro, Gemini 2.0 Flash
OllamaAny locally-hosted model (Llama, Mistral, Gemma, etc.)

For organizations that cannot send data to cloud providers, Ollama support enables fully air-gapped operation with locally-hosted models.


Provider Abstraction Interface

All providers implement:

async def chat(model, messages, tools, system, max_tokens) -> LLMResponse
async def chat_stream(model, messages, tools, system, max_tokens) -> AsyncIterator[str | ToolCall]

Each provider implementation handles:

  • Tool-use schema translation (Anthropic, OpenAI, and Google each use different formats)
  • Streaming normalization
  • Exponential backoff retry on transient and rate-limit errors (via tenacity)
  • Token counting and cost calculation per pricing tables
  • Timeout and circuit breaker per provider

Model Resolution

The LLM Router maps model name prefixes to provider clients:

Model prefixProvider
claude-*Anthropic
gpt-*, o3*OpenAI
gemini-*Google
Anything elseOllama

Routing is by model-name prefix only — each seat's configured model determines its provider.


Configuring Provider Keys

Set keys in .env:

ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GOOGLE_API_KEY=...
OLLAMA_BASE_URL=http://localhost:11434

Set MOCK_LLM_CALLS=true to replace all calls with canned streaming responses — useful for development and CI without spending API credits.

Contributors: Vijay
Prev
Judges / Moderators