Configuration Overview
The no_llm configuration system provides a comprehensive way to define and manage model configurations. This overview will help you understand how the different components work together.
Core Components
The configuration system consists of several key components:
- Model Identity: Basic model information like ID, name, and version
 - Model Mode: Primary function of the model (chat, completion, embedding, etc.)
 - Capabilities: Features supported by the model
 - Constraints: Technical limitations like context window and token limits
 - Properties: Performance and quality metrics
 - Privacy: Compliance and data protection levels
 - Pricing: Cost calculation configuration
 
Built-in Models
no_llm includes configurations for popular models:
Anthropic Models
- Claude 3 (Opus, Sonnet, Haiku)
 - Claude 3.5 (Sonnet, Haiku)
 - Claude 3.7 Sonnet
 
Google Models
- Gemini 1.5 (Pro, Flash)
 - Gemini 2.0 (Pro, Flash, Flash Lite, Flash Thinking)
 - Gemini 2.5 Pro
 
OpenAI Models
- GPT-4 (Base, O, O Mini)
 - GPT-3.5 Turbo
 - O1/O3 Mini
 
Other Providers
- DeepSeek (Chat, Reasoner, R1 Llama 70B)
 - Llama 3 (405B, 70B)
 - Mistral (Large, Nemo)
 - Groq Mixtral
 - Perplexity Sonar (Large, Small)
 
Model Configuration API
from no_llm.config.model import ModelConfiguration
from no_llm.config.enums import ModelMode, ModelCapability
model = ModelConfiguration(
    identity=ModelIdentity(id="gpt-4", name="GPT-4", version="1.0.0"),
    mode=ModelMode.CHAT,
    capabilities={ModelCapability.STREAMING},
    providers=[OpenAIProvider(), AzureProvider()]  # Multiple providers supported
)
# Parameter Management
model.set_parameters(ModelParameters(temperature=0.7))
params = model.get_parameters()  # Get current parameters
new_model = model.from_parameters(temperature=0.8)  # Create new config with parameters
# Capability Checking
model.check_capabilities({ModelCapability.STREAMING})  # Returns bool
model.assert_capabilities({ModelCapability.STREAMING})  # Raises if missing
# Cost Calculation
input_cost, output_cost = model.calculate_cost(
    input_tokens=1000,
    output_tokens=500
)
YAML Configuration
Models can also be configured using YAML files:
identity:
  id: gpt-4
  name: GPT-4
  version: 1.0.0
mode: chat
capabilities: 
  - streaming
  - function_calling
providers:
  - type: openai
    api_key: ${OPENAI_API_KEY}
  - type: azure
    api_key: ${AZURE_API_KEY}
    deployment: gpt4
constraints:
  context_window: 8192
  max_input_tokens: 7000
  max_output_tokens: 4000
Provider Iteration
Models support iterating through providers and their variants (e.g., different locations for cloud providers):
# Iterate through all providers and their variants
for provider in model.iter():
    try:
        response = call_model_with_provider(provider)
        break  # Success, stop trying other providers
    except Exception:
        continue  # Try next provider
For cloud providers like Vertex AI, each location becomes a variant:
vertex_provider = VertexProvider(
    project_id="my-project",
    locations=["us-central1", "europe-west1"]
)
# Will yield a provider instance for each location
for provider in vertex_provider.iter():
    print(provider.current)  # Access current location
See the specific component documentation for detailed information about each configuration aspect.