Hermes Agent: 模型配置

最后更新:2026-08-31

模型配置就像选发动机——不同任务用不同引擎,简单问题用省油的,复杂推理用大马力的,Hermes 都能灵活切换。

💡 提示:Hermes 支持模型路由策略,可以根据任务复杂度自动选择最合适的模型,在质量和成本之间取得最佳平衡。

📋 前置知识:第3课 配置文件

1. 你将学到

编号 内容
支持的模型提供商
models.yaml 配置详解
本地模型接入(Ollama/vLLM)
模型路由策略
成本优化技巧

2. 故事

(1) 痛点:GPT-4 太贵,小模型太弱

Bob 用 GPT-4 处理所有任务,每月 API 费用 200+ USD。但 80% 的任务其实用 GPT-4o-mini 就够了。而 Alice 用模型路由,简单任务自动用小模型,复杂推理才用大模型,费用降到 40 USD。

(2) 解法:智能模型路由

YAML
# Alice 的模型路由配置
routing:
  simple_tasks: "gpt-4o-mini"      # 简单问答、翻译
  medium_tasks: "gpt-4o"            # 代码生成、分析
  complex_tasks: "gpt-4o"           # 复杂推理、规划
  code_execution: "claude-3.5-sonnet"  # 代码专用
  fallback: "llama3.2"              # 离线备用

3. 支持的模型提供商

提供商 模型示例 配置方式
OpenAI gpt-4o, gpt-4o-mini, o1 OPENAI_API_KEY
Anthropic claude-3.5-sonnet, claude-3-haiku ANTHROPIC_API_KEY
Google gemini-2.0-flash, gemini-pro GOOGLE_API_KEY
Mistral mistral-large, mistral-small MISTRAL_API_KEY
Ollama (本地) llama3.2, qwen2.5, deepseek 本地服务
vLLM (本地) 任何 HuggingFace 模型 本地服务
OpenRouter 200+ 模型统一接口 OPENROUTER_API_KEY

4. models.yaml 配置详解

YAML
# ~/.hermes/models.yaml

# ===== 模型提供商配置 =====
providers:
  openai:
    api_key: "${OPENAI_API_KEY}"
    base_url: "https://api.openai.com/v1"
    organization: null
    rate_limit: 100         # RPM
    
  anthropic:
    api_key: "${ANTHROPIC_API_KEY}"
    base_url: "https://api.anthropic.com"
    
  ollama:
    base_url: "http://localhost:11434"
    timeout: 120
    
  openrouter:
    api_key: "${OPENROUTER_API_KEY}"
    base_url: "https://openrouter.ai/api/v1"

# ===== 模型定义 =====
models:
  gpt-4o:
    provider: openai
    context_window: 128000
    input_cost: 2.50         # $/M tokens
    output_cost: 10.00
    capabilities:
      - chat
      - vision
      - function_calling
      - json_mode
      
  gpt-4o-mini:
    provider: openai
    context_window: 128000
    input_cost: 0.15
    output_cost: 0.60
    capabilities:
      - chat
      - function_calling
      
  claude-3.5-sonnet:
    provider: anthropic
    context_window: 200000
    input_cost: 3.00
    output_cost: 15.00
    capabilities:
      - chat
      - vision
      - function_calling
      
  llama3.2:
    provider: ollama
    context_window: 128000
    input_cost: 0            # 本地免费
    output_cost: 0
    capabilities:
      - chat
      - function_calling

# ===== 路由策略 =====
routing:
  strategy: "capability-based"   # capability-based / cost-based / manual
  
  rules:
    - condition: "complexity < 0.3"
      model: "gpt-4o-mini"
      
    - condition: "complexity >= 0.3 and complexity < 0.7"
      model: "gpt-4o"
      
    - condition: "complexity >= 0.7"
      model: "claude-3.5-sonnet"
      
    - condition: "task_type == 'code'"
      model: "claude-3.5-sonnet"
      
    - condition: "offline == true"
      model: "llama3.2"

5. 本地模型接入

(1) Ollama 集成

YAML
# 配置 Ollama
providers:
  ollama:
    base_url: "http://localhost:11434"
    timeout: 120

models:
  llama3.2:
    provider: ollama
    context_window: 128000
    
  qwen2.5-coder:
    provider: ollama
    context_window: 128000
