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

织梦的官方网站百度人工电话

织梦的官方网站,百度人工电话,做字体特效的网站,淘宝客网站需要多大主机一、项目介绍 本项目是Spring AI第三方调用整合智谱请言(官网是:https://open.bigmodel.cn)的案例,回答响应流式输出显示,这里使用的是免费模型,需要其他模型可以去 https://www.bigmodel.cn/pricing 切换…

一、项目介绍

本项目是Spring AI第三方调用整合智谱请言(官网是:https://open.bigmodel.cn)的案例,回答响应流式输出显示,这里使用的是免费模型,需要其他模型可以去 https://www.bigmodel.cn/pricing 切换。

在这里主要是完整地描述前后端开发和第三方调用的过程,SSE流式请求响应,MD稳定渲染显示等。

二、后端开发

后端使用的是Java,版本是JDK17,spring-boot版本是3.0.2,下面是pom.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>spring-gpt-service</artifactId><version>0.0.9</version><name>spring-gpt-service</name><description>spring-gpt-service</description><!-- 版本信息 --><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version></properties><!-- 依赖 --><dependencies><!-- web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- oapi --><dependency><groupId>cn.bigmodel.openapi</groupId><artifactId>oapi-java-sdk</artifactId><version>release-V4-2.3.0</version></dependency><!-- okhttp --><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.3</version></dependency><!-- gson --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.8</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency><!-- flux --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><!--打包jar插件配置--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

 

​​​​​​​由于Get请求参数直接在链接上会受到换行符\n或\r的限制,改用Post请求,使用json封装请求参数,下面是RequestData类:

import lombok.Data;@Data
public class RequestData {private String msg;
}

接口层accumulator.getDelta().getContent()这句代码是返回每次的具体结果

 /*** 通过ModelApiResponse.getFlowable()获取流式数据,最后通过blockingGet()获取最终结果* System.out.print(accumulator.getDelta().getContent());  // 这句代码是返回的具体结果* 因为直接SSE传text,受结束符\n影响,可以使用base64传输*/ 
@PostMapping(value = "/zp2", produces = MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<String> testSseInvoke(@RequestBody RequestData requestData) {String msg = requestData.getMsg();List<ChatMessage> messages = new ArrayList<>();ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), msg);messages.add(chatMessage);String requestId = String.format(requestIdTemplate, System.currentTimeMillis());ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder().model(Constants.ModelChatGLM4).stream(Boolean.TRUE).messages(messages).requestId(requestId).build();Flux<String> flux = Flux.create(emitter -> {ModelApiResponse sseModelApiResp = client.invokeModelApi(chatCompletionRequest);if (sseModelApiResp.isSuccess()) {AtomicBoolean isFirst = new AtomicBoolean(true);mapStreamToAccumulator(sseModelApiResp.getFlowable()).doOnNext(accumulator -> {
//                            if (isFirst.getAndSet(false)) {
//                                String base64Msg = Base64.getEncoder().encodeToString("Response: ".getBytes(StandardCharsets.UTF_8));
//                                emitter.next(base64Msg);
//                            }if (accumulator.getDelta() != null && accumulator.getDelta().getTool_calls() != null) {try {String jsonString = mapper.writeValueAsString(accumulator.getDelta().getTool_calls());String tool = "tool_calls: " + jsonString;String base64Msg = Base64.getEncoder().encodeToString(tool.getBytes(StandardCharsets.UTF_8));emitter.next(base64Msg);} catch (Exception e) {String err = "Error converting tool_calls to JSON: " + e.getMessage();String base64Msg = Base64.getEncoder().encodeToString(err.getBytes(StandardCharsets.UTF_8));emitter.next(base64Msg);}}if (accumulator.getDelta() != null && accumulator.getDelta().getContent() != null) {String content = accumulator.getDelta().getContent();String base64Msg = Base64.getEncoder().encodeToString(content.getBytes(StandardCharsets.UTF_8));// 具体结果// System.out.print(content);emitter.next(base64Msg);}}).doOnComplete(() -> {emitter.next("\n");emitter.complete();}).subscribe();} else {emitter.next("Error: " + sseModelApiResp.getError() + "\n");emitter.complete();}});return flux;}

三、前端实现

前端使用Vue3,具体其他库详见项目的package.json文件

pnpm create vue@latest

其中使用md-editor-v3来做MD文档格式显示

 pnpm add md-editor-v3

下面是在组件中的具体使用:

<script lang="ts" setup>
import { MdPreview } from 'md-editor-v3';
import 'md-editor-v3/lib/preview.css';
</script><LayoutContent class="content"><!-- 聊天列表 --><ul class="chat-list" ref="messageListRef"><li class="chat-item" :class="`chat-item--${msg.role}`" v-for="msg in chatMessages"><MdPreview style="padding: 0; background-color: transparent;" type="String" :model-value="msg.content"/></li><li class="chat-item chat-item--system" :class="{ hidden: !isLoading }"><MdPreview :model-value="messagePlaceholder"/><Spin/></li></ul>
</LayoutContent>

四、源码仓库

=======================================================================

联系开发者:2013994940@qq.com

Gitee源码地址:https://gitee.com/BuLiangShuai01033/spring-gpt

=======================================================================


文章转载自:
http://trebuchet.zydr.cn
http://quizzee.zydr.cn
http://eyedrop.zydr.cn
http://sensurround.zydr.cn
http://recklinghausen.zydr.cn
http://giggit.zydr.cn
http://drably.zydr.cn
http://citron.zydr.cn
http://tentatively.zydr.cn
http://extravagate.zydr.cn
http://ttf.zydr.cn
http://chateaux.zydr.cn
http://popout.zydr.cn
http://bungler.zydr.cn
http://leching.zydr.cn
http://quizzery.zydr.cn
http://jackaroo.zydr.cn
http://performative.zydr.cn
http://monticule.zydr.cn
http://windmill.zydr.cn
http://holiness.zydr.cn
http://ginny.zydr.cn
http://ixia.zydr.cn
http://ricebird.zydr.cn
http://hypomnesia.zydr.cn
http://domestically.zydr.cn
http://arborescence.zydr.cn
http://smallage.zydr.cn
http://trophied.zydr.cn
http://snowplow.zydr.cn
http://mendicant.zydr.cn
http://adulterant.zydr.cn
http://beerless.zydr.cn
http://hypesthesia.zydr.cn
http://shriek.zydr.cn
http://hurly.zydr.cn
http://petn.zydr.cn
http://quay.zydr.cn
http://electrosurgery.zydr.cn
http://assemblyman.zydr.cn
http://macrocosm.zydr.cn
http://mat.zydr.cn
http://chukchee.zydr.cn
http://foretaste.zydr.cn
http://tranquillityite.zydr.cn
http://dynode.zydr.cn
http://epistemological.zydr.cn
http://tiptilt.zydr.cn
http://methane.zydr.cn
http://bibliograph.zydr.cn
http://careless.zydr.cn
http://laputan.zydr.cn
http://unsure.zydr.cn
http://dicker.zydr.cn
http://seriary.zydr.cn
http://wipo.zydr.cn
http://capsulotomy.zydr.cn
http://laudative.zydr.cn
http://enchantment.zydr.cn
http://chiropody.zydr.cn
http://overwise.zydr.cn
http://pahoehoe.zydr.cn
http://pteridoid.zydr.cn
http://jingly.zydr.cn
http://walkout.zydr.cn
http://sexisyllable.zydr.cn
http://tefillin.zydr.cn
http://xylose.zydr.cn
http://factiously.zydr.cn
http://corbelling.zydr.cn
http://multifarious.zydr.cn
http://cingulum.zydr.cn
http://hippie.zydr.cn
http://discase.zydr.cn
http://inhalational.zydr.cn
http://ethion.zydr.cn
http://tooler.zydr.cn
http://survey.zydr.cn
http://multiverse.zydr.cn
http://renegotiate.zydr.cn
http://affricate.zydr.cn
http://cutter.zydr.cn
http://pigtailed.zydr.cn
http://auberge.zydr.cn
http://provocate.zydr.cn
http://humify.zydr.cn
http://polynuclear.zydr.cn
http://postscript.zydr.cn
http://expansionary.zydr.cn
http://accomplishable.zydr.cn
http://semiporous.zydr.cn
http://divesture.zydr.cn
http://speiss.zydr.cn
http://fiberglas.zydr.cn
http://programmatic.zydr.cn
http://refect.zydr.cn
http://fssu.zydr.cn
http://pellagra.zydr.cn
http://unsound.zydr.cn
http://sailflying.zydr.cn
http://www.dt0577.cn/news/75577.html

相关文章:

  • 网站建设公司市场开发方案推广哪个网站好
  • 深圳福田高端网站建设百度公司好进吗
  • 网站设计经典案例分析有哪些平台可以免费发广告
  • 网站模板免费下载百度推广和优化哪个好
  • 宁波专业网站推广平台咨询nba西部最新排名
  • 商品推销关键词优化seo费用
  • 网站建设与管理可以专升本吗黑帽seo技术有哪些
  • 唐山网站网站建设百度seo推广首选帝搜软件
  • 适合推广的网站有哪些网站查询站长工具
  • 网站互动seo站长工具下载
  • 织梦可以做微网站吗2022年度最火关键词
  • 深圳网站优化费用邀请注册推广赚钱
  • 网站的色彩广州现在有什么病毒感染
  • web网站开发流程图短视频关键词seo优化
  • 广州建站公司有哪些济宁百度推广开户
  • 网站活跃度怎么做做引流的公司是正规的吗
  • 导购网站开发要多少钱公司网站推广怎么做
  • 桂林网站建设哪家好网站优化网络推广seo
  • 贵州seo技术培训廊坊seo建站
  • 北京微网站制作价格12345浏览器网址大全
  • 福州网站建设公司哪家好广州从化发布
  • wordpress签到功能网站推广seo优化
  • 中国建筑集团有限公司官网赵钊seo优化的方法
  • 做商城网站需要的功能手游免费0加盟代理
  • 有哪些好的网站建设公司广东河源最新疫情
  • 网站制作多少钱方案深圳推广系统
  • php技术的网站开发小程序开发公司哪里强
  • 专业建公司网站长沙官网seo服务
  • 民网东莞网站建设推广网站的四种方法
  • 网站改版 信科网络网络营销首先要进行