AIRouter
综合介绍
AIRouter 是一个智能 AI 路由项目,它的核心功能是为多个大语言模型(LLM)供应商提供一个统一的应用程序编程接口(API)。在实际应用中,开发者可能需要同时使用来自不同公司的大模型,例如 OpenAI, Anthropic, 或 Google 的模型。每个模型都有自己独特的 API 格式和调用方式。AIRouter 作为一个中间层,解决了这个问题。它让开发者可以用一种标准化的方式来调用所有这些不同的模型。除了提供统一的接口,AIRouter 还具备智能路由、负载均衡和故障转移等功能。这意味着它可以根据需求自动选择最合适的模型,将请求分发到不同的模型以分担压力,并在某个模型出现故障时自动切换到其他可用的模型,从而保证了 AI 应用的稳定性和可靠性。
功能列表
- 统一的API接口: 无需为每个大语言模型(LLM)编写不同的代码,AIRouter 提供一个统一的接口来调用所有支持的模型。
- 支持多个LLM供应商: 能够集成并管理来自不同供应商的多种大语言模型。
- 智能路由: 能够根据请求的特定需求(例如,成本、速度、特定能力),自动将请求发送到最合适的模型。
- 负载均衡: 将API请求有效地分配给多个模型或模型实例,避免单一模型负载过高,提升应用的并发处理能力和响应速度。
- 故障转移: 自动检测并绕过无响应或出错的模型服务,将请求重新路由到健康的模型实例,从而提高系统的容错能力和稳定性。
- 可扩展的架构: 允许开发者相对容易地添加对新的大语言模型或供应商的支持。
使用帮助
由于 AIRouter 是一个旨在简化多模型管理的工具,其使用流程主要围绕着配置和API调用。以下是详细的使用帮助,旨在让用户能够快速上手。
核心概念
在开始使用前,理解以下几个核心概念非常重要:
- 统一接口 (Unified API): 这是 AIRouter 的核心。无论你背后使用的是 GPT-4, Claude 3, 还是 Llama 3, 你发送给 AIRouter 的请求格式都是一样的。你只需要在请求中指定你想要调用的模型名称,AIRouter 会负责将这个请求转换成特定模型提供商所要求的格式。
- 模型别名 (Model Alias): 在 AIRouter 的配置中,你可以为每一个具体的模型(例如
gpt-4-turbo
)设置一个别名(例如fast_model
)。这样做的好处是,你可以在你的应用程序代码中只使用这个别名。未来如果你想把fast_model
从gpt-4-turbo
更换为其他更快的模型,你只需要修改 AIRouter 的配置文件,而无需改动任何应用程序代码。 - 路由策略 (Routing Strategy): 这是 AIRouter “智能”的体现。你可以配置不同的策略来决定请求应该被发送到哪个模型。
- 负载均衡 (Load Balancing): 如果你将多个模型(或同一模型的多个API密钥)组合在一起,AIRouter 可以轮流或根据权重将请求分发给它们,避免单个API密钥的请求频率超限。
- 故障转移 (Failover): 你可以设置一个主模型和一个或多个备用模型。当主模型因为网络问题、服务宕机或API错误而调用失败时,AIRouter 会自动尝试调用备用模型,这对保证线上服务的稳定性至关重要。
安装与配置
通常,像 AIRouter 这样的项目会作为一个独立的Web服务来部署。你可以将它部署在自己的服务器或云平台上。
- 下载或克隆项目:
git clone https://github.com/THESIS-AGENT/AIRouter.git cd AIRouter
- 安装依赖:根据项目提供的说明(通常是
requirements.txt
或pyproject.toml
文件),安装所有必要的Python库。pip install -r requirements.txt
- 配置文件:项目中最重要的部分是配置文件(通常会是一个
.env
或config.yaml
文件)。你需要在这个文件中填入你的各种大语言模型提供商的API密钥和相关设置。一个简化的config.yaml
示例可能如下:providers: - name: openai api_key: "sk-your_openai_api_key" - name: anthropic api_key: "sk-your_anthropic_api_key" routes: - name: "default_chat" models: - "openai/gpt-4-turbo" - "anthropic/claude-3-opus" strategy: "failover" # 优先使用第一个,失败后使用第二个 - name: "cheap_chat" models: - "openai/gpt-3.5-turbo" strategy: "simple"
运行服务
配置完成后,你可以通过项目提供的命令来启动服务。
python main.py
启动后,AIRouter 会在本地(例如 http://localhost:8000
)监听API请求。
发起API请求
现在,你的应用程序不再需要直接请求 OpenAI 或 Anthropic 的服务器,而是请求你本地部署的 AIRouter 服务。请求的格式会被统一。
例如,一个典型的聊天请求可能如下,这里我们调用了在配置中定义的 default_chat
路由:
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "default_chat",
"messages": [
{
"role": "user",
"content": "请介绍一下什么是第一性原则?"
}
]
}'
AIRouter 收到这个请求后,会根据 default_chat
路由的 failover
策略,首先尝试将请求发送给 openai/gpt-4-turbo
。如果失败,它会自动将请求转发给 anthropic/claude-3-opus
。无论最终是哪个模型成功响应,AIRouter 都会将返回结果以统一的格式回传给你的应用程序。
应用场景
- 提升应用稳定性对于需要提供7x24小时不间断服务的AI应用,单个LLM提供商可能会出现服务中断或性能下降。使用AIRouter的故障转移功能,可以在主模型服务不可用时,自动切换到备用模型,保证了服务的连续性和高可用性。
- 成本与性能优化不同的LLM在处理不同类型的任务时,其成本和响应速度各不相同。例如,处理简单问答时可以使用成本较低的模型,而进行复杂的代码生成或逻辑推理时则切换到性能更强的模型。通过AIRouter的智能路由,可以根据请求内容动态选择性价比最高的模型,从而在保证效果的前提下,最大化地节约成本。
- A/B测试与模型评估当团队想引入一个新的大语言模型时,可以直接将其添加到AIRouter的配置中,并设置一定的流量比例(例如,将10%的请求路由到新模型)。这样可以在生产环境中,以较小的风险对新模型的实际表现进行评估和比较,为技术选型提供数据支持。
- 简化开发与维护在一个团队中,不同的开发者或应用可能需要使用不同的模型。AIRouter提供了一个集中的管理点。所有API密钥和模型配置都统一存放在AIRouter中,而不是分散在各个应用的代码里。当需要更新API密钥或更换模型时,只需在AIRouter中修改一次即可,极大地简化了开发和后续的维护工作。
QA
- AIRouter支持哪些大语言模型供应商?AIRouter旨在通过一个可扩展的框架支持多种LLM供应商。具体支持的列表通常会在项目的文档中明确列出。由于其开放的设计,开发者也可以根据需要自行添加对新供应商的支持。
- 使用AIRouter会增加API调用的延迟吗?会的,因为AIRouter作为中间层,网络请求需要额外经过一次转发。但是,这种延迟通常非常低(在毫秒级别),对于大多数应用场景来说是可以接受的。相比于它带来的稳定性、灵活性和管理上的便利,这点额外的延迟通常是值得的。
- AIRouter如何处理不同模型之间的API差异?这是AIRouter的核心价值所在。它内部包含一个适配器层(Adapter Layer),该层的作用就是将统一的输入请求格式,翻译成目标LLM提供商特定的API请求格式。同样地,它也会将来自不同LLM的、格式各异的响应,统一转换成标准格式再返回给客户端。
- 这个项目是免费的吗?是的,AIRouter 是一个开源项目,托管在GitHub上,任何人都可以免费下载、使用和修改。