| 
							 | 
						 | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						from dataclasses import dataclass | 
					
					
						
						| 
							 | 
						from typing import List, Optional | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						@dataclass | 
					
					
						
						| 
							 | 
						class ModelInfo: | 
					
					
						
						| 
							 | 
						    """ | 
					
					
						
						| 
							 | 
						    Represents metadata for an inference model. | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						    Attributes: | 
					
					
						
						| 
							 | 
						        name: Human‑readable name of the model. | 
					
					
						
						| 
							 | 
						        id: Unique model identifier (HF or routed provider). | 
					
					
						
						| 
							 | 
						        description: Short description of the model's capabilities. | 
					
					
						
						| 
							 | 
						        default_provider: Preferred inference provider | 
					
					
						
						| 
							 | 
						                          ("auto", "groq", "openai", "gemini", "fireworks"). | 
					
					
						
						| 
							 | 
						    """ | 
					
					
						
						| 
							 | 
						    name: str | 
					
					
						
						| 
							 | 
						    id: str | 
					
					
						
						| 
							 | 
						    description: str | 
					
					
						
						| 
							 | 
						    default_provider: str = "auto" | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						AVAILABLE_MODELS: List[ModelInfo] = [ | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Moonshot Kimi‑K2", | 
					
					
						
						| 
							 | 
						        id="moonshotai/Kimi‑K2‑Instruct", | 
					
					
						
						| 
							 | 
						        description="Moonshot AI Kimi‑K2‑Instruct model for code generation and general tasks", | 
					
					
						
						| 
							 | 
						        default_provider="groq" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="DeepSeek V3", | 
					
					
						
						| 
							 | 
						        id="deepseek‑ai/DeepSeek‑V3‑0324", | 
					
					
						
						| 
							 | 
						        description="DeepSeek V3 model for code generation" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="DeepSeek R1", | 
					
					
						
						| 
							 | 
						        id="deepseek‑ai/DeepSeek‑R1‑0528", | 
					
					
						
						| 
							 | 
						        description="DeepSeek R1 model for code generation" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="ERNIE‑4.5‑VL", | 
					
					
						
						| 
							 | 
						        id="baidu/ERNIE‑4.5‑VL‑424B‑A47B‑Base‑PT", | 
					
					
						
						| 
							 | 
						        description="ERNIE‑4.5‑VL model for multimodal code generation with image support" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="MiniMax M1", | 
					
					
						
						| 
							 | 
						        id="MiniMaxAI/MiniMax‑M1‑80k", | 
					
					
						
						| 
							 | 
						        description="MiniMax M1 model for code generation and general tasks" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Qwen3‑235B‑A22B", | 
					
					
						
						| 
							 | 
						        id="Qwen/Qwen3‑235B‑A22B", | 
					
					
						
						| 
							 | 
						        description="Qwen3‑235B‑A22B model for code generation and general tasks" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Qwen3‑235B‑A22B‑Instruct‑2507", | 
					
					
						
						| 
							 | 
						        id="Qwen/Qwen3‑235B‑A22B‑Instruct‑2507", | 
					
					
						
						| 
							 | 
						        description="Qwen3‑235B‑A22B‑Instruct‑2507 model for code generation and general tasks" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Qwen3‑Coder‑480B‑A35B", | 
					
					
						
						| 
							 | 
						        id="Qwen/Qwen3‑Coder‑480B‑A35B‑Instruct", | 
					
					
						
						| 
							 | 
						        description="Qwen3‑Coder‑480B‑A35B‑Instruct model for advanced code generation" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Qwen3‑32B", | 
					
					
						
						| 
							 | 
						        id="Qwen/Qwen3‑32B", | 
					
					
						
						| 
							 | 
						        description="Qwen3‑32B model for large‑scale code and general tasks" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="SmolLM3‑3B", | 
					
					
						
						| 
							 | 
						        id="HuggingFaceTB/SmolLM3‑3B", | 
					
					
						
						| 
							 | 
						        description="SmolLM3‑3B model for code generation and general tasks" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="GLM‑4.1V‑9B‑Thinking", | 
					
					
						
						| 
							 | 
						        id="THUDM/GLM‑4.1V‑9B‑Thinking", | 
					
					
						
						| 
							 | 
						        description="GLM‑4.1V‑9B‑Thinking model for multimodal code generation with image support" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="OpenAI GPT‑4", | 
					
					
						
						| 
							 | 
						        id="openai/gpt‑4", | 
					
					
						
						| 
							 | 
						        description="OpenAI GPT‑4 via HF Inference Providers", | 
					
					
						
						| 
							 | 
						        default_provider="openai" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Gemini Pro", | 
					
					
						
						| 
							 | 
						        id="gemini/pro", | 
					
					
						
						| 
							 | 
						        description="Google Gemini Pro via HF Inference Providers", | 
					
					
						
						| 
							 | 
						        default_provider="gemini" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						    ModelInfo( | 
					
					
						
						| 
							 | 
						        name="Fireworks AI", | 
					
					
						
						| 
							 | 
						        id="fireworks‑ai/fireworks‑v1", | 
					
					
						
						| 
							 | 
						        description="Fireworks AI via HF Inference Providers", | 
					
					
						
						| 
							 | 
						        default_provider="fireworks" | 
					
					
						
						| 
							 | 
						    ), | 
					
					
						
						| 
							 | 
						] | 
					
					
						
						| 
							 | 
						
 | 
					
					
						
						| 
							 | 
						def find_model(identifier: str) -> Optional[ModelInfo]: | 
					
					
						
						| 
							 | 
						    """ | 
					
					
						
						| 
							 | 
						    Lookup a model by its human name (case‑insensitive) or identifier. | 
					
					
						
						| 
							 | 
						 | 
					
					
						
						| 
							 | 
						    Returns: | 
					
					
						
						| 
							 | 
						        The matching ModelInfo or None if not found. | 
					
					
						
						| 
							 | 
						    """ | 
					
					
						
						| 
							 | 
						    identifier_lower = identifier.lower() | 
					
					
						
						| 
							 | 
						    for m in AVAILABLE_MODELS: | 
					
					
						
						| 
							 | 
						        if m.id == identifier or m.name.lower() == identifier_lower: | 
					
					
						
						| 
							 | 
						            return m | 
					
					
						
						| 
							 | 
						    return None | 
					
					
						
						| 
							 | 
						
 |