class ModelRouter:
def __init__(self):
self.rules = {
"simple_qa": "gpt-4o-mini",
"translation": "gemini-flash-8b",
"code_generation": "claude-3.5-sonnet",
"complex_reasoning": "claude-4-opus",
"creative_writing": "gpt-4",
"data_extraction": "gpt-4o-mini"
}
def select_model(self, task_type: str, complexity: float) -> str:
"""根据任务类型和复杂度选择模型"""
# 简单任务直接使用便宜模型
if complexity < 0.3:
return "gemini-flash-8b"
# 中等复杂度查找规则
if complexity < 0.7:
return self.rules.get(task_type, "gpt-4o-mini")
# 高复杂度使用高端模型
return self.rules.get(task_type, "claude-4-opus")
def estimate_cost(self, model: str, input_tokens: int, output_tokens: int) -> float:
"""估算成本"""
pricing = {
"gemini-flash-8b": {"input": 0.0000375, "output": 0.00015},
"gpt-4o-mini": {"input": 0.00015, "output": 0.0006},
"claude-3.5-sonnet": {"input": 0.003, "output": 0.015},
"claude-4-opus": {"input": 0.015, "output": 0.075}
}
model_price = pricing.get(model, pricing["gpt-4o-mini"])
return (input_tokens * model_price["input"] +
output_tokens * model_price["output"]) / 1000