4.0 KiB
4.0 KiB
MoA (Mixture of Agents) + NewAPI 参考
最后更新:2026-07-07 测试环境:Hermes v0.17 + NewAPI (http://127.0.0.1:3000/v1)
架构速览
MoA 是 Hermes 的虚拟 provider。参考模型并行分析 → 聚合器综合 → 主模型执行。
走 /moa <preset>: <prompt> 单次模式,或 provider: moa 持久模式。
已验证的 NewAPI 模型(MoA 可用性)
| 模型 | 角色 | 响应时间 | 状态 |
|---|---|---|---|
qwen/qwen3.5-122b-a10b |
参考/聚合器 | ~180ms | ✅ |
minimaxai/minimax-m2.7 |
参考 | ~3.4s | ✅ |
mistralai/mistral-large-3-675b-instruct-2512 |
参考 | ~1s | ✅ |
moonshotai/kimi-k2.6 |
参考 | ~1s | ✅ |
stepfun-ai/step-3.5-flash |
参考 | ~1s | ✅(有 reasoning) |
deepseek-ai/deepseek-v4-pro (via NewAPI) |
— | 超时 >45s | ❌ 不走 NewAPI |
z-ai/glm5 |
— | EOL 2026-05-18 | ❌ |
z-ai/glm-5.1 |
参考 | 未测 | ⬜ 待验证 |
DeepSeek V4 Pro 要走 deepseek provider 直连,不能走 NewAPI。
config.yaml 配置格式
moa:
presets:
expert-panel:
reference_models:
- provider: newapi-local
model: qwen/qwen3.5-122b-a10b
- provider: newapi-local
model: minimaxai/minimax-m2.7
- provider: newapi-local
model: mistralai/mistral-large-3-675b-instruct-2512
aggregator:
provider: newapi-local
model: qwen/qwen3.5-122b-a10b
fanout: user_turn # per_iteration(默认)| user_turn
reference_max_tokens: *** # 顾问输出精简,None=不限制
enabled: true
default_preset: expert-panel
save_traces: false
fanout 模式选择
| 模式 | 行为 | 适用场景 |
|---|---|---|
per_iteration(默认) |
每步工具迭代都重新跑顾问 | 需要持续跟踪变化的任务 |
user_turn |
每轮用户消息只跑一次顾问 | 省 token,只在一开始给方向性建议 |
注意事项
enabled: false的 preset 跳过参考模型,只用聚合器直接回答(相当于选模型)- MoA slot 不能递归引用另一个 MoA preset
newapi-localprovider 配置中的cost_factor/rate_limit/timeout会被 Hermes 忽略(不影响功能)
测试方法
方法 A:通过 MoA 代码直接测试(最快)
from agent.moa_loop import aggregate_moa_context
result = aggregate_moa_context(
user_prompt="<问题>",
api_messages=[{"role": "user", "content": "<问题>"}],
reference_models=[{"provider": "newapi-local", "model": "qwen/qwen3.5-122b-a10b"}],
aggregator={"provider": "newapi-local", "model": "qwen/qwen3.5-122b-a10b"},
max_tokens=4096,
)
print(result)
方法 B:通过 config + reload 用 /moa 命令
# 改完 config.yaml 后不用重启,MoA 配置运行时加载
hermes # 新开 session
# 然后输入:/moa expert-panel: <问题>
方法 C:单独测试模型是否可用(先于 MoA 测试)
TOKEN="sk-0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP"
BASE="http://127.0.0.1:3000/v1"
curl -s --max-time 30 $BASE/chat/completions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"<model-name>","messages":[{"role":"user","content":"hi"}],"max_tokens":10}'
实测性能
一次完整的 MoA 调用(3 个参考模型 + 聚合器):
- 总耗时:~40-45s(主要是参考模型响应,并行调用)
- 参考输出容量:用
reference_max_tokens: 800控制 - 聚合器约 3-5s 综合意见
- 输出格式:
[Mixture of Agents context]块注入主模型
诊断流程
MoA 不工作?
- 先单独测每个模型(方法 C)——确认不是模型本身的问题
- 检查 config.yaml 中
moa:段格式——YAML 缩进错误会让整个段静默忽略 - 检查
providers.newapi-local配置——base_url和model:顶层段是否一致 - 如果报
DEGRADED function错误 → 参考newapi-degraded-function-20260703.md