当前位置: 首页 > wzjs >正文

网站建设与运营的公司百度开发者搜索

网站建设与运营的公司,百度开发者搜索,西部数码网站助手4.0,五合一网站建设方案项目地址:alpbeta/ai-api-union 需求:实现兼容各大模型厂商api的流式对话和同步对话接口,本项目现兼容智谱、豆包、通义、通义版deepseek 设计 一个ChatController类对外暴露这两个接口,入参都为ChatRequest请求类,…

项目地址:alpbeta/ai-api-union

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

设计

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

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

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

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

简单工厂模式

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

工厂方法模式

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

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

示意图

image

实施

创建项目

通过 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

增加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,需将其转换成Flux,通过Flux.from(.map(response ->{return response...})).filter(content->!content.isEmpty())获取返回结果

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

创建简单工厂实现类

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

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

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


文章转载自:

http://N46oVdcE.ysrtj.cn
http://7bGEFShM.ysrtj.cn
http://WwgNDYW4.ysrtj.cn
http://86s1at34.ysrtj.cn
http://mVGlDztj.ysrtj.cn
http://DWBMlZfn.ysrtj.cn
http://SMLhCnzI.ysrtj.cn
http://a3A1asNM.ysrtj.cn
http://fqjEiwPZ.ysrtj.cn
http://8L3SSzhk.ysrtj.cn
http://wBtYajGo.ysrtj.cn
http://5ycxgEcp.ysrtj.cn
http://tKqmhJbY.ysrtj.cn
http://YIoH6VSs.ysrtj.cn
http://INxiE7Bv.ysrtj.cn
http://I1L6CULX.ysrtj.cn
http://psiRLSIb.ysrtj.cn
http://2FSmVm4x.ysrtj.cn
http://JJkqN48z.ysrtj.cn
http://pRlyrRND.ysrtj.cn
http://AYudamj7.ysrtj.cn
http://pybl6Do1.ysrtj.cn
http://LRJMhRaC.ysrtj.cn
http://gfGyk6l6.ysrtj.cn
http://QNaflBLX.ysrtj.cn
http://R06IGXGO.ysrtj.cn
http://Uw8KKubf.ysrtj.cn
http://YLl2KKx2.ysrtj.cn
http://FQ8jbTKh.ysrtj.cn
http://oJQi5bcJ.ysrtj.cn
http://www.dtcms.com/wzjs/669739.html

相关文章:

  • 怎样做网站检索数据分析北京软件开发学校
  • 地税局网站建设情况汇报seo网站关键词优化费用
  • 电子商务网站建设的步骤一般为(天津原筑展览展示有限公司
  • 有没有做旅游攻略的网站做网站赚钱难
  • 网站诊断与检测江苏海宏建设工程有限公司网站
  • 网站设计厂宁夏做网站
  • 做网站app怎么赚钱吗正规百度推广
  • 网站开发公共文件网站建设与规划的文献
  • 阳江做网站公司深圳app网站建设哪家好
  • 四川建设厅网上查询网站拼多多网站分析
  • 英文公司网站设计宝安品牌网站制作
  • 淘宝是什么语言做的网站战略网页游戏开服表
  • 个人网站 建站dede网站5.7广告去除
  • 上海网络平台网站建设荣成市建设局网站是什么
  • 做网站没资源网站备案成功怎么查备案号
  • 企业网站建设方案如何写阿里云做电影网站
  • 天门市网站建设seo网站架构方案
  • 洛阳微网站建设软件公司起名大全
  • worldpress 建站wordpress末班
  • 企业网站建设实训小结wordpress绑定手机验证
  • Asp.net 手机网站制作企业网站模板php
  • 网页制作公司背景介绍婚纱摄影网站应该如何做优化
  • 国外包装设计欣赏网站医疗器械网站制作
  • 做网站怎么云存储js怎么做网站
  • 沈阳网站建设哪家便宜网站死链接提交
  • 最新网站推广王也道长头像无水印
  • 如何注册网站卖东西做导购网站如何获利
  • 太原网站关键词排名装饰公司315活动网站怎么做
  • 做互联网需要网站吗福州网站建设哪家强
  • 东营+网站建设谷歌关键词热度查询