Spaces:
Sleeping
Sleeping
| """ | |
| In LLMs, you are querying a probabilistic text engine. | |
| If you ask it for an age, it might give you 25, or it might give you "Twenty-five", or it might say "Based on the data, the user is 25 years old." | |
| If your system expects 25 but gets a whole sentence, your code crashes in production. | |
| **Schemas act as the bouncers at the door of your application. We use Pydantic to define the exact shape of the data we expect.** | |
| """ | |
| from pydantic import BaseModel, Field | |
| from typing import Dict, Any, Optional | |
| # 1. THE CONFIGURATION SCHEMA | |
| # This dictates how our router behaves. Notice how we set smart defaults. | |
| class RouterConfig(BaseModel): | |
| """Configuration for how the OmniRouter should route the request.""" | |
| provider: str = Field( | |
| default="openai", | |
| description="The LLM provider to use (e.g., 'openai', 'anthropic', 'local')" | |
| ) | |
| model: str = Field( | |
| default="gpt-4-turbo", | |
| description="The specific model string to use" | |
| ) | |
| # Defensive Engineering: An LLM temperature cannot be less than 0 or greater than 2. | |
| # ge = greater than or equal to, le = less than or equal to. | |
| temperature: float = Field( | |
| default=0.7, | |
| ge=0.0, | |
| le=2.0, | |
| description="Creativity score for the model" | |
| ) | |
| max_retries: int = Field( | |
| default=3, | |
| description="How many times to retry on API failure or rate limit" | |
| ) | |
| # --- NEW CAPABILITY --- Added | |
| fallback_provider: Optional[str] = Field( | |
| default=None, | |
| description="If the primary provider completely fails, switch to this one" | |
| ) | |
| fallback_model: Optional[str] = Field( | |
| default=None, | |
| description="The model to use for the fallback provider" | |
| ) | |
| # 2. THE STANDARDIZED OUTPUT SCHEMA | |
| # This solves the main pain point from our README. | |
| # Whether OpenAI or Anthropic answers, the rest of our app gets THIS exact object. | |
| class LLMResponse(BaseModel): | |
| """The standardized output format returned from ANY provider.""" | |
| content: str = Field(description="The actual text response generated by the LLM") | |
| provider_used: str = Field(description="Which provider actually generated this response") | |
| model_used: str = Field(description="The specific model used") | |
| # We track tokens heavily for cost optimization (Week 14 concept) | |
| prompt_tokens: int = Field(default=0, description="Tokens used in the prompt") | |
| completion_tokens: int = Field(default=0, description="Tokens used in the completion") | |
| # We will calculate this automatically later | |
| cost_estimate: float = Field(default=0.0, description="Estimated cost of this call in USD") |