| """Enums for the domain layer.""" |
| from enum import Enum |
|
|
|
|
| class ModelProvider(str, Enum): |
| """LLM model providers.""" |
| OPENAI = "openai" |
| MISTRALAI = "mistralai" |
|
|
|
|
| class ModelName(str, Enum): |
| """Available LLM models.""" |
| |
| GPT_5_PRO = "gpt-5-pro" |
| GPT_4 = "gpt-4" |
| |
| |
| |
| |
| |
| MISTRAL_LARGE = "mistral-large-latest" |
| |
| |
| |
| |
| @property |
| def provider(self) -> ModelProvider: |
| """Get the provider for this model.""" |
| if self.value.startswith("gpt-"): |
| return ModelProvider.OPENAI |
| elif self.value.startswith("mistral-"): |
| return ModelProvider.MISTRALAI |
| raise ValueError(f"Unknown provider for model: {self.value}") |
| |
| @classmethod |
| def list_by_provider(cls, provider: ModelProvider) -> list[str]: |
| """List all models for a given provider.""" |
| return [ |
| model.value for model in cls |
| if model.provider == provider |
| ] |
|
|
|
|
| class AgentType(str, Enum): |
| """Available agent types.""" |
| SIMPLE = "simple" |
| RAG = "rag" |
| TOOLS = "tools" |
| CUSTOM = "custom" |
|
|
|
|