
AI Gateway Pro — 企业级多模型 AI 智能网关统一接入、技能编排、熔断降级、开箱即用一个能把多个 AI 模型厂商OpenAI、豆包、Claude…统一管起来的网关平台带智能体搭建、技能编排、SSE 真流式对话、熔断降级链100% 开源。一、项目简介AI Gateway Pro 是一套企业级 AI 智能网关平台解决的是这么一个痛点公司内部接了好几个 AI 模型厂商每个厂商的 API 格式都不一样接入成本高、切换麻烦、出了问题也没有统一兜底方案。这个项目把 OpenAI、豆包DouBao、Claude 等多个模型厂商统一封装成一套标准接口上层业务只需要关注「用哪个智能体」不用关心背后的模型是谁、API 怎么调、挂了怎么办。项目地址https://gitee.com/happy-youth/ai-gateway-pro技术栈维度技术选型后端框架Spring Boot 4.0.3 Maven 多模块权限安全Spring Security JWT 无状态认证持久层MyBatis 4.0 MySQL 8.0缓存Redis 6.x令牌缓存 / 限流 / 熔断状态前端框架Vue 3 Element Plus Pinia Vite 6流式通信SSEServer-Sent Events真流式非轮询构建工具Maven 3.6 / npm语言Java 17二、能解决什么问题多模型统一接入— 对接一个网关等于对接了 OpenAI、豆包、Claude 等所有模型厂商切换模型不需要改业务代码智能体搭建— 可视化创建 AI 智能体配置 MCP 意图识别、技能工具、兜底回复、收口总结零代码搭建业务 AI 助手技能编排— 支持代码技能、SQL 动态查询、HTTP 外部调用三种技能类型可自由组合带错误隔离熔断降级— 主模型挂了自动切到备用模型支持自定义降级链全部挂掉还有最终友好兜底真 SSE 流式输出— 打字机效果的逐 token 实时推送不是假分块支持深度思考内容流式展示全链路监控— 模型调用统计、技能执行统计、降级日志、Token 用量、用户活跃度一张图看清所有三、核心架构3.1 后端模块架构ai-gateway/ ├── gateway-admin # 管理端入口Controller、拦截器、Swagger、Spring Boot 启动类 ├── gateway-system # 核心业务AI 对话流程、技能编排、MCP 意图识别、熔断降级、统计服务 ├── gateway-framework # 底层支撑Spring Security JWT、Redis 缓存、全局异常处理 ├── gateway-common # 通用工具基础实体、XSS 过滤、Redis/字符串工具类 ├── gateway-quartz # 定时任务cron 表达式调度 └── gateway-generator # 代码生成Velocity 模板自动生成 CRUD模块依赖链admin → system → framework → common3.2 AI 对话流水线用户发送消息后经过一条五步流水线处理用户消息 │ ▼ ┌─────────────────┐ │ 1. 参数验证 │ 校验必填参数加载 Agent 配置 └────────┬────────┘ ▼ ┌─────────────────┐ │ 2. MCP 意图识别 │ LLM 理解用户意图判断是否调用技能提取参数 └────────┬────────┘ ▼ ┌─────────────────┐ │ 3. 参数合并 │ 用户入参 MCP 提取参数 → 合并上下文 └────────┬────────┘ ▼ ┌────┴────┐ │ 需技能 │ └────┬────┘ 是 │ 否 ▼ │ ▼ ┌──────┐│┌──────────────┐ │4a.技能│││4b.兜底回复 │ │ 编排 │││ DefaultProcessor │ Skill │││ 直接用 LLM 回答 │ Exec. ││└──────┬───────┘ └──┬───┘│ │ ▼ │ │ ┌──────┐│ │ │5.收口 ││ │ │总结 │◄───────┘ │Summary│ 所有结果汇总成自然语言回复 │Processor│ └──┬───┘ ▼ 返回用户每一层MCP / 兜底 / 收口都独立走降级链主模型失败 → 自动切降级模型1 → 降级模型2 → … → 全部失败则返回友好提示。3.3 模型厂商策略模式所有模型厂商通过ModelVendorStrategy接口统一适配ModelVendorStrategy (接口) ├── AbstractModelVendorStrategy (抽象基类共享 HTTP/SSE 逻辑) │ ├── OpenAiModelStrategy — OpenAI 兼容 API │ ├── DouBaoModelStrategy — 豆包大模型 │ └── ClaudeModelStrategy — Claude API │ ModelVendorStrategyFactory — 根据 vendorCode 自动路由到对应策略新增一个模型厂商只需要实现接口不改任何业务代码。3.4 熔断降级机制用户请求 │ ▼ ┌──────────────────────────────────────┐ │ ModelFallbackService │ │ │ │ 模型链: [主模型, 降级1, 降级2, ...] │ │ │ │ │ ▼ │ │ ┌──────────┐ 已熔断 │ │ │CircuitBreaker│ ────是──→ 跳过 │ │ │ Service │ │ │ └────┬─────┘ 否 │ │ ▼ │ │ 调用 LLM ──失败──→ 记录失败次数 │ │ │ │ │ │ 成功 达到阈值 │ │ │ │ │ │ ▼ ▼ │ │ 返回结果 熔断打开 冷却 │ │ │ │ │ ▼ │ │ 尝试下一个模型 │ │ │ │ 全部失败 → 抱歉服务暂不可用 │ └──────────────────────────────────────┘四、数据库设计核心 AI 业务共15 张表表名说明ai_agent智能体配置名称、系统提示词、排序ai_agent_default兜底回复配置绑模型、提示词、降级链ai_agent_param动态参数必填校验、默认值、来源类型ai_agent_summary收口总结配置绑模型、提示词、降级链ai_mcpMCP 意图识别配置绑模型、提示词、降级链ai_model_info模型信息厂商、模型编码、上下文大小、熔断参数ai_model_vendor模型厂商API 地址、密钥、状态ai_skill技能工具代码/SQL/HTTP、超时、中断配置ai_prompt_history提示词版本历史变更记录、新旧对比ai_model_fallback_log降级日志哪个模型挂了、切到哪个、耗时ai_stats_model_daily模型调用日统计Token 用量、成功/失败次数ai_stats_skill_daily技能调用日统计ai_stats_user_daily用户活跃日统计chat_conversation会话管理chat_message消息记录含深度思考内容、Token 用量、执行耗时五、前端页面一览页面路由功能智能体管理/ai/agent创建/编辑智能体配置 MCP、技能、兜底、收口AI 对话/ai/chatSSE 流式聊天深度思考展示对话历史模型厂商/ai/modelVendor管理 OpenAI、豆包、Claude 等厂商接入模型信息/ai/modelInfo管理模型实时熔断状态展示是否熔断、剩余冷却时间MCP 配置/ai/mcp意图识别提示词、降级链配置技能管理/ai/skill代码/SQL/HTTP 三种技能类型含提示词和执行配置提示词历史/ai/promptHistory提示词版本追溯与对比降级日志/ai/fallbackLog模型降级记录查询统计看板/ai/fallbackStats调用统计与图表六、快速开始环境要求JDK 17MySQL 8.0Redis 6.0Maven 3.6Node.js 181. 初始化数据库mysql-uroot-pai-gateway/sql/ai_gateway_pro.sql mysql-uroot-pai-gateway/sql/quartz.sql2. 配置环境变量exportJWT_SECRET$(openssl rand-base6464)exportDB_PASSWORDyour_db_passwordexportREDIS_PASSWORDyour_redis_passwordexportDRUID_PASSWORDyour_druid_monitor_password3. 启动后端cdai-gateway mvn cleaninstall-DskipTestsmvn spring-boot:run-plgateway-admin访问 http://localhost:8080默认账号admin / admin1234. 启动前端cdai-gateway-vuenpminstallnpmrun dev5. 配置模型厂商登录后台 → 模型厂商管理 → 新增厂商如 OpenAI填写 API 地址和密钥 → 模型信息管理 → 新增模型 → 创建智能体 → 开始对话七、项目亮点1. 真正的 SSE 流式输出不是网上那种Thread.sleep(50)假分块。所有流式接口使用RestTemplate.execute()ResponseExtractorBufferedReader.readLine()逐行解析 SSE 事件流实现了逐 token 级别的实时打字机效果同时兼容 OpenAI 格式和豆包原生 Response API 格式。2. 深度思考实时可见在流式输出中模型推理过程reasoning_content会在正文输出前实时推送到前端支持豆包原生reasoning_text.delta事件和 OpenAI 兼容格式的reasoning_content字段。3. 完善的三层降级链MCP 层、兜底层、收口层各自独立配置主模型和降级模型链任何一层调用失败都会自动切到下一个模型。三层之间互不干扰即使 MCP 层和收口层同时挂了也能各自降级。4. 熔断状态实时可视化模型管理列表中直接展示每个模型的实时熔断状态是否已熔断、剩余冷却秒数管理员无需查日志就知道哪些模型当前不可用。5. 零代码创建技能支持三种技能类型代码技能Type 1实现SkillCodeExecutor接口标注Service(方法名)自动注册SQL 技能Type 2配置 SQL 模板支持#{paramName}占位符动态替换HTTP 技能Type 3配置外部 API 地址自动解析 JSON 响应6. 安全加固所有 API Key 在toString()中自动掩码只显示后 4 位HTTP 请求/响应体日志级别为 DEBUG生产环境不会泄露敏感内容JWT Secret 必须通过环境变量注入启动时校验长度 ≥ 64 字节XSS 过滤器覆盖/ai/**所有 AI 接口7. 完整的对话记录每条消息记录包含对话内容 深度思考过程使用的模型厂商和模型编码输入 / 输出 / 总 Token 消耗执行耗时调用的技能列表MCP 意图识别结果八、技能示例代码技能 — 天气查询Service(weatherQuery)publicclassWeatherQueryExecutorimplementsSkillCodeExecutor{OverridepublicStringexecute(MapString,Objectparams){Stringcity(String)params.get(city);// 调用天气 API 或查询数据库return城市city天气晴温度25°C;}}在技能管理中配置方法名为weatherQuery即可在智能体对话中自动调用。SQL 技能 — 订单查询SELECTorder_id,product_name,amount,statusFROMordersWHEREuser_id#{userId}ANDcreate_time#{startDate}ORDERBYcreate_timeDESCLIMIT10配置 SQL 模板后对话中 MCP 提取参数userId和startDate自动替换执行并返回结果。九、开源协议本项目基于MIT 协议开源可自由使用、修改、商用。欢迎 Star、Fork、PR项目地址https://gitee.com/happy-youth/ai-gateway-pro项目配图十、技术交流欢迎提 Issue 或 PR 参与共建也欢迎在评论区交流 AI 网关相关的技术话题。如果你觉得这个项目有用帮忙点个 Star ⭐感谢支持