标准格式:provider/model
anthropic/claude-3-5-sonnet-20241022
openai/gpt-4o
gemini/gemini-1.5-pro
openrouter/anthropic/claude-3.5-sonnet实现了智能验证器 (config.py:237-279),支持:
# 冒号格式 → 斜杠格式
"openai:gpt-4o" → "openai/gpt-4o"# 无前缀 → 自动添加提供商
"claude-3-5-sonnet-20241022" → "anthropic/claude-3-5-sonnet-20241022"
"gpt-4o" → "openai/gpt-4o"
"gemini-1.5-pro" → "gemini/gemini-1.5-pro"
"mistral-large" → "mistral/mistral-large"
"qwen-max" → "openai/qwen-max" # 中文模型,常用自定义端点- Claude 系列:包含 "claude" →
anthropic/ - GPT 系列:包含 "gpt" 或以 "o1"/"o3" 开头 →
openai/ - Gemini 系列:包含 "gemini" →
gemini/ - Mistral 系列:包含 "mistral" →
mistral/ - Llama 系列:包含 "llama" →
together_ai/ - 中文模型:qwen/deepseek →
openai/(用于自定义端点) - 未知模型:默认 →
openai/(用于自定义端点)
"CLAUDE-3-5-SONNET" → "anthropic/CLAUDE-3-5-SONNET"
"GPT-4O" → "openai/GPT-4O"- 添加详细的提供商列表和示例
- 包含 OpenRouter 配置
- 说明自动检测功能
- 更新配置示例为标准格式
- 说明 LLM_API_BASE 可留空
- 添加支持格式说明
- 提供多种配置示例
- OpenRouter 完整配置指南
- 常用模型列表
- 费用和功能说明
创建完整的测试套件 (tests/core/test_model_validation.py):
测试覆盖:
- ✅ 标准格式(斜杠)
- ✅ 旧格式转换(冒号)
- ✅ 自动检测(Claude/GPT/Gemini/Mistral)
- ✅ O 系列模型(o1/o3)
- ✅ 中文模型(qwen/deepseek)
- ✅ 大小写不敏感
- ✅ 边界情况(空字符串、空格)
- ✅ 已有前缀不修改
- ✅ OpenRouter 支持
测试结果:9/9 通过 ✅
所有改动完全向后兼容:
# 旧配置仍然有效
LLM_MODEL="claude-3-5-sonnet-20241022" # 自动转换
LLM_MODEL="openai:gpt-4o" # 自动转换
# 新配置推荐格式
LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
LLM_MODEL="openai/gpt-4o"通过 LiteLLM 支持 100+ 提供商:
| 提供商 | 前缀 | 示例模型 |
|---|---|---|
| Anthropic | anthropic/ |
claude-3-5-sonnet-20241022 |
| OpenAI | openai/ |
gpt-4o, gpt-4-turbo, o1-preview |
gemini/ |
gemini-1.5-pro, gemini-flash | |
| Mistral | mistral/ |
mistral-large-latest |
| Azure | azure/ |
your-deployment-name |
| OpenRouter | openrouter/ |
openrouter/anthropic/claude-3.5-sonnet |
| 自定义端点 | openai/ |
配合 LLM_API_BASE 使用 |
# Anthropic 直连
LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
LLM_API_KEY="sk-ant-..."
LLM_API_BASE="" # 留空使用默认
# OpenAI 直连
LLM_MODEL="openai/gpt-4o"
LLM_API_KEY="sk-..."
LLM_API_BASE="" # 留空使用默认LLM_MODEL="openrouter/anthropic/claude-3.5-sonnet"
LLM_API_KEY="sk-or-v1-..."
LLM_API_BASE="https://openrouter.ai/api/v1"LLM_MODEL="openai/qwen-max" # 或任意模型名
LLM_API_KEY="your-key"
LLM_API_BASE="https://your-custom-endpoint.com/v1"src/omni_agent/core/config.py:237-279
- 去除首尾空格
- 冒号替换为斜杠(兼容旧格式)
- 如果已有斜杠,直接返回
- 否则根据模型名称自动检测提供商
- 大小写不敏感匹配
- 空字符串或纯空格:抛出
ValidationError - 未知模型:默认添加
openai/前缀(适用于自定义端点)
- 提供商能力检测:检测模型是否支持 tool calling
- 动态模型列表:从 LiteLLM 获取支持的模型列表
- 配置验证工具:CLI 工具验证配置有效性
建议记录:
- 使用最多的提供商
- 自动检测的频率
- 配置错误的类型
配置类:
src/omni_agent/core/config.py- Settings 类和验证器
配置文件:
.env.example- 配置模板docs/OPENROUTER.md- OpenRouter 指南
文档:
README.md- 快速开始QUICKSTART.md- 详细配置
测试:
tests/core/test_model_validation.py- 单元测试
- 实现模型名称验证器
- 支持旧格式自动转换
- 支持自动提供商检测
- 更新所有配置文件示例
- 创建 OpenRouter 文档
- 编写完整测试套件
- 验证向后兼容性
- 测试 OpenRouter 配置
模型配置已完全标准化,支持:
- ✅ 统一的
provider/model格式 - ✅ 自动格式转换和提供商检测
- ✅ 100+ LLM 提供商支持
- ✅ 完全向后兼容
- ✅ 详细的文档和示例
- ✅ 完整的测试覆盖
用户现在可以使用任意格式配置模型,系统会自动标准化为正确格式。