Model Failover Skill 是一个为大语言模型调用提供自动故障转移的技能。当某个 LLM 提供商失败时,它会自动切换到其他提供商,并支持可配置的备用链、速率限制和健康监控,灵感来自 OpenClaw 的模型故障转移系统。
用途
该技能用于在调用 LLM 时实现提供商级别的容错,避免单一提供商故障导致请求失败,通过备用链保证请求尽可能成功。
主要能力
- 自动在多个 LLM 提供商之间切换。
- 支持可配置的备用链(fallback chain)。
- 支持速率限制与健康监控。
- 记录每个提供商的失败次数,便于健康检查。
- 支持添加、移除、列出提供商,以及重置失败计数。
设置方式
在环境变量中配置提供商链:
# 逗号分隔的提供商列表(按备用顺序)
export LLM_PROVIDER_CHAIN="anthropic:claude-3-5-sonnet-20241022,openai:gpt-4o-mini,google:gemini-1.5-flash"
# 各提供商的 API 密钥
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export GOOGLE_API_KEY="..."
使用方式
带自动故障转移的对话:
{baseDir}/model-failover.js chat "Your message here"
向链中添加新提供商:
{baseDir}/model-failover.js add-provider anthropic claude-3-5-sonnet-20241022
从链中移除提供商:
{baseDir}/model-failover.js remove-provider openai
列出链中的提供商:
{baseDir}/model-failover.js list
检查提供商健康状态:
{baseDir}/model-failover.js health
重置失败计数:
{baseDir}/model-failover.js reset
配置项
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| LLM_PROVIDER_CHAIN | 逗号分隔的 provider:model 对 | anthropic:claude-3-5-sonnet-20241022 |
| ANTHROPIC_API_KEY | Anthropic API 密钥 | - |
| OPENAI_API_KEY | OpenAI API 密钥 | - |
| GOOGLE_API_KEY | Google API 密钥 | - |
| CUSTOM_API_KEY | 自定义提供商 API 密钥 | - |
| MAX_RETRIES | 每个提供商的最大重试次数 | 2 |
| RETRY_DELAY_MS | 重试之间的延迟 | 1000 |
提供商格式
provider:model
支持的提供商:
- anthropic - Anthropic Claude 模型
- openai - OpenAI GPT 模型
- google - Google Gemini 模型
- custom - 自定义的 OpenAI 兼容端点(设置 OPENAI_BASE_URL)
工作原理
- 尝试链中的第一个提供商。
- 如果失败(速率限制、错误、超时),等待并重试。
- 如果重试耗尽,则转向下一个提供商。
- 继续直到成功或所有提供商均已耗尽。
- 记录每个提供商的失败次数,用于健康监控。