springboot+vue实现ChatGPT逐字输出打字效果

这篇具有很好参考价值的文章主要介绍了springboot+vue实现ChatGPT逐字输出打字效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在调用OpenAI GPT接口时,如果不使用流式(stream:true)参数,接口会等待所有数据生成完成后一次返回。这个等待时间可能会很长,给用户带来不良体验。

为了提升用户体验,我们需要使用流式调用方式。在这篇文章中,我们将介绍如何使用Spring Boot和Vue对接OpenAI GPT接口,并实现类似ChatGPT逐字输出的效果。


一、效果

PC端
springboot+vue实现ChatGPT逐字输出打字效果
移动端
springboot+vue实现ChatGPT逐字输出打字效果

二、Springboot后端

1.封装请求OpenAI接口的客户端

官方给的Example request:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

根据官方示例,用java封装请求接口的客户端。本文选择使用OkHttpClient作为http请求客户端。
注意:接口调用需要魔法

GtpClient.java文章来源地址https://www.toymoban.com/news/detail-470356.html

@Component
public class GptClient {
   
    private final String COMPLETION_ENDPOINT = "https://api.openai.com/v1/chat/completions";
	// OpenAI的API key
    @Value("${gpt.api-key}")
    private String apiKey;
    // 魔法服务器地址
    @Value("${network.proxy-host}")
    private String proxyHost;
    // 魔法服务器端口
    @Value("${network.proxy-port}")
    private int proxyPort;

    OkHttpClient client = new OkHttpClient();
    MediaType mediaType;
    Request.Builder requestBuilder;

    @PostConstruct
    private void init() {
   
        client.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)));
        client.setConnectTimeout(60, TimeUnit.SECONDS);
        client.setReadTimeout(60, TimeUnit.SECONDS);
        mediaType = MediaType.parse("application/json; charset=utf-8");
        requestBuilder = new Request.Builder()
                .url(COMPLETION_ENDPOINT)
                .header("Content-Type", "application/json")
                .header("Authorization", "Bearer " + apiKey);
    }

    /**
     * 聊天接口
     * @param requestBody 聊天接口请求体
     * @return 接口请求响应
     */
    public Response chat(ChatRequestBody requestBody) throws ChatException {
   
        RequestBody bodyOk = RequestBody.create(mediaType, requestBody.toString())<

到了这里,关于springboot+vue实现ChatGPT逐字输出打字效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java集成chatGpt完整案例代码(效果和官网一样逐字输出)

    背景 要集成chatGpt参考我上一篇文章即可。但是,如果要实现官网一样的效果,逐字输出,难度就提升了不少了。经过在官网的研究发现它应该是采用了SSE技术,这是一种最新的HTTP交互技术。SSE(Server-Sent Events):通俗解释起来就是一种基于HTTP的,以流的形式由服务端持续向客户

    2024年02月08日
    浏览(56)
  • ChatGPT-MP:基于ChatGPT实现的微信小程序,适配H5和WEB端,包含前后台,支持打字效果输出流式输出,支持AI聊天次数限制,支持分享增加次数等功能

    包含前后台,支持打字效果输出流式输出,支持AI聊天次数限制,支持分享增加次数等功能。 开源版禁止商用,仅供学习交流,禁止倒卖。 感谢Star! 技术栈:JDK8 + SpringBoot + Vue2 + Uniapp + Mysql Github地址:https://github.com/oldinaction/ChatGPT-MP Gitee地址(国内访问更快):https://gitee.com

    2024年02月09日
    浏览(53)
  • WPF实现类似ChatGPT的逐字打印效果

    前一段时间ChatGPT类的应用十分火爆,这类应用在回答用户的问题时逐字打印输出,像极了真人打字回复消息。出于对这个效果的兴趣,决定用WPF模拟这个效果。 真实的ChatGPT逐字输出效果涉及其语言生成模型原理以及服务端与前端通信机制,本文不做过多阐述,重点是如何用

    2024年02月13日
    浏览(40)
  • ChatGPT-MP:基于GPT实现的微信小程序,适配H5和WEB端,包含前后台,支持打字效果输出流式输出,支持AI聊天次数限制,支持分享增加次数等功能

    包含前后台,支持打字效果输出流式输出,支持AI聊天次数限制,支持分享增加次数等功能。 开源版禁止商用,仅供学习交流,禁止倒卖。 感谢Star! 技术栈:JDK8 + SpringBoot + Vue2 + Uniapp + Mysql Github地址:https://github.com/oldinaction/ChatGPT-MP Gitee地址(国内访问更快):https://gitee.com

    2024年02月15日
    浏览(49)
  • Android okHttp-sse 实现chatgpt逐字逐句效果

    1. 什么是SSE Server-Send Events 服务器发送事件,简称SSE。服务器主动向客户端推送消息,我们常见的有 WebSocket (SignalR) ,SSE 也是其中一种。     SSE 是HTML5规范的一部分,该规范非常简单,主要由两部分组成:第一部分是服务端与浏览器端的通讯协议(Http协议),第二部分是

    2024年02月07日
    浏览(59)
  • 如何实现chatgpt的打字机效果

    点击↑上方↑蓝色“ 编了个程 ”关注我~ 这是Yasin的第 88 篇原创文章 最近在搭建chat gpt代理的时候,发现自己的配置虽然能够调通接口,返回数据,但是结果是一次性显示出来的,不像之前的chat gpt的官网demo那样实现了打字机效果,一个字一个字出来。 所以研究了一下chat

    2023年04月18日
    浏览(69)
  • 前端开发攻略---实现与ChatGPT同款光标闪烁打字效果。

    创建一个空字符串  strp  用于存储逐字打印的文本内容,以及一个计数器  i  用于跟踪当前打印到的字符的索引。 编写  print1()  函数,该函数负责实现文本的逐字打印效果。在函数内部,通过检查  textStr  中的字符来逐个构建  strp  字符串,并将其显示在 HTML 页面上的

    2024年04月17日
    浏览(46)
  • Vue3实现打字机效果

    typeit 是一款轻量级打字机特效插件。该打印机特效可以设置打字速度,是否显示光标,是否换行和延迟时间等属性,它可以打印单行文本和多行文本,并具有可缩放、响应式等特点。官方文档

    2024年02月02日
    浏览(56)
  • 微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

    从流中获取的数据格式如下 小程序调用SSE接口 我这边接收到的数据类型为Uint8Array,需要处理成text文本(如上图) 使对话有打字机效果 参考自:小程序实现 ChatGPT 聊天打字兼自动滚动效果 完整代码

    2024年04月09日
    浏览(90)
  • Vue3实现酷炫打字机效果:让你的网站文字动起来

    ✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包