多模型统一接入 + 智能体编排 + 真 SSE 流式,这个开源的 AI 网关全干了
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 ⭐感谢支持

相关新闻

AI模型选错=项目延期3个月?资深AI架构师披露开发适配性评估四维矩阵(精度/时延/量化支持/文档完备度)

AI模型选错=项目延期3个月?资深AI架构师披露开发适配性评估四维矩阵(精度/时延/量化支持/文档完备度)

更多请点击: https://kaifayun.com 第一章:AI模型选错项目延期3个月?资深AI架构师披露开发适配性评估四维矩阵(精度/时延/量化支持/文档完备度) 选型失误是AI落地中最隐蔽却最具破坏性的风险。某智能质检项目因选用未…

2026/10/11 2:46:16 阅读更多 →
【性能测试】Jmeter录制脚本及服务器资源监控教程

【性能测试】Jmeter录制脚本及服务器资源监控教程

Jmeter录制测试脚本 windows电脑设置 jmeter/bin文件夹中jmeter的安全证书 谷歌浏览器->隐私与安全->管理证书->上传jmeter安全证书 电脑->设置->代理 Jmeter录制配置 测试计划->非测试元件->Http(s)测试脚本记录器-> 打开windows代理&#xf…

2026/10/3 0:19:27 阅读更多 →
嵌入式USB设备开发实战:从描述符构建到事件回调处理

嵌入式USB设备开发实战:从描述符构建到事件回调处理

1. USB设备开发:从协议栈到应用层如果你正在开发一个嵌入式USB设备,无论是自定义的HID设备、音频设备,还是大容量存储设备,最终都绕不开与USB协议栈的深度交互。USB协议本身很复杂,但幸运的是,成熟的MCU厂商…

2026/9/25 7:07:55 阅读更多 →

最新新闻

SpringBoot+Vue+MySQL健康打卡系统:从设计到部署全解析

SpringBoot+Vue+MySQL健康打卡系统:从设计到部署全解析

最近好几届毕业生都在找我聊毕设选题,问来问去,出镜率最高的还是那类“管理系统”。之前有个学生拿了个题目过来——SpringBootVueMySQL的疫情打卡健康评测系统,源码、数据库、论文、部署文档全都带。我当时就跟他讲,这套组合拳打…

2026/10/11 2:46:14 阅读更多 →
11条降AI味提示词:让AI写出像人话的正式文本

11条降AI味提示词:让AI写出像人话的正式文本

写这段话之前,我刚把一段AI生成的总结扔进回收站。那篇总结每个字都工整、每段都对称,连“综上所述”都用了三遍——你挑不出什么大毛病,但你就是能一眼认出来这是机器写的。做内容这行久了,“机械输出”四个字其实很好辨认&#…

2026/10/11 2:46:14 阅读更多 →
百度AI情感倾向分析实战:微博评论批量处理与避坑指南

百度AI情感倾向分析实战:微博评论批量处理与避坑指南

简介:调用百度云API并用Python对微博评论进行情感偏向分析,是一套面向数据分析入门者与开发者的完整参考资源。资源内含可直接演练的微博评论数据文件,并配有调用百度API获取情感得分的程序代码,以及将原始得分标准化、映射到统一…

2026/10/11 2:46:14 阅读更多 →
Sentinel-3 OLCI数据下载、解析与批量预处理全流程实战

Sentinel-3 OLCI数据下载、解析与批量预处理全流程实战

前两周我帮一个做内陆水体遥感的朋友处理了一批 Sentinel-3 影像,他前面折腾了两天,卡在“数据下不下来”和“下下来不知道怎么打开”这两个环节上,最后我也跟着踩了一遍坑,才发现这套数据跟常用的哨兵2号在结构、格式、处理思路上…

2026/10/11 2:46:14 阅读更多 →
Moltbot/Clawdbot双助手架构:从零部署可扩展的AI智能助理系统

Moltbot/Clawdbot双助手架构:从零部署可扩展的AI智能助理系统

1. 方案整体拆解:双助手架构为什么是这个形态直接说结论:2026 年你还在用一个单体聊天机器人跑所谓的“智能助手”,天花板已经到头了。我这次构建的 Moltbot / Clawdbot 部署方案,核心思路是拆成两个角色——Moltbot 作为中枢大脑…

2026/10/11 2:46:14 阅读更多 →
2026年最新6款AI编程工具实测:个人开发者如何用AI独立完成项目

2026年最新6款AI编程工具实测:个人开发者如何用AI独立完成项目

去年底,我接了一个副业项目——帮一家线下工作室做预约管理后台。需求不算复杂:客户能在线选时间、提交预约,管理员能看到排期并导出。甲方预算有限,我一个人全栈扛下,从后端API到前端页面都得自己写。当时正好想深度体…

2026/10/11 2:45:13 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →