feat: integrate LiteLLM for multi-provider support

使用 LiteLLM 统一接口支持多 LLM 提供商:
- 支持 OpenAI, Anthropic, Gemini, Ollama 等 100+ 提供商
- 统一模型配置 (MODEL_CONFIG)
- 新增 /models 端点列出可用模型
- 统计增加提供商分布
- 简化代码,移除 OpenAI 客户端初始化
This commit is contained in:
2026-04-17 23:42:31 +08:00
parent 2380dd4617
commit 4259478a37
4 changed files with 117 additions and 69 deletions

View File

@@ -8,31 +8,38 @@ from dotenv import load_dotenv
# 加载 .env 文件
load_dotenv()
# 模型配置
# 统一模型配置(支持多提供商)
# 格式: "统一模型名": {"provider": "litellm格式", "input_cost": x, "output_cost": y}
MODEL_CONFIG = {
"gpt-3.5-turbo": {
"input_cost_per_1k": 0.0005,
"output_cost_per_1k": 0.0015,
"max_tokens": 4096,
},
"gpt-4o-mini": {
"input_cost_per_1k": 0.00015,
"output_cost_per_1k": 0.0006,
"max_tokens": 128000,
},
"gpt-4o": {
"input_cost_per_1k": 0.005,
"output_cost_per_1k": 0.015,
"max_tokens": 128000,
},
# OpenAI
"gpt-3.5": {"provider": "gpt-3.5-turbo", "input_cost": 0.0005, "output_cost": 0.0015},
"gpt-4o-mini": {"provider": "gpt-4o-mini", "input_cost": 0.00015, "output_cost": 0.0006},
"gpt-4o": {"provider": "gpt-4o", "input_cost": 0.005, "output_cost": 0.015},
# Anthropic
"claude-3-haiku": {"provider": "claude-3-haiku-20240307", "input_cost": 0.00025, "output_cost": 0.00125},
"claude-3-sonnet": {"provider": "claude-3-sonnet-20240229", "input_cost": 0.003, "output_cost": 0.015},
"claude-3-opus": {"provider": "claude-3-opus-20240229", "input_cost": 0.015, "output_cost": 0.075},
# Gemini
"gemini-flash": {"provider": "gemini/gemini-1.5-flash", "input_cost": 0.000075, "output_cost": 0.0003},
"gemini-pro": {"provider": "gemini/gemini-1.5-pro", "input_cost": 0.00125, "output_cost": 0.005},
# 本地/开源
"llama3": {"provider": "ollama/llama3", "input_cost": 0, "output_cost": 0},
}
# 路由阈值
# 路由阈值token 数 -> 推荐模型)
ROUTING_THRESHOLDS = {
"simple": 100, # < 100 tokens -> gpt-3.5-turbo
"medium": 500, # < 500 tokens -> gpt-4o-mini
# >= 500 tokens -> gpt-4o
"simple": 100, # < 100 tokens
"medium": 500, # < 500 tokens
}
# API Key
# 默认模型选择策略
DEFAULT_ROUTING = {
"simple": "gpt-3.5", # 或 "claude-3-haiku", "gemini-flash"
"medium": "gpt-4o-mini", # 或 "claude-3-haiku"
"complex": "gpt-4o", # 或 "claude-3-sonnet", "gemini-pro"
}
# API Keyslitellm 自动读取环境变量)
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY", "")
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "")