# aiproxy
**Repository Path**: NovemberRain/aiproxy
## Basic Information
- **Project Name**: aiproxy
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-20
- **Last Updated**: 2025-12-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
AI Proxy
新一代 AI 网关,采用 OpenAI 兼容协议
[](https://github.com/labring/aiproxy/releases)
[](https://github.com/labring/aiproxy/blob/main/LICENSE)
[](https://github.com/labring/aiproxy/blob/main/core/go.mod)
[](https://github.com/labring/aiproxy/actions)
[English](./README.md) | [简体中文](./README.zh.md)
---
## 🚀 项目概述
AI Proxy 是一个强大的、生产就绪的 AI 网关,提供智能请求路由、全面监控和无缝多租户管理。基于 OpenAI、Anthropic 和 Gemini 兼容协议构建,是需要可靠性、可扩展性和高级功能的 AI 应用的完美中间件。
## ✨ 核心特性
### 🔄 **智能请求管理**
- **智能重试机制**:智能重试策略与自动错误恢复
- **基于优先级的渠道选择**:根据渠道优先级和错误率路由请求
- **负载均衡**:高效地在多个 AI 提供商之间分配流量
- **协议转换**:在 OpenAI Chat Completions、Claude Messages、Gemini 和 OpenAI Responses API 之间无缝转换
- Chat/Claude/Gemini → Responses API:使用任意协议访问仅支持 Responses 的模型
### 📊 **全面监控与分析**
- **实时告警**:余额预警、错误率和异常等主动通知
- **详细日志**:完整的请求/响应跟踪和审计轨迹
- **高级分析**:请求量、错误统计、RPM/TPM 指标和成本分析
- **渠道性能**:错误率分析和性能监控
### 🏢 **多租户架构**
- **组织隔离**:不同组织间的完全分离
- **灵活访问控制**:基于令牌的身份验证和子网限制
- **资源配额**:每组的 RPM/TPM 限制和使用配额
- **自定义定价**:每组模型定价和计费配置
### 🤖 **MCP (模型上下文协议) 支持**
- **公共 MCP 服务器**:开箱即用的 MCP 集成
- **组织 MCP 服务器**:组织专用的私有 MCP 服务器
- **嵌入式 MCP**:带配置模板的内置 MCP 服务器
- **OpenAPI 转 MCP**:自动将 OpenAPI 规范转换为 MCP 工具
### 🔌 **插件系统**
- **缓存插件**:高性能缓存,支持 Redis/内存存储,用于相同请求
- **网络搜索插件**:实时网络搜索功能,支持 Google、Bing 和 Arxiv
- **思考模式插件**:支持推理模型的内容分割,自动处理 `` 标签
- **流式伪装插件**:通过内部流式传输避免非流式请求超时问题
- **可扩展架构**:易于添加自定义插件以实现额外功能
### 🔧 **高级功能**
- **多格式支持**:文本、图像、音频和文档处理
- **模型映射**:灵活的模型别名和路由
- **提示词缓存**:智能缓存和计费支持
- **思考模式**:支持推理模型的内容分割
- **内置分词器**:无需外部 tiktoken 依赖
## 📊 管理面板
AI Proxy 提供了一个管理面板,用于管理 AI Proxy 的配置和监控。


## 🏗️ 架构图
```mermaid
graph TB
Client[客户端应用] --> Gateway[AI Proxy 网关]
Gateway --> Auth[身份验证与授权]
Gateway --> Router[智能路由器]
Gateway --> Monitor[监控与分析]
Gateway --> Plugins[插件系统]
Plugins --> CachePlugin[缓存插件]
Plugins --> SearchPlugin[网络搜索插件]
Plugins --> ThinkSplitPlugin[思考模式插件]
Plugins --> StreamFakePlugin[流式伪装插件]
Router --> Provider1[OpenAI]
Router --> Provider2[Anthropic]
Router --> Provider3[Azure OpenAI]
Router --> ProviderN[其他提供商]
Gateway --> MCP[MCP 服务器]
MCP --> PublicMCP[公共 MCP]
MCP --> GroupMCP[组织 MCP]
MCP --> EmbedMCP[嵌入式 MCP]
Monitor --> Alerts[告警系统]
Monitor --> Analytics[分析仪表板]
Monitor --> Logs[审计日志]
```
## 🚀 快速开始
### Docker(推荐)
```bash
# 使用默认配置快速启动
docker run -d \
--name aiproxy \
-p 3000:3000 \
-v $(pwd)/aiproxy:/aiproxy \
-e ADMIN_KEY=your-admin-key \
registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:latest
# 夜间构建
docker run -d \
--name aiproxy \
-p 3000:3000 \
-v $(pwd)/aiproxy:/aiproxy \
-e ADMIN_KEY=your-admin-key \
registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:main
```
### Docker Compose
```bash
# 下载 docker-compose.yaml
curl -O https://raw.githubusercontent.com/labring/aiproxy/main/docker-compose.yaml
# 启动服务
docker-compose up -d
```
## 🔧 配置说明
### 环境变量
#### **核心设置**
```bash
LISTEN=:3000 # 服务器监听地址
ADMIN_KEY=your-admin-key # 管理员 API 密钥
```
#### **数据库配置**
```bash
SQL_DSN=postgres://user:pass@host:5432/db # 主数据库
LOG_SQL_DSN=postgres://user:pass@host:5432/log_db # 日志数据库(可选)
REDIS=redis://localhost:6379 # Redis 缓存
```
#### **功能开关**
```bash
BILLING_ENABLED=true # 启用计费功能
SAVE_ALL_LOG_DETAIL=true # 记录所有请求详情
```
### 高级配置
点击展开高级配置选项
#### **配额**
```bash
GROUP_MAX_TOKEN_NUM=100 # 每组最大令牌数
```
#### **日志与保留**
```bash
LOG_STORAGE_HOURS=168 # 日志保留时间(0 = 无限制)
LOG_DETAIL_STORAGE_HOURS=72 # 详细日志保留时间
CLEAN_LOG_BATCH_SIZE=5000 # 日志清理批次大小
```
#### **安全与访问控制**
```bash
IP_GROUPS_THRESHOLD=5 # IP 共享告警阈值
IP_GROUPS_BAN_THRESHOLD=10 # IP 共享禁用阈值
```
## 🔌 插件
AI Proxy 支持插件系统来扩展其功能。当前可用的插件:
### 缓存插件
缓存插件为 AI API 请求提供高性能缓存:
- **双重存储**:支持 Redis 和内存缓存
- **基于内容的键**:使用请求体的 SHA256 哈希
- **可配置 TTL**:缓存项的自定义生存时间
- **大小限制**:通过可配置限制防止内存问题
[查看缓存插件文档](./core/relay/plugin/cache/README.zh.md)
### 网络搜索插件
网络搜索插件添加实时网络搜索功能:
- **多搜索引擎**:支持 Google、Bing 和 Arxiv
- **智能查询重写**:AI 驱动的查询优化
- **引用管理**:自动引用格式化
- **动态控制**:用户可控的搜索深度
[查看网络搜索插件文档](./core/relay/plugin/web-search/README.zh.md)
### 思考模式插件
思考模式插件支持思考模式的内容分割:
- **自动识别**:自动检测响应中的 `...` 标签
- **内容分离**:将思考内容提取到 `reasoning_content` 字段
- **流式支持**:支持流式和非流式响应处理
[查看思考模式插件文档](./core/relay/plugin/thinksplit/README.zh.md)
### 流式伪装插件
流式伪装插件解决非流式请求的超时问题:
- **超时避免**:通过内部流式传输避免长时间等待导致的超时
- **透明转换**:自动将非流式请求转换为流式格式,客户端无感知
- **响应重构**:收集所有流式数据块并重构为完整的非流式响应
- **连接保持**:通过流式传输保持连接活跃,避免网络超时
[查看流式伪装插件文档](./core/relay/plugin/streamfake/README.cn.md)
## 📚 API 文档
### 交互式 API 浏览器
访问 `http://localhost:3000/swagger/index.html` 查看完整的 API 文档和交互示例。
### 快速 API 示例
#### **列出可用模型**
```bash
curl -H "Authorization: Bearer your-token" \
http://localhost:3000/v1/models
```
#### **聊天补全**
```bash
curl -X POST http://localhost:3000/v1/chat/completions \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [{"role": "user", "content": "你好!"}]
}'
```
#### **使用 Claude API**
```bash
# 通过 OpenAI API 格式使用 Claude 模型
curl -X POST http://localhost:3000/v1/messages \
-H "X-Api-Key: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "你好 Claude!"}]
}'
```
## 🔌 集成方案
### Sealos 平台
在 Sealos 上一键部署,享受内置模型能力:
[部署到 Sealos](https://hzh.sealos.run/?openapp=system-aiproxy)
### FastGPT 集成
与 FastGPT 无缝集成,增强 AI 工作流:
[FastGPT 文档](https://doc.tryfastgpt.ai/docs/development/modelconfig/ai-proxy/)
### Claude Code 集成
通过配置以下环境变量在 Claude Code 中使用 AI Proxy:
```bash
export ANTHROPIC_BASE_URL=http://127.0.0.1:3000
export ANTHROPIC_AUTH_TOKEN=sk-xxx
export ANTHROPIC_MODEL=gpt-5
export ANTHROPIC_SMALL_FAST_MODEL=gpt-5-nano
```
### Gemini CLI 集成
通过配置以下环境变量在 Gemini CLI 中使用 AI Proxy:
```bash
export GOOGLE_GEMINI_BASE_URL=http://127.0.0.1:3000
export GEMINI_API_KEY=sk-xxx
```
或者在 Gemini CLI 中使用 `/auth` 命令来输出 `GEMINI_API_KEY`
### Codex 集成
通过配置 `~/.codex/config.toml` 在 Codex 中使用 AI Proxy:
```toml
# 请记住,在 TOML 中,根键必须列在表之前。
model = "gpt-4o"
model_provider = "aiproxy"
[model_providers.aiproxy]
# 提供商名称,将显示在 Codex UI 中。
name = "AIProxy"
# 路径 `/chat/completions` 将被追加到此 URL 以发起 POST
# 请求进行聊天补全。
base_url = "http://127.0.0.1:3000/v1"
# 如果设置了 `env_key`,则标识使用此提供商时必须设置的环境变量。
# 环境变量的值必须非空,并将用于 POST 请求的 `Bearer TOKEN` HTTP 头中。
env_key = "AIPROXY_API_KEY"
# wire_api 的有效值为 "chat" 和 "responses"。如果省略,默认为 "chat"。
wire_api = "chat"
```
**协议转换支持**:
- **仅支持 Responses 的模型**:AI Proxy 自动将 Chat/Claude/Gemini 请求转换为 Responses API 格式,支持仅提供 Responses API 的模型
- **多协议访问**:使用任意协议(Chat Completions、Claude Messages 或 Gemini)访问仅支持 Responses 的模型
- **透明转换**:无需客户端修改 - AI Proxy 自动处理协议转换
### MCP (模型上下文协议)
AI Proxy 提供全面的 MCP 支持,扩展 AI 能力:
- **公共 MCP 服务器**:社区维护的集成
- **组织 MCP 服务器**:私有组织工具
- **嵌入式 MCP**:易于配置的内置功能
- **OpenAPI 转 MCP**:从 API 规范自动生成工具
## 🛠️ 开发指南
### 前置要求
- Go 1.24+
- Node.js 22+(前端开发)
- PostgreSQL(可选,默认 SQLite)
- Redis(可选,用于缓存)
### 从源码构建
```bash
# 克隆仓库
git clone https://github.com/labring/aiproxy.git
cd aiproxy
# 构建前端(可选)
cd web && npm install -g pnpm && pnpm install && pnpm run build && cp -r dist ../core/public/dist/ && cd ..
# 构建后端
cd core && go build -o aiproxy .
# 运行
./aiproxy
```
## 🤝 参与贡献
我们欢迎贡献!请查看我们的[贡献指南](CONTRIBUTING.md)了解详情。
### 贡献方式
- 🐛 报告错误和问题
- 💡 建议新功能
- 📝 改进文档
- 🔧 提交拉取请求
- ⭐ 为仓库点星
## 📄 开源协议
本项目采用 MIT 协议 - 详见 [LICENSE](LICENSE) 文件。
## 🙏 致谢
- OpenAI 提供的 API 规范
- 开源社区的各种集成贡献
- 所有 AI Proxy 的贡献者和用户