AIRouter 是一个为大型语言模型(LLM)设计的智能路由工具,通过统一的API接口连接多个LLM提供商(如OpenAI、Anthropic、Google等),实现高效的任务分发。它支持智能负载均衡,根据响应时间、成本和成功率选择最优模型,同时提供实时健康监控和API密钥管理。AIRouter还支持多模态输入(如文本+图像)和函数调用,适用于需要跨模型操作的开发者。项目基于Python开发,支持Docker容器化部署,开箱即用,适合快速集成到生产环境。
功能列表
- 统一API接口:通过单一接口访问多个LLM提供商,包括OpenRouter、DeepInfra、TogetherAI等。
- 智能负载均衡:根据响应时间、成本和成功率,动态分配任务到最优模型。
- 实时健康监控:自动检查API状态,屏蔽不可用或高成本模型。
- 高效API密钥管理:优化密钥使用,提升性能,自动避免失效密钥。
- 多模态支持:处理文本、图像输入和函数调用,满足多样化任务需求。
- 帕累托最优选择:从多个模型中智能选择性能与成本平衡的最佳模型。
- 成本优化:通过健康检查屏蔽功能,降低使用高成本模型的费用。
- 容器化部署:支持Docker部署,简化环境配置和启动流程。
使用帮助
安装与设置
AIRouter 是一个开源的Python项目,支持通过Python包或Docker部署。以下是详细的安装和使用步骤:
1. 环境准备
- 系统要求:安装Python 3.7或以上版本,推荐使用Linux或macOS系统。
- 依赖工具:
- 安装Git:用于克隆代码仓库。
- 安装Docker(可选):用于容器化部署。
- 安装MySQL:用于存储API密钥使用记录。
- 检查Python版本:
python --version
确保版本为3.7或以上。
2. 克隆仓库
- 访问 https://github.com/THESIS-AGENT/AIRouter,复制仓库URL。
- 在终端运行:
git clone https://github.com/THESIS-AGENT/AIRouter.git cd AIRouter
3. 安装依赖
- 方式一:作为Python包安装(推荐):
pip install -e .
- 方式二:直接安装依赖:
pip install -r requirements.txt
4. 配置项目
- 配置API密钥:
- 复制示例配置文件:
cp ew_config/api_keys.example.py ew_config/api_keys_local.py
- 编辑
ew_config/api_keys_local.py
,填入各LLM提供商的真实API密钥。例如:API_KEYS = { "openai": "sk-xxxxxxxxxxxxxxxxxxxx", "anthropic": "sk-ant-xxxxxxxxxxxxxxxx", "google": "AIzaSy-xxxxxxxxxxxxxxxx" }
- 复制示例配置文件:
- 设置数据库:
- 创建MySQL数据库:
CREATE DATABASE airouter; CREATE TABLE api_key_usage ( request_id VARCHAR(50) PRIMARY KEY, api_key VARCHAR(100) NOT NULL, model_name VARCHAR(50) NOT NULL, source_name VARCHAR(50) NOT NULL, prompt_tokens INT, completion_tokens INT, create_time DATETIME NOT NULL, finish_time DATETIME NOT NULL, execution_time FLOAT NOT NULL, status BOOLEAN NOT NULL );
- 复制环境变量文件:
cp env.example .env
- 编辑
.env
文件,填入数据库信息,例如:DB_HOST=localhost DB_USER=root DB_PASSWORD=your_password DB_NAME=airouter DB_PORT=3306
- 创建MySQL数据库:
5. 启动服务
- Docker部署(推荐):
- 构建Docker镜像:
docker build -t airouter:latest .
- 启动服务:
docker-compose up -d
- 检查服务状态:
docker-compose ps
- 构建Docker镜像:
- 手动启动:
- 启动健康检查服务:
python CheckHealthy.py
- 在新终端启动API密钥管理服务:
python -m api_key_manager.main
- 启动健康检查服务:
功能操作流程
1. 基本文本生成
- 使用
LLM_Wrapper
类调用模型生成文本:from LLMwrapper import LLM_Wrapper response = LLM_Wrapper.generate( model_name="gpt4o_mini", prompt="解释量子计算的基本原理" ) print(response)
- 系统会根据负载均衡策略选择最优模型(如OpenAI的gpt4o_mini)执行任务。
2. 多模态输入
- 支持图像和文本输入,例如描述图片内容:
import base64 with open("image.jpg", "rb") as f: img_base64 = base64.b64encode(f.read()).decode() response = LLM_Wrapper.generate_mm( model_name="gpt4o_mini", prompt="描述这张图片的内容", img_base64=img_base64 ) print(response)
- 确保模型支持多模态(如gpt4o_mini),图像需转换为Base64格式。
3. 函数调用
- 配置工具并调用外部函数,例如查询天气:
tools = [ { "type": "function", "function": { "name": "get_weather", "description": "获取天气信息", "parameters": { "type": "object", "properties": { "location": {"type": "string", "description": "城市名称"} }, "required": ["location"] } } } ] response = LLM_Wrapper.function_calling( model_name="gpt4o_mini", prompt="北京今天天气如何?", tools=tools ) print(response)
4. 配置负载均衡
- 支持三种负载均衡模式:
fast_first
:优先选择响应最快的模型。cost_first
:优先选择成本最低的模型。balanced
:平衡速度和成本。
- 示例:
response = LLM_Wrapper.generate( model_name="gpt4o_mini", prompt="你好", mode="cost_first" )
5. 帕累托最优选择
- 从多个模型中选择最优结果:
response = LLM_Wrapper.generate_fromTHEbest( model_list=["gpt4o_mini", "claude35_sonnet", "gemini15_pro"], prompt="复杂推理任务" )
- 系统会根据响应时间和成本自动选择最佳模型。
6. 健康监控与日志
- 检查服务健康状态:
- 访问
http://localhost:8001/check_healthy
查看健康检查服务状态。 - 访问
http://localhost:8002/check_healthy
查看API密钥管理服务状态。
- 访问
- 查看日志:
docker-compose logs -f airouter-health-check tail -f health_check.log
注意事项
- 确保API密钥有效,失效密钥会导致任务失败。
- Docker部署需确保端口(8001、8002)未被占用。
- 定期检查GitHub仓库的更新,获取最新功能和修复。
- 数据库密码(
DB_PASSWORD
)为必填项,缺失会导致启动失败。
应用场景
- 多模型任务分发
开发者需同时使用多个LLM(如OpenAI、Anthropic)完成任务,AIRouter可通过统一接口分发任务,自动选择最优模型,节省开发时间。 - 成本敏感型项目
在预算有限的情况下,AIRouter的成本优化功能可优先选择低成本模型,适合初创公司或个人开发者。 - 多模态应用开发
开发图像描述或多模态聊天应用时,AIRouter支持文本和图像输入,简化开发流程。 - 自动化运维
运维团队可通过健康监控和负载均衡功能,构建稳定的AI服务,减少手动干预。
QA
- AIRouter支持哪些LLM提供商?
支持OpenRouter、DeepInfra、DeerAPI、TogetherAI、Google、OpenAI、Anthropic等多种提供商,具体支持列表可在ew_config/source.py
查看。 - 如何选择最优模型?
使用generate_fromTHEbest
方法,系统会根据帕累托最优算法,综合响应时间、成本和成功率选择最佳模型。 - Docker部署和手动部署有何区别?
Docker部署通过容器化简化环境配置,适合生产环境;手动部署需逐一安装依赖,适合开发调试。 - 如何处理API密钥失效?
AIRouter的密钥管理系统会自动检测失效密钥并切换到可用密钥,需确保api_keys_local.py
中配置多个有效密钥。