61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
class LlmConfig:
|
|
class openai:
|
|
class models:
|
|
gpt_4o = "gpt-4o"
|
|
gpt_4_1 = "gpt-4.1"
|
|
|
|
temperatures = {
|
|
"default": 0.7,
|
|
"drone_bot": 0.3,
|
|
"creative": 0.9
|
|
}
|
|
|
|
max_tokens = {
|
|
"default": 2048,
|
|
"summary_bot": 512,
|
|
"explainer": 1024
|
|
}
|
|
|
|
class anthropic:
|
|
class models:
|
|
claude_3_opus = "claude-3-opus"
|
|
claude_3_sonnet = "claude-3-sonnet"
|
|
|
|
temperatures = {
|
|
"default": 0.5,
|
|
"drone_bot": 0.4,
|
|
"research": 0.2
|
|
}
|
|
|
|
max_tokens = {
|
|
"default": 4096,
|
|
"summary_bot": 1024
|
|
}
|
|
|
|
@classmethod
|
|
def get_config(cls, provider: str, model_name: str, temp_name: str = "default", token_preset: str = "default") -> dict:
|
|
if not hasattr(cls, provider):
|
|
raise ValueError(f"Provider '{provider}' not found.")
|
|
|
|
provider_cls = getattr(cls, provider)
|
|
|
|
# Get model value from class (e.g., LlmConfig.openai.models.gpt_4o)
|
|
model_cls = getattr(provider_cls, "models")
|
|
if not hasattr(model_cls, model_name):
|
|
raise ValueError(f"Model '{model_name}' not found under provider '{provider}'.")
|
|
|
|
model = getattr(model_cls, model_name)
|
|
|
|
if temp_name not in provider_cls.temperatures:
|
|
raise ValueError(f"Temperature preset '{temp_name}' not found under provider '{provider}'.")
|
|
|
|
if token_preset not in provider_cls.max_tokens:
|
|
raise ValueError(f"Max token preset '{token_preset}' not found under provider '{provider}'.")
|
|
|
|
return {
|
|
"provider": provider,
|
|
"model": model,
|
|
"temperature": provider_cls.temperatures[temp_name],
|
|
"max_tokens": provider_cls.max_tokens[token_preset]
|
|
}
|