Files

1 line
38 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "apprentice217/ai-router", "files": {"README.md": {"2068f591a9ba2965fd903e341df0c468351e220d": {"t": 1785746572.0467246, "n": 12871, "h": "7d02c0f101b45828", "c": "# AI-Router 🚀\n\n<p align=\"center\">\n <strong>䌁䞚级 AI 眑关平台 | Enterprise-Level AI Gateway</strong>\n</p>\n\n<p align=\"center\">\n 统䞀接口调甚倚䞪䞻流 AI 暡型支持智胜路由、自劚故障蜬移、实时监控\n</p>\n\n<p align=\"center\">\n <img src=\"https://img.shields.io/badge/Python-3.12-blue\" alt=\"Python\"/>\n <img src=\"https://img.shields.io/badge/FastAPI-0.104+-brightgreen\" alt=\"FastAPI\"/>\n <img src=\"https://img.shields.io/badge/Vue-3.5-green\" alt=\"Vue\"/>\n <img src=\"https://img.shields.io/badge/Docker-latest-blue\" alt=\"Docker\"/>\n <img src=\"https://img.shields.io/badge/License-MIT-yellow\" alt=\"License\"/>\n</p>\n\n---\n\n## 📖 项目简介\n\nAI-Router 是䞀䞪参考 [OpenRouter.ai](https://openrouter.ai/) 讟计的**䌁䞚级 AI 眑关平台**提䟛统䞀的 API 接口来访问倚䞪䞻流 AI 暡型通义千问、智谱AI、DeepSeek、OpenAI 等实现智胜路由、自劚故障蜬移、完善的监控䜓系和 Python SDK 支持。\n\n### 🎯 栞心价倌\n\n| 特性 | 诎明 | 价倌 |\n|------|------|------|\n| 🔌 **即插即甚** | 兌容 OpenAI SDK 栌匏䞀行代码切换暡型 | 零孊习成本 |\n| 🛡 **高可甚讟计** | 智胜重试 + 健康检查 + 自劚 Fallback | 99.9% 可甚性 |\n| 🎯 **智胜路由** | 支持 auto 暡匏成本/速床䌘先 | 成本降䜎 30%+ |\n| 📊 **党铟路监控** | Prometheus + Grafana + TraceId 远螪 | 秒级定䜍问题 |\n| 🚀 **匀发者友奜** | Python SDK + 完敎文档 + 瀺䟋代码 | 5 分钟䞊手 |\n| 💰 **消耗透明** | 实时统计 Token 消耗䞎莹甚 | 成本可控 |\n\n---\n\n## ✹ 功胜特性\n\n### 栞心功胜\n\n- **🀖 倚暡型接入**支持通义千问、智谱AI、DeepSeek 等䞻流倧暡型\n- **💬 圚线对话**支持流匏响应、倚蜮对话、䞊䞋文管理\n- **🔑 API Key 管理**创建、查看、撀销 API Key支持调甚统计\n- **📊 Token 统计**实时统计每次请求的 Token 消耗\n- **🖌 AI 绘囟**支持通义䞇盞、智谱 CogView 等文生囟暡型\n- **💳 圚线充倌**Stripe 支付集成支持䜙额管理\n\n### 高级特性\n\n- **🔀 智胜路由**成本䌘先 / 速床䌘先 / 蜮询策略\n- **♻ 自劚 Fallback**暡型故障自劚切换到倇甚暡型\n- **⏱ 智胜重试**指数退避重试策略\n- **🔒 安党防技**IP 黑名单、请求限流、TraceId 远螪\n- **🔌 插件系统**Web 搜玢、PDF 解析、囟片识别\n- **🗝 BYOK 支持**甚户自垊 API Key盎连暡型\n\n### 监控告譊\n\n- **📈 实时监控**QPS、成功率、错误率、延迟分垃\n- **📉 Prometheus 指标**完敎的䞚务指标富出\n- **📊 Grafana 倧盘**预眮监控仪衚盘\n\n---\n\n## 🛠 技术栈\n\n### 后端技术\n\n| 技术 | 版本 | 诎明 |\n|------|------|------|\n| Python | 3.12+ | 猖皋语蚀 |\n| FastAPI | 0.104+ | 匂步 Web 框架 |\n| SQLAlchemy | 2.0+ | ORM 框架 |\n| Pydantic | 2.0+ | 数据验证 |\n| httpx | 0.25+ | 匂步 HTTP 客户端 |\n| aiomysql | 0.2.0+ | 匂步 MySQL 驱劚 |\n| Redis | 7+ | 猓存 / Session / 分垃匏锁 |\n| LangChain | 0.1+ | AI 暡型集成框架 |\n| Stripe | 10+ | 圚线支付 |\n| Prometheus | 2.48+ | 指标收集 |\n\n### 前端技术\n\n| 技术 | 版本 | 诎明 |\n|------|------|------|\n| Vue | 3.5.17 | 前端框架 |\n| Vite | 7.0.0 | 构建工具 |\n| Ant Design Vue | 4.2.6 | UI 组件库 |\n| Pinia | 3.0.3 | 状态管理 |\n| ECharts | 5.5.0 | 囟衚组件 |\n| Axios | 1.11.0 | HTTP 客户端 |\n| TypeScript | 5.8.0 | 类型安党 |\n\n### 基础讟斜\n\n| 组件 | 诎明 |\n|------|------|\n| Docker + Docker Compose | 容噚化郚眲 |\n| Nginx | 反向代理 / 莟蜜均衡 |\n| Prometheus | 指标存傚 |\n| Grafana | 监控可视化 |\n\n---\n\n## 🏗 系统架构\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│ 客户端层 │\n│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │\n│ │ Java SDK │ │ 前端应甚 │ │ HTTP API │ │ 其他SDK │ │\n│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │\n└────────┌─────────────┌─────────────┌─────────────┌──────────────┘\n │ │ │ │\n â–Œ â–Œ â–Œ â–Œ\n┌─────────────────────────────────────────────────────────────────┐\n│ API 眑关层 │\n│ ┌─────────────────────────────────────────────────────────┐ │\n│ │ 讀证 & 鉎权层 │ │\n│ │ • API Key 验证 • 权限检查 • 配额控制 │ │\n│ └──────────────────────────┬──────────────────────────────┘ │\n│ │ │\n│ ┌──────────────────────────▌──────────────────────────────┐ │\n│ │ 智胜路由层 │ │\n│ │ • 成本䌘先路由 • 速床䌘先路由 • 健康检查 │ │\n│ │ • 自劚 Fallback • 莟蜜均衡 • 暡型映射 │ │\n│ └──────────────────────────┬──────────────────────────────┘ │\n│ │ │\n│ ┌──────────────────────────▌──────────────────────────────┐ │\n│ │ 暡型调甚层 (Spring AI) │ │\n│ │ • 统䞀接口封装 • 流匏响应 • 智胜重试 │ │\n│ │ • 超时控制 • 响应猓存 • 错误倄理 │ │\n│ └───────┬────────────────┬────────────────┬───────────────┘ │\n└──────────┌────────────────┌────────────────┌────────────────────┘\n │ │ │\n â–Œ â–Œ â–Œ\n ┌──────────┐ ┌──────────┐ ┌──────────┐\n │ 通义千问 │ │ 智谱AI │ │ DeepSeek │ ...曎倚暡型\n └──────────┘ └──────────┘ └──────────┘\n```\n\n---\n\n## 📁 项目结构\n\n```\nai-router/\n├── frontend/ # 前端项目 (Vue.js)\n│ ├── src/\n│ │ ├── api/ # API 接口定义\n│ │ ├── components/ # 公共组件\n│ │ ├── layouts/ # 垃局组件\n│ │ ├── pages/ # 页面\n│ │ │ ├── admin/ # 管理员页面\n│ │ │ └── user/ # 甚户页面\n│ │ ├── router/ # 路由配眮\n│ │ └── stores/ # Pinia 状态管理\n│ ├── Dockerfile # 前端 Docker 配眮\n│ └── package.json\n├── python-backend/ # Python 后端项目\n│ ├── app/\n│ │ ├── adapter/ # 暡型适配噚\n│ │ │ ├── dashscope_adapter.py # 通义千问适配噚\n│ │ │ ├── deepseek_adapter.py # DeepSeek 适配噚\n│ │ │ ├── openai_adapter.py # OpenAI 适配噚\n│ │ │ ├── zhipu_adapter.py # 智谱AI 适配噚\n│ │ │ └── adapter_factory.py # 适配噚工厂\n│ │ ├── api/ # API 路由 (Controllers)\n│ │ │ ├── apikey.py # API Key 管理\n│ │ │ ├── chat.py # 对话接口 (OpenAI 兌容)\n│ │ │ ├── image.py # AI 绘囟接口\n│ │ │ └── ...\n│ │ ├── models/ # 数据暡型\n│ │ │ ├── schemas/ # Pydantic 数据暡型\n│ │ │ └── db/ # 数据库实䜓\n│ │ ├── services/ # 䞚务逻蟑\n│ │ │ ├── chat_service.py # 对话服务\n│ │ │ ├── routing_service.py # 路由服务\n│ │ │ ├── health_service.py # 健康检查服务\n│ │ │ └── billing_service.py # 计莹服务\n│ │ ├── strategy/ # 路由策略\n│ │ ├── middleware/ # äž­é—Žä»¶ (讀证、限流等)\n│ │ ├── task/ # 匂步任务 (健康检查等)\n│ │ └── utils/ # 工具类\n│ ├── Dockerfile # 后端 Docker 配眮\n│ ├── requirements.txt # Python 䟝赖\n│ ├── run.py # 启劚脚本\n│ └── main.py # FastAPI 䞻文件\n├── yu-ai-router-sdk/ # Python SDK\n│ ├── yu_ai_router_sdk/\n│ │ ├── client.py # 客户端\n│ │ ├── models.py # 数据暡型\n│ │ └── config.py # 配眮\n│ ├── examples/ # 瀺䟋代码\n│ └── pyproject.toml # Python 项目配眮\n├── sql/ # SQL 脚本\n│ └── create_table.sql # 建衚语句\n├── grafana/ # Grafana 配眮\n│ ├── provisioning/\n│ │ ├── dashboards/ # 监控仪衚板\n│ │ └── datasources/ # 数据源配眮\n├── docker-compose.yml # Docker Compose 配眮\n├── prometheus.yml # Prometheus 配眮\n└── README.md # 项目文档\n```\n\n---\n\n## 🚀 快速匀始\n\n### 环境芁求\n\n- Python 3.12+\n- Node.js 22+\n- MySQL 8.0+\n- Redis 7.0+\n\n### 本地匀发\n\n#### 1. 克隆项目\n\n```bash\ngit clone https://github.com/your-repo/ai-router.git\ncd ai-router\n```\n\n#### 2. 初始化数据库\n\n```bash\n# 执行 SQL 脚本创建数据库和衚\nmysql -u root -p < sql/create_table.sql\n```\n\n#### 3. 配眮 Python 后端\n\n进入后端目圕并创建虚拟环境\n\n```bash\ncd python-backend\npython -m venv venv\nsource venv/bin/activate # Windows: venv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n配眮环境变量创建 `.env` 文件\n\n```bash\n# 数据库配眮\nDATABASE_URL=mysql+aiomysql://root:123456@localhost:3306/yu_ai_router\nREDIS_URL=redis://localhost:6379\n\n# AI 暡型配眮\nDASHSCOPE_API_KEY=your-qwen-api-key\nDEEPSEEK_API_KEY=your-deepseek-api-key\nZHIPU_API_KEY=your-zhipu-api-key\nOPENAI_API_KEY=your-openai-api-key\n\n# Stripe 配眮\nSTRIPE_API_KEY=your-stripe-api-key\n```\n\n#### 4. 启劚后端服务\n\n```bash\npython run.py\n```\n\n访问 APIhttp://localhost:8123/api\n\n#### 5. 启劚前端\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n访问前端页面http://localhost:5173\n\n---\n\n## 🐳 Docker 郚眲\n\n### 䞀键郚眲掚荐\n\n```bash\ndocker-compose up -d\n```\n\n服务访问地址\n\n| 服务 | 地址 |\n|------|------|\n| 前端页面 | http://localhost |\n| 后端 API | http://localhost:8123/api |\n| Prometheus | http://localhost:9090 |\n| Grafana | http://localhost:3000 (admin/admin) |\n\n### 单独构建\n\n```bash\n# 构建后端镜像\ncd python-backend\ndocker build -t ai-router-backend .\n\n# 构建前端镜像\ncd ../frontend\ndocker build -t ai-router-frontend .\n```\n\n---\n\n## 📡 API 䜿甚\n\n### 对话接口兌容 OpenAI 栌匏\n\n```bash\ncurl -X POST \"http://localhost:8123/api/v1/chat/completions\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer sk-your-api-key\" \\\n -d '{\n \"model\": \"qwen-plus\",\n \"messages\": [\n {\"role\": \"user\", \"content\": \"䜠奜\"}\n ],\n \"stream\": true\n }'\n```\n\n### 支持的暡型\n\n| 暡型标识 | 提䟛商 | 诎明 |\n|----------|--------|------|\n| `qwen-plus` | 通义千问 | 增区版性胜曎区 |\n| `qwen-turbo` | 通义千问 | 快速版响应曎快 |\n| `qwen-max` | 通义千问 | 旗舰版支持深床思考 |\n| `glm-4.7` | 智谱AI | 高智胜旗舰暡型 |\n| `glm-4.6` | 智谱AI | 超区性胜暡型 |\n| `glm-4.7-flash` | 智谱AI | 免莹暡型 |\n| `deepseek-chat` | DeepSeek | 对话暡型 |\n| `deepseek-reasoner` | DeepSeek | 支持深床思考 |\n| `deepseek-coder` | DeepSeek | 代码暡型 |\n\n### 智胜路由\n\n```bash\n# 䜿甚 auto 暡匏自劚选择最䌘暡型\ncurl -X POST \"http://localhost:8123/api/v1/chat/completions\" \\\n -H \"Authorization: Bearer sk-your-api-key\" \\\n -d '{\n \"model\": \"auto\",\n \"messages\": [{\"role\": \"user\", \"content\": \"䜠奜\"}],\n \"routing_strategy\": \"cost_first\"\n }'\n```\n\n路由策略\n- `cost_first`成本䌘先选择最䟿宜的健康暡型\n- `latency_first`速床䌘先选择响应最快的暡型\n- `round_robin`蜮询所有健康暡型\n\n---\n\n## 📊 Python SDK\n\n### 安装\n\n```bash\npip install yu-ai-router-sdk\n```\n\n或本地安装\n\n```bash\ncd yu-ai-router-sdk\npip install -e .\n```\n\n### 䜿甚瀺䟋\n\n```python\nfrom yu_ai_router_sdk import AIRouter\n\n# 创建客户端\nclient = AIRouter(\n api_key=\"sk-your-api-key\",\n base_url=\"http://localhost:8123/api\"\n)\n\n# 同步调甚\nresponse = client.chat(\"䜠奜\")\nprint(response)\n\n# 指定暡型\nresponse = client.chat(\"䜠奜\", model=\"qwen-plus\")\nprint(response)\n\n# 流匏调甚\nfor chunk in client.chat_stream(\"讲䞀䞪故事\"):\n print(chunk, end=\"\", flush=True)\n\n# 指定路由策略\nresponse = client.chat(\n \"䜠奜\",\n model=\"auto\",\n routing_strategy=\"cost_first\"\n)\nprint(response)\n```\n\n---\n\n## 📊 监控指标\n\n### Prometheus 指标\n\n| 指标名称 | 类型 | 诎明 |\n|----------|------|------|\n| `ai_gateway_requests_total` | Counter | 请求总数 |\n| `ai_gateway_request_duration` | Histogram | 请求延迟分垃 |\n| `ai_gateway_tokens_total` | Counter | Token 消耗总数 |\n| `ai_gateway_model_health` | Gauge | 暡型健康状态 |\n\n### Grafana 仪衚盘\n\n项目提䟛预眮的 Grafana 仪衚盘`grafana-dashboard.json`包含\n\n- 实时 QPS 曲线\n- 各暡型成功率/错误率\n- Token 消耗趋势\n- 平均延迟分垃\n- 暡型健康状态\n\n---\n\n## 🔧 配眮诎明\n\n### 应甚配眮\n\n圚 `python-backend/.env` 文件䞭配眮\n\n```bash\n# 服务噚配眮\nHOST=0.0.0.0\nPORT=8123\n\n# 数据库配眮\nDATABASE_URL=mysql+aiomysql://root:123456@localhost:3306/yu_ai_router\n\n# Redis 配眮\nREDIS_URL=redis://localhost:6379\n\n# AI 暡型 API Key\nDASHSCOPE_API_KEY=your-qwen-api-key\nDEEPSEEK_API_KEY=your-deepseek-api-key\nZHIPU_API_KEY=your-zhipu-api-key\nOPENAI_API_KEY=your-openai-api-key\n\n# 路由策略\nDEFAULT_ROUTING_STRATEGY=cost_first\nFALLBACK_ENABLED=true\nRETRY_TIMES=3\n\n# Stripe 支付\nSTRIPE_API_KEY=your-stripe-api-key\n```\n\n### 环境变量\n\n| 变量名 | 诎明 | 默讀倌 |\n|--------|------|--------|\n| `DATABASE_URL` | 数据库连接 | - |\n| `REDIS_URL` | Redis 地址 | redis://localhost:6379 |\n| `DASHSCOPE_API_KEY` | 通义千问 Key | - |\n| `DEEPSEEK_API_KEY` | DeepSeek Key | - |\n| `ZHIPU_API_KEY` | 智谱 AI Key | - |\n| `OPENAI_API_KEY` | OpenAI Key | - |\n| `DEFAULT_ROUTING_STRATEGY` | 默讀路由策略 | cost_first |\n| `FALLBACK_ENABLED` | 启甚自劚 Fallback | true |\n| `RETRY_TIMES` | 重试次数 | 3 |\n\n---\n\n## 🗃 数据库讟计\n\n### 栞心衚\n\n| 衚名 | 诎明 |\n|------|------|\n| `user` | 甚户衚 |\n| `api_key` | API Key 衚 |\n| `model_provider` | 暡型提䟛者衚 |\n| `model` | 暡型衚 |\n| `request_log` | 请求日志衚 |\n| `plugin_config` | 插件配眮衚 |\n| `user_provider_key` | 甚户自垊密钥衚BYOK |\n\n---\n\n## 🔐 安党特性\n\n- **API Key 讀证**所有 API 请求需携垊有效的 API Key\n- **请求限流**支持 API Key 级别和 IP 级别的限流\n- **IP 黑名单**可配眮 IP 黑名单防止恶意请求\n- **TraceId 远螪**党铟路远螪䟿于问题排查\n- **HTTPS 支持**建议生产环境启甚 HTTPS\n\n---\n\n## 📝 匀发计划\n\n- [x] 基础功胜甚户系统、对话、API Key 管理\n- [x] 倚暡型接入通义千问、智谱AI、DeepSeek、OpenAI\n- [x] 智胜路由䞎 Fallback\n- [x] 请求限流䞎 IP 黑名单\n- [x] Python SDK\n- [x] Prometheus + Grafana 监控\n- [x] Stripe 圚线支付\n- [x] AI 绘囟功胜\n- [x] 插件系统Web 搜玢、PDF 解析\n- [x] BYOK甚户自垊密钥\n- [ ] Function Calling 支持\n- [ ] Go/Node.js SDK\n\n---\n\n## 🀝 莡献指南\n\n欢迎莡献代码请遵埪以䞋步骀\n\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提亀曎改 (`git commit -m 'Add some AmazingFeature'`)\n4. 掚送到分支 (`git push origin feature/AmazingFeature`)\n5. 发起 Pull Request\n\n---\n\n## 📄 匀源协议\n\n本项目采甚 MIT 协议匀源诊见 [LICENSE](LICENSE) 文件。\n\n---\n\n## 🙏 臎谢\n\n- [FastAPI](https://fastapi.tiangolo.com/) - 匂步 Web 框架\n- [LangChain](https://www.langchain.com/) - AI 暡型集成框架\n- [OpenRouter](https://openrouter.ai/) - 产品讟计参考\n- [Ant Design Vue](https://antdv.com/) - UI 组件库\n- [Prometheus](https://prometheus.io/) - 监控指标收集\n- [Grafana](https://grafana.com/) - 可视化仪衚板\n\n---\n\n<p align=\"center\">\n Made with ❀ by AI Router Contributors\n</p>\n"}, "0e9fd3aa182d290a25ab7d2d8c442d65467aeaba": {"t": 1785765870.811875, "n": 12871, "h": "7d02c0f101b45828", "c": "# AI-Router 🚀\n\n<p align=\"center\">\n <strong>䌁䞚级 AI 眑关平台 | Enterprise-Level AI Gateway</strong>\n</p>\n\n<p align=\"center\">\n 统䞀接口调甚倚䞪䞻流 AI 暡型支持智胜路由、自劚故障蜬移、实时监控\n</p>\n\n<p align=\"center\">\n <img src=\"https://img.shields.io/badge/Python-3.12-blue\" alt=\"Python\"/>\n <img src=\"https://img.shields.io/badge/FastAPI-0.104+-brightgreen\" alt=\"FastAPI\"/>\n <img src=\"https://img.shields.io/badge/Vue-3.5-green\" alt=\"Vue\"/>\n <img src=\"https://img.shields.io/badge/Docker-latest-blue\" alt=\"Docker\"/>\n <img src=\"https://img.shields.io/badge/License-MIT-yellow\" alt=\"License\"/>\n</p>\n\n---\n\n## 📖 项目简介\n\nAI-Router 是䞀䞪参考 [OpenRouter.ai](https://openrouter.ai/) 讟计的**䌁䞚级 AI 眑关平台**提䟛统䞀的 API 接口来访问倚䞪䞻流 AI 暡型通义千问、智谱AI、DeepSeek、OpenAI 等实现智胜路由、自劚故障蜬移、完善的监控䜓系和 Python SDK 支持。\n\n### 🎯 栞心价倌\n\n| 特性 | 诎明 | 价倌 |\n|------|------|------|\n| 🔌 **即插即甚** | 兌容 OpenAI SDK 栌匏䞀行代码切换暡型 | 零孊习成本 |\n| 🛡 **高可甚讟计** | 智胜重试 + 健康检查 + 自劚 Fallback | 99.9% 可甚性 |\n| 🎯 **智胜路由** | 支持 auto 暡匏成本/速床䌘先 | 成本降䜎 30%+ |\n| 📊 **党铟路监控** | Prometheus + Grafana + TraceId 远螪 | 秒级定䜍问题 |\n| 🚀 **匀发者友奜** | Python SDK + 完敎文档 + 瀺䟋代码 | 5 分钟䞊手 |\n| 💰 **消耗透明** | 实时统计 Token 消耗䞎莹甚 | 成本可控 |\n\n---\n\n## ✹ 功胜特性\n\n### 栞心功胜\n\n- **🀖 倚暡型接入**支持通义千问、智谱AI、DeepSeek 等䞻流倧暡型\n- **💬 圚线对话**支持流匏响应、倚蜮对话、䞊䞋文管理\n- **🔑 API Key 管理**创建、查看、撀销 API Key支持调甚统计\n- **📊 Token 统计**实时统计每次请求的 Token 消耗\n- **🖌 AI 绘囟**支持通义䞇盞、智谱 CogView 等文生囟暡型\n- **💳 圚线充倌**Stripe 支付集成支持䜙额管理\n\n### 高级特性\n\n- **🔀 智胜路由**成本䌘先 / 速床䌘先 / 蜮询策略\n- **♻ 自劚 Fallback**暡型故障自劚切换到倇甚暡型\n- **⏱ 智胜重试**指数退避重试策略\n- **🔒 安党防技**IP 黑名单、请求限流、TraceId 远螪\n- **🔌 插件系统**Web 搜玢、PDF 解析、囟片识别\n- **🗝 BYOK 支持**甚户自垊 API Key盎连暡型\n\n### 监控告譊\n\n- **📈 实时监控**QPS、成功率、错误率、延迟分垃\n- **📉 Prometheus 指标**完敎的䞚务指标富出\n- **📊 Grafana 倧盘**预眮监控仪衚盘\n\n---\n\n## 🛠 技术栈\n\n### 后端技术\n\n| 技术 | 版本 | 诎明 |\n|------|------|------|\n| Python | 3.12+ | 猖皋语蚀 |\n| FastAPI | 0.104+ | 匂步 Web 框架 |\n| SQLAlchemy | 2.0+ | ORM 框架 |\n| Pydantic | 2.0+ | 数据验证 |\n| httpx | 0.25+ | 匂步 HTTP 客户端 |\n| aiomysql | 0.2.0+ | 匂步 MySQL 驱劚 |\n| Redis | 7+ | 猓存 / Session / 分垃匏锁 |\n| LangChain | 0.1+ | AI 暡型集成框架 |\n| Stripe | 10+ | 圚线支付 |\n| Prometheus | 2.48+ | 指标收集 |\n\n### 前端技术\n\n| 技术 | 版本 | 诎明 |\n|------|------|------|\n| Vue | 3.5.17 | 前端框架 |\n| Vite | 7.0.0 | 构建工具 |\n| Ant Design Vue | 4.2.6 | UI 组件库 |\n| Pinia | 3.0.3 | 状态管理 |\n| ECharts | 5.5.0 | 囟衚组件 |\n| Axios | 1.11.0 | HTTP 客户端 |\n| TypeScript | 5.8.0 | 类型安党 |\n\n### 基础讟斜\n\n| 组件 | 诎明 |\n|------|------|\n| Docker + Docker Compose | 容噚化郚眲 |\n| Nginx | 反向代理 / 莟蜜均衡 |\n| Prometheus | 指标存傚 |\n| Grafana | 监控可视化 |\n\n---\n\n## 🏗 系统架构\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│ 客户端层 │\n│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │\n│ │ Java SDK │ │ 前端应甚 │ │ HTTP API │ │ 其他SDK │ │\n│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │\n└────────┌─────────────┌─────────────┌─────────────┌──────────────┘\n │ │ │ │\n â–Œ â–Œ â–Œ â–Œ\n┌─────────────────────────────────────────────────────────────────┐\n│ API 眑关层 │\n│ ┌─────────────────────────────────────────────────────────┐ │\n│ │ 讀证 & 鉎权层 │ │\n│ │ • API Key 验证 • 权限检查 • 配额控制 │ │\n│ └──────────────────────────┬──────────────────────────────┘ │\n│ │ │\n│ ┌──────────────────────────▌──────────────────────────────┐ │\n│ │ 智胜路由层 │ │\n│ │ • 成本䌘先路由 • 速床䌘先路由 • 健康检查 │ │\n│ │ • 自劚 Fallback • 莟蜜均衡 • 暡型映射 │ │\n│ └──────────────────────────┬──────────────────────────────┘ │\n│ │ │\n│ ┌──────────────────────────▌──────────────────────────────┐ │\n│ │ 暡型调甚层 (Spring AI) │ │\n│ │ • 统䞀接口封装 • 流匏响应 • 智胜重试 │ │\n│ │ • 超时控制 • 响应猓存 • 错误倄理 │ │\n│ └───────┬────────────────┬────────────────┬───────────────┘ │\n└──────────┌────────────────┌────────────────┌────────────────────┘\n │ │ │\n â–Œ â–Œ â–Œ\n ┌──────────┐ ┌──────────┐ ┌──────────┐\n │ 通义千问 │ │ 智谱AI │ │ DeepSeek │ ...曎倚暡型\n └──────────┘ └──────────┘ └──────────┘\n```\n\n---\n\n## 📁 项目结构\n\n```\nai-router/\n├── frontend/ # 前端项目 (Vue.js)\n│ ├── src/\n│ │ ├── api/ # API 接口定义\n│ │ ├── components/ # 公共组件\n│ │ ├── layouts/ # 垃局组件\n│ │ ├── pages/ # 页面\n│ │ │ ├── admin/ # 管理员页面\n│ │ │ └── user/ # 甚户页面\n│ │ ├── router/ # 路由配眮\n│ │ └── stores/ # Pinia 状态管理\n│ ├── Dockerfile # 前端 Docker 配眮\n│ └── package.json\n├── python-backend/ # Python 后端项目\n│ ├── app/\n│ │ ├── adapter/ # 暡型适配噚\n│ │ │ ├── dashscope_adapter.py # 通义千问适配噚\n│ │ │ ├── deepseek_adapter.py # DeepSeek 适配噚\n│ │ │ ├── openai_adapter.py # OpenAI 适配噚\n│ │ │ ├── zhipu_adapter.py # 智谱AI 适配噚\n│ │ │ └── adapter_factory.py # 适配噚工厂\n│ │ ├── api/ # API 路由 (Controllers)\n│ │ │ ├── apikey.py # API Key 管理\n│ │ │ ├── chat.py # 对话接口 (OpenAI 兌容)\n│ │ │ ├── image.py # AI 绘囟接口\n│ │ │ └── ...\n│ │ ├── models/ # 数据暡型\n│ │ │ ├── schemas/ # Pydantic 数据暡型\n│ │ │ └── db/ # 数据库实䜓\n│ │ ├── services/ # 䞚务逻蟑\n│ │ │ ├── chat_service.py # 对话服务\n│ │ │ ├── routing_service.py # 路由服务\n│ │ │ ├── health_service.py # 健康检查服务\n│ │ │ └── billing_service.py # 计莹服务\n│ │ ├── strategy/ # 路由策略\n│ │ ├── middleware/ # äž­é—Žä»¶ (讀证、限流等)\n│ │ ├── task/ # 匂步任务 (健康检查等)\n│ │ └── utils/ # 工具类\n│ ├── Dockerfile # 后端 Docker 配眮\n│ ├── requirements.txt # Python 䟝赖\n│ ├── run.py # 启劚脚本\n│ └── main.py # FastAPI 䞻文件\n├── yu-ai-router-sdk/ # Python SDK\n│ ├── yu_ai_router_sdk/\n│ │ ├── client.py # 客户端\n│ │ ├── models.py # 数据暡型\n│ │ └── config.py # 配眮\n│ ├── examples/ # 瀺䟋代码\n│ └── pyproject.toml # Python 项目配眮\n├── sql/ # SQL 脚本\n│ └── create_table.sql # 建衚语句\n├── grafana/ # Grafana 配眮\n│ ├── provisioning/\n│ │ ├── dashboards/ # 监控仪衚板\n│ │ └── datasources/ # 数据源配眮\n├── docker-compose.yml # Docker Compose 配眮\n├── prometheus.yml # Prometheus 配眮\n└── README.md # 项目文档\n```\n\n---\n\n## 🚀 快速匀始\n\n### 环境芁求\n\n- Python 3.12+\n- Node.js 22+\n- MySQL 8.0+\n- Redis 7.0+\n\n### 本地匀发\n\n#### 1. 克隆项目\n\n```bash\ngit clone https://github.com/your-repo/ai-router.git\ncd ai-router\n```\n\n#### 2. 初始化数据库\n\n```bash\n# 执行 SQL 脚本创建数据库和衚\nmysql -u root -p < sql/create_table.sql\n```\n\n#### 3. 配眮 Python 后端\n\n进入后端目圕并创建虚拟环境\n\n```bash\ncd python-backend\npython -m venv venv\nsource venv/bin/activate # Windows: venv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n配眮环境变量创建 `.env` 文件\n\n```bash\n# 数据库配眮\nDATABASE_URL=mysql+aiomysql://root:123456@localhost:3306/yu_ai_router\nREDIS_URL=redis://localhost:6379\n\n# AI 暡型配眮\nDASHSCOPE_API_KEY=your-qwen-api-key\nDEEPSEEK_API_KEY=your-deepseek-api-key\nZHIPU_API_KEY=your-zhipu-api-key\nOPENAI_API_KEY=your-openai-api-key\n\n# Stripe 配眮\nSTRIPE_API_KEY=your-stripe-api-key\n```\n\n#### 4. 启劚后端服务\n\n```bash\npython run.py\n```\n\n访问 APIhttp://localhost:8123/api\n\n#### 5. 启劚前端\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n访问前端页面http://localhost:5173\n\n---\n\n## 🐳 Docker 郚眲\n\n### 䞀键郚眲掚荐\n\n```bash\ndocker-compose up -d\n```\n\n服务访问地址\n\n| 服务 | 地址 |\n|------|------|\n| 前端页面 | http://localhost |\n| 后端 API | http://localhost:8123/api |\n| Prometheus | http://localhost:9090 |\n| Grafana | http://localhost:3000 (admin/admin) |\n\n### 单独构建\n\n```bash\n# 构建后端镜像\ncd python-backend\ndocker build -t ai-router-backend .\n\n# 构建前端镜像\ncd ../frontend\ndocker build -t ai-router-frontend .\n```\n\n---\n\n## 📡 API 䜿甚\n\n### 对话接口兌容 OpenAI 栌匏\n\n```bash\ncurl -X POST \"http://localhost:8123/api/v1/chat/completions\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer sk-your-api-key\" \\\n -d '{\n \"model\": \"qwen-plus\",\n \"messages\": [\n {\"role\": \"user\", \"content\": \"䜠奜\"}\n ],\n \"stream\": true\n }'\n```\n\n### 支持的暡型\n\n| 暡型标识 | 提䟛商 | 诎明 |\n|----------|--------|------|\n| `qwen-plus` | 通义千问 | 增区版性胜曎区 |\n| `qwen-turbo` | 通义千问 | 快速版响应曎快 |\n| `qwen-max` | 通义千问 | 旗舰版支持深床思考 |\n| `glm-4.7` | 智谱AI | 高智胜旗舰暡型 |\n| `glm-4.6` | 智谱AI | 超区性胜暡型 |\n| `glm-4.7-flash` | 智谱AI | 免莹暡型 |\n| `deepseek-chat` | DeepSeek | 对话暡型 |\n| `deepseek-reasoner` | DeepSeek | 支持深床思考 |\n| `deepseek-coder` | DeepSeek | 代码暡型 |\n\n### 智胜路由\n\n```bash\n# 䜿甚 auto 暡匏自劚选择最䌘暡型\ncurl -X POST \"http://localhost:8123/api/v1/chat/completions\" \\\n -H \"Authorization: Bearer sk-your-api-key\" \\\n -d '{\n \"model\": \"auto\",\n \"messages\": [{\"role\": \"user\", \"content\": \"䜠奜\"}],\n \"routing_strategy\": \"cost_first\"\n }'\n```\n\n路由策略\n- `cost_first`成本䌘先选择最䟿宜的健康暡型\n- `latency_first`速床䌘先选择响应最快的暡型\n- `round_robin`蜮询所有健康暡型\n\n---\n\n## 📊 Python SDK\n\n### 安装\n\n```bash\npip install yu-ai-router-sdk\n```\n\n或本地安装\n\n```bash\ncd yu-ai-router-sdk\npip install -e .\n```\n\n### 䜿甚瀺䟋\n\n```python\nfrom yu_ai_router_sdk import AIRouter\n\n# 创建客户端\nclient = AIRouter(\n api_key=\"sk-your-api-key\",\n base_url=\"http://localhost:8123/api\"\n)\n\n# 同步调甚\nresponse = client.chat(\"䜠奜\")\nprint(response)\n\n# 指定暡型\nresponse = client.chat(\"䜠奜\", model=\"qwen-plus\")\nprint(response)\n\n# 流匏调甚\nfor chunk in client.chat_stream(\"讲䞀䞪故事\"):\n print(chunk, end=\"\", flush=True)\n\n# 指定路由策略\nresponse = client.chat(\n \"䜠奜\",\n model=\"auto\",\n routing_strategy=\"cost_first\"\n)\nprint(response)\n```\n\n---\n\n## 📊 监控指标\n\n### Prometheus 指标\n\n| 指标名称 | 类型 | 诎明 |\n|----------|------|------|\n| `ai_gateway_requests_total` | Counter | 请求总数 |\n| `ai_gateway_request_duration` | Histogram | 请求延迟分垃 |\n| `ai_gateway_tokens_total` | Counter | Token 消耗总数 |\n| `ai_gateway_model_health` | Gauge | 暡型健康状态 |\n\n### Grafana 仪衚盘\n\n项目提䟛预眮的 Grafana 仪衚盘`grafana-dashboard.json`包含\n\n- 实时 QPS 曲线\n- 各暡型成功率/错误率\n- Token 消耗趋势\n- 平均延迟分垃\n- 暡型健康状态\n\n---\n\n## 🔧 配眮诎明\n\n### 应甚配眮\n\n圚 `python-backend/.env` 文件䞭配眮\n\n```bash\n# 服务噚配眮\nHOST=0.0.0.0\nPORT=8123\n\n# 数据库配眮\nDATABASE_URL=mysql+aiomysql://root:123456@localhost:3306/yu_ai_router\n\n# Redis 配眮\nREDIS_URL=redis://localhost:6379\n\n# AI 暡型 API Key\nDASHSCOPE_API_KEY=your-qwen-api-key\nDEEPSEEK_API_KEY=your-deepseek-api-key\nZHIPU_API_KEY=your-zhipu-api-key\nOPENAI_API_KEY=your-openai-api-key\n\n# 路由策略\nDEFAULT_ROUTING_STRATEGY=cost_first\nFALLBACK_ENABLED=true\nRETRY_TIMES=3\n\n# Stripe 支付\nSTRIPE_API_KEY=your-stripe-api-key\n```\n\n### 环境变量\n\n| 变量名 | 诎明 | 默讀倌 |\n|--------|------|--------|\n| `DATABASE_URL` | 数据库连接 | - |\n| `REDIS_URL` | Redis 地址 | redis://localhost:6379 |\n| `DASHSCOPE_API_KEY` | 通义千问 Key | - |\n| `DEEPSEEK_API_KEY` | DeepSeek Key | - |\n| `ZHIPU_API_KEY` | 智谱 AI Key | - |\n| `OPENAI_API_KEY` | OpenAI Key | - |\n| `DEFAULT_ROUTING_STRATEGY` | 默讀路由策略 | cost_first |\n| `FALLBACK_ENABLED` | 启甚自劚 Fallback | true |\n| `RETRY_TIMES` | 重试次数 | 3 |\n\n---\n\n## 🗃 数据库讟计\n\n### 栞心衚\n\n| 衚名 | 诎明 |\n|------|------|\n| `user` | 甚户衚 |\n| `api_key` | API Key 衚 |\n| `model_provider` | 暡型提䟛者衚 |\n| `model` | 暡型衚 |\n| `request_log` | 请求日志衚 |\n| `plugin_config` | 插件配眮衚 |\n| `user_provider_key` | 甚户自垊密钥衚BYOK |\n\n---\n\n## 🔐 安党特性\n\n- **API Key 讀证**所有 API 请求需携垊有效的 API Key\n- **请求限流**支持 API Key 级别和 IP 级别的限流\n- **IP 黑名单**可配眮 IP 黑名单防止恶意请求\n- **TraceId 远螪**党铟路远螪䟿于问题排查\n- **HTTPS 支持**建议生产环境启甚 HTTPS\n\n---\n\n## 📝 匀发计划\n\n- [x] 基础功胜甚户系统、对话、API Key 管理\n- [x] 倚暡型接入通义千问、智谱AI、DeepSeek、OpenAI\n- [x] 智胜路由䞎 Fallback\n- [x] 请求限流䞎 IP 黑名单\n- [x] Python SDK\n- [x] Prometheus + Grafana 监控\n- [x] Stripe 圚线支付\n- [x] AI 绘囟功胜\n- [x] 插件系统Web 搜玢、PDF 解析\n- [x] BYOK甚户自垊密钥\n- [ ] Function Calling 支持\n- [ ] Go/Node.js SDK\n\n---\n\n## 🀝 莡献指南\n\n欢迎莡献代码请遵埪以䞋步骀\n\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提亀曎改 (`git commit -m 'Add some AmazingFeature'`)\n4. 掚送到分支 (`git push origin feature/AmazingFeature`)\n5. 发起 Pull Request\n\n---\n\n## 📄 匀源协议\n\n本项目采甚 MIT 协议匀源诊见 [LICENSE](LICENSE) 文件。\n\n---\n\n## 🙏 臎谢\n\n- [FastAPI](https://fastapi.tiangolo.com/) - 匂步 Web 框架\n- [LangChain](https://www.langchain.com/) - AI 暡型集成框架\n- [OpenRouter](https://openrouter.ai/) - 产品讟计参考\n- [Ant Design Vue](https://antdv.com/) - UI 组件库\n- [Prometheus](https://prometheus.io/) - 监控指标收集\n- [Grafana](https://grafana.com/) - 可视化仪衚板\n\n---\n\n<p align=\"center\">\n Made with ❀ by AI Router Contributors\n</p>\n"}}}}