Skip to content

LLM Providers

All providers implement a unified interface: generate(prompt: str) -> str.

Base Interface

class Provider:
    url: str           # Base API endpoint URL
    model: str         # Model identifier
    token: str | None  # API key (optional)

    def generate(self, prompt: str) -> str: ...

OpenaiProvider

For OpenAI and Ollama (compatible API).

from sententia.llm import OpenaiProvider

# OpenAI
provider = OpenaiProvider(
    url="https://api.openai.com",
    model="gpt-4",
    token="sk-..."
)

# Ollama (no token)
provider = OpenaiProvider(
    url="http://localhost:11434",
    model="llama3"
)

Calls POST {url}/v1/chat/completions. When token is None, no authorization header is sent (Ollama).

AnthropicProvider

For Anthropic Claude.

from sententia.llm import AnthropicProvider

provider = AnthropicProvider(
    url="https://api.anthropic.com",
    model="claude-3-sonnet",
    token="sk-ant-..."
)

Calls POST {url}/v1/messages. Token is required.

Usage

answer = provider.generate("Your prompt")

Protocol Matching

--llm-protocol Provider Token
openai OpenaiProvider Required
ollama OpenaiProvider Not required
anthropic AnthropicProvider Required