ai-api-union项目,适配各AI厂商api

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 本项目旨在实现兼容各大模型厂商API的流式对话和同步对话接口,现已支持智谱、豆包、通义、通义版DeepSeek。项目地址:[https://gitee.com/alpbeta/ai-api-union](https://gitee.com/alpbeta/ai-api-union)。通过`ChatController`类暴露两个接口,入参为`ChatRequest`,包含会话ID、大模型标识符和聊天消息列表。流式对话返回`Flux<String>`,同步调用返回`String`

项目地址:https://gitee.com/alpbeta/ai-api-union

需求:实现兼容各大模型厂商api的流式对话和同步对话接口,本项目现兼容智谱、豆包、通义、通义版deepseek

设计

一个ChatController类对外暴露这两个接口,入参都为ChatRequest请求类,属性有会话id,大模型标识符和聊天消息列表,其中消息是一个实体类包含,消息id,关联会话id,发送者角色,消息内容,创建时间。

流式对话返回的是响应式变成中的Flux<String>类型,同步调用返回的是Sring类型。

一个ModelService接口,包含流式调用和同步调用两个方法,入参为String字符串,出参与上述一致。

四个大模型api接口分别实现这个接口创建对应的实现类。

简单工厂模式

创建一个工厂类,基于传入的参数创建对应的大模型接口实现类。

工厂方法模式

创建一个工厂抽象类,继承该接口创建各个大模型工厂类,各个大模型工厂类实现大模型接口实现类。

创建一个获取工厂类,基于传入的参数创建对应的大模型工厂,再创建对应大模型接口实现类

示意图

实施

创建项目

通过 Spring Initializr 网站快速生成一个包含 Spring Boot 依赖的项目骨架,修改对应的partent版本,创建application.yml 激活dev环境,设置profiels.active:dev,创建application-dev.yml,修改端口为8090,server.port:8090(也可以不修改,默认.properties,偏向于yml)

创建测试controller

项目中如果没有controller类,访问8080端口时会报错,找不到路径;

创建一个ChatController类,增加@RestController @RequestMapping("api/chat")注解

创建testChat方法,方法前添加注解 @GetMapping("/testChat"), 入参为空,出参为String,方法内输入return "test chat";

启动项目,访问http:localhost:8090/api/chat/testChat,页面显示上述方法返回的内容 test chat

创建dto包

创建Message实体类,ChatRequest请求类;

ChatRequest请求类,属性有会话id,大模型标识符和聊天消息列表,其中消息是一个实体类包含,消息id,关联会话id,发送者角色,消息内容,创建时间。基于这些内容创建对应的私有属性,数据类型有Integer,String, TimeStamp, List,在类前加@Data注解,需先引入lombok依赖,引入该注解后,可以自动生成样板代码,如getter, setter, toString, equals, 无参构造函数,不需要显示编写这些方法,提高开发效率。

如需生成清晰的API文档,需引入swagger依赖,或knif4j,再补充对应的配置文件,之后在实体类的类名和属性前通过@Schema(description="xx")备注类和属性名对应的含义。之后通过访问http://项目ip:端口号/doc.html,可以访问对应的接口文档,如果接口的入参和出参有用到@Scheme注解的实体类,会显示对应的备注内容。

创建项目实现接口类

在ChatController类增加syncChat和streamChat方法

两个方法前增加PostMapping注解,路径分别是("/syncChat")和("/stramChat")。入参增加@RequestBody注解,类型为ChatRequest。 出参分别是String和Flux<String>

增加IModelService接口,包含synChat和stramChat方法,入参都为String,出参与上述保持一致

增加各大模型厂商api实现类

智谱接口实现类 ChatGLMServiceImpl,豆包接口实现类 ArkServiceImpl,通义接口实现类DashScopeServeceImpl,通义-deepseek实现类 DeepSeekServiceImple,都实现IModelService接口

引入各模型依赖,并在application.yml中配置api-key和modelname

分别在各模型接口类中实现同步调用和异步调用方法

实现豆包接口示例

在类前增加@Service注解表示为服务类bean容器,通过@Value注解,从配置文件中获取api-key和modelName的值映射到该类对应属性中。豆包大模型的火山引擎提供的ArkService服务类声明为一个私有属性,后续会使用该服务的方法。

该实现类除接口在的两个方法,还增加了初始化和后处理方法,分别通过@PostConstruct和@PreDestory注解,在接口实现类Bean初始化完成后执行ArkService服务类的实例化,在Bean销毁之前关闭ArkService的所有资源。

syncChat同步方法,使用该模型依赖提供的ChatMeaasge类创建消息列表对象,调用对应的add,role,content,build方法完成消息参数构建,再通过ChatCompletionRequest构建请求参数对象,通过arkService.creatChatCompletion方法输入请求参数,获取模型返回结果

stramChat异步调用方法,消息对象和请求对象构建方式与同步调用方式一致,通过arkService.streamChatCompletion方法获取流式响应结果。返回类型为Flowable<ChatCompletionChunk>,需将其转换成Flux<String>,通过Flux.from(.map(response ->{return response...})).filter(content->!content.isEmpty())获取返回结果

其他大模型实现类通过类似方法进行实现,通义与通义deepseek异步和同步返回的方法不一样,前者通过result.getOutput().getText();获取返回结果,后者方法调用更长一些

创建简单工厂实现类

ModelSimpleFactory,基于传入的参数返回不同的模型接口实现类,实现一个createModelService的方法。实现类用到@value注解从配置文件中获取变量值,不能通过new的方式创建模型类,需通过反射机制,通过上下文的getbean方法创建:applicationContext.getBean。

在ChatController类补充syncChat和streamChat方法逻辑

获取请求对象中的模型标识,消息列表。基于标识创建模型服务对象,将消息传入模型服务返回响应的结果

目录
相关文章
|
8天前
|
人工智能 自然语言处理 安全
HarmonyOS NEXT+AI打造智能助手APP(适配DeepSeek)
华为仓颉编程语言与HarmonyOS NEXT结合AI大模型,开创智能助手APP开发新纪元。仓颉语言以自然化编程降低门槛,HarmonyOS NEXT提供流畅安全的系统支持,AI大模型赋予助手强大交互能力。实战课程覆盖智能对话、写作、画图等6大核心业务,模块化开发助你掌握全流程技能。参考资料及开源教程助力学习,开启智能应用开发新篇章。
57 10
HarmonyOS NEXT+AI打造智能助手APP(适配DeepSeek)
|
3天前
|
人工智能 Kubernetes 负载均衡
AI应用交付厂商F5打造六大解决方案,助用户应对复杂挑战
AI应用交付厂商F5打造六大解决方案,助用户应对复杂挑战
39 16
|
1月前
|
存储 人工智能 Java
Spring AI与DeepSeek实战四:系统API调用
在AI应用开发中,工具调用是增强大模型能力的核心技术,通过让模型与外部API或工具交互,可实现实时信息检索(如天气查询、新闻获取)、系统操作(如创建任务、发送邮件)等功能;本文结合Spring AI与大模型,演示如何通过Tool Calling实现系统API调用,同时处理多轮对话中的会话记忆。
375 57
|
3天前
|
人工智能 自然语言处理 机器人
2025年AI客服机器人推荐榜单:主流厂商与创新解决方案
本文探讨2025年AI客服机器人的行业趋势,从技术迭代、场景需求到数据安全等角度分析,并提供选型指南。文中强调技术能力(如大模型适配)、场景适配性、数据安全及全周期服务等关键标准,推荐合力亿捷、阿里云、科大讯飞、Salesforce等厂商,助企业理性选择适合的工具。
63 7
|
23天前
|
人工智能 开发工具
阿里云AI Stack全量适配Qwen3模型,企业级部署效率全面升级
2025年4月29日的凌晨5点,阿里全新一代模型通义千问Qwen3正式发布并全部开源8款「混合推理模型」,包含: 6款Dense模型:0.6B、1.7B、4B、8B、14B、32B。 2款MoE模型:Qwen3-30B-A3B和旗舰版Qwen3-235B-A22B。 阿里云AI Stack已适配全量Qwen3模型,可快速部署实现Qwen3模型的开箱即用!
122 4
|
23天前
|
人工智能 API 语音技术
6.5K star!AI视频翻译配音神器,一键生成多平台适配内容,专业级本地化方案来袭!
KrillinAI 是一款基于 AI 大模型的视频翻译与配音工具,支持 12 种输入语言和 101 种输出语种,提供专业级翻译质量。其核心功能包括跨语言智能转换、全流程自动化处理及多项黑科技如语音克隆、术语替换等。技术架构涵盖 WhisperKit、OpenAI API 和 FFmpeg 等组件,实现从视频输入到多平台输出的一站式服务。项目已开源,详情见 GitHub 地址:https://github.com/krillinai/KrillinAI。
|
1月前
|
人工智能 算法 安全
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
Quasar Alpha 是 OpenRouter 推出的预发布 AI 模型,具备百万级 token 上下文处理能力,在代码生成、指令遵循和低延迟响应方面表现卓越,同时支持联网搜索和多模态交互。
175 1
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
|
27天前
|
机器学习/深度学习 人工智能 自动驾驶
企业内训|模拟AI场景课程——某汽车厂商
4月18日和19日,东北某市,TsingtaoAI团队为某汽车厂商的智能驾驶业务和研发团队交付“模拟AI场景课程”。本课程基于该厂商在AI领域的战略布局,结合汽车行业智能化转型趋势,以“场景化、实战化、前瞻性”为核心,聚焦AI技术从理论到落地的全链路。通过模拟真实业务场景(如智能座舱优化、智能制造、自动驾驶仿真),帮助学员掌握AI基础能力,并快速应用于研发、生产、营销等环节。
61 4
|
1月前
|
人工智能 前端开发 物联网
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
48 0
【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
|
1月前
|
人工智能 数据可视化 API
开箱即用的可视化AI应用编排工具 Langflow,可调用魔搭免费API作为tool
ModelScope 社区基于优秀的开源可视化AI应用编排工具 Langflow 搭建了创空间,以方便社区开发者基于社区开源模型及免费魔搭 API-Inference,快速创建Agent应用、RAG应用并将其部署为API服务。
239 14

热门文章

最新文章