BASH
# 先安装并启动 Ollama
ollama pull llama3.2
ollama pull qwen2.5-coder

# Hermes 自动发现 Ollama 模型
hermes model list --provider ollama

(2) vLLM 集成

YAML
providers:
  vllm:
    base_url: "http://localhost:8000"
    api_format: "openai"     # vLLM 兼容 OpenAI API

models:
  deepseek-v3:
    provider: vllm
    model_id: "deepseek-ai/DeepSeek-V3"
    context_window: 128000
BASH
# 启动 vLLM 服务
python -m vllm.entrypoints.openai.api_server \
  --model deepseek-ai/DeepSeek-V3 \
  --port 8000

6. 模型路由策略

(1) 能力路由(推荐)

根据任务类型和复杂度自动选择模型:

PYTHON
# Hermes 内部路由逻辑(简化版)
def select_model(task):
    if task.requires_vision:
        return "gpt-4o"        # 需要视觉能力
    if task.complexity < 0.3:
        return "gpt-4o-mini"   # 简单任务
    if task.type == "code":
        return "claude-3.5-sonnet"  # 代码任务
    return config.default_model     # 默认

(2) 成本路由

在质量达标前提下,优先选择最便宜的模型:

YAML
routing:
  strategy: "cost-based"
  quality_threshold: 0.8    # 最低质量分
  max_cost_per_request: 0.05  # 单次请求最大成本

(3) 手动指定

BASH
# 单次对话指定模型
hermes chat --model gpt-4o

# 代码模式指定
hermes chat --model claude-3.5-sonnet --mode code

# 离线模式
hermes chat --model llama3.2 --offline

7. 成本优化

(1) 成本监控

BASH
# 查看本月消耗
hermes cost report --month

# 输出示例:
# ┌──────────────┬──────────┬───────────┬─────────┐
# │ Model        │ Requests │ Tokens In │ Cost    │
# ├──────────────┼──────────┼───────────┼─────────┤
# │ gpt-4o-mini  │ 1,200    │ 2.4M      │ $2.16   │
# │ gpt-4o       │ 80       │ 0.8M      │ $12.00  │
# │ Total        │ 1,280    │ 3.2M      │ $14.16  │
# └──────────────┴──────────┴───────────┴─────────┘

(2) 优化策略

策略 节省 实现
模型路由 60-80% 简单任务用小模型
缓存响应 10-20% 相同问题不重复调用
本地模型混合 50-90% 离线任务用 Ollama
Token 压缩 15-30% 精简 System Prompt
批量请求 5-10% 合并小请求
YAML
# 成本优化配置
cost_optimization:
  cache_responses: true
  cache_ttl: 3600            # 1小时缓存
  compress_context: true     # 压缩长上下文
  local_for_simple: true     # 简单任务用本地模型

❓ 常见问题

Q 支持多少种模型?
A 200+ 模型,通过 OpenRouter 可访问几乎所有主流模型,加上 Ollama 本地模型无限扩展。
Q 如何同时使用多个 API Key?
A 在 models.yaml 中配置多个 provider,每个有独立的 API Key。路由策略决定用哪个。
Q 模型路由准确吗?
A 能力路由基于任务类型标签和复杂度评分,准确率约 90%。可以手动调整路由规则优化。
Q 本地模型质量够用吗?
A 8B 模型适合简单问答,70B+ 模型接近 GPT-3.5 水平。代码和推理任务建议仍用云端大模型。
Q API Key 安全吗?
A Key 存在本地 .env 文件中,不进入 config.yaml,日志自动脱敏。建议用环境变量而非硬编码。
Q 如何估算每月成本?
A hermes cost estimate --daily-requests 50 --model gpt-4o,根据使用量预估。

📖 小节


📝 作业

  1. 基础题(难度⭐):配置两个模型提供商(如 OpenAI + Ollama),验证都能正常调用。
  2. 进阶题(难度⭐⭐):设置模型路由策略,实现简单问题用 gpt-4o-mini,复杂问题用 gpt-4o。
  3. 挑战题(难度⭐⭐⭐):设计一个成本最优的混合方案,约束月预算 20 USD,计算能支持多少请求。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