iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具
  • 578
分享到

怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具

2023-07-05 19:07:43 578人浏览 独家记忆
摘要

本文小编为大家详细介绍“怎么使用SpringBoot+chatgpt+chatUI Pro开发智能聊天工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用springboot+chatgpt+chatUI Pro

本文小编为大家详细介绍“怎么使用SpringBoot+chatgpt+chatUI Pro开发智能聊天工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、技术介绍

chatgpt-java是一个Openai的Java版SDK,支持开箱即用。目前以支持官网全部api。支持最新版本GPT-3.5-Turbo模型以及whisper-1模型。

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

ChatUI Pro 是在ChatUI 基础组件的基础上,结合阿里小蜜的最佳实践,沉淀和总结出来的一个开箱即用的,可快速搭建智能对话机器人的框架。它简单易上手,通过简单的配置就能搭建出对话机器人;同时它强大易扩展,通过丰富的接口和自定义卡片满足各种定制化需求。

二、项目介绍

本项目采用了GPT-3.5-Turb模型作为基础,通过springboot结合redis、chat-java以及chatUI Pro实现简单的人工智能机器人。因为访问openAI的API返回结果比较慢,项目中当前端将问题请求发送到后端后,后端会将生成一个UUID,返回前端,同时后端也会重新开启一个线程去访问openAI,当openAI返回结果后,后端将UUID做为key,openAI返回的结果做为value存储到Redis中。前端会根据后端第一次请求的结果中UUID做为参数每个5s请求一次后端的answer接口,answer接口会根据UUID查询redis是否有值,直到后端answer接口返回结果后前端将结果输出给用户

三、项目搭建

创建springboot项目,项目命名mychatgpt。

怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具

导入项目pom的依赖

<?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>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.5.12</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.xyh</groupId>    <artifactId>mychatgpt</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>mychatgpt</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-redis</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-WEB</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-aop</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <exclusions>                <exclusion>                    <groupId>org.apache.logging.log4j</groupId>                    <artifactId>log4j-api</artifactId>                </exclusion>                <exclusion>                    <groupId>org.apache.logging.log4j</groupId>                    <artifactId>log4j-to-slf4j</artifactId>                </exclusion>            </exclusions>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpcore</artifactId>        </dependency>        <dependency>            <groupId>com.theokanning.openai-gpt3-java</groupId>            <artifactId>api</artifactId>            <version>0.10.0</version>        </dependency>        <dependency>            <groupId>com.theokanning.openai-gpt3-java</groupId>            <artifactId>service</artifactId>            <version>0.10.0</version>        </dependency>        <dependency>            <groupId>com.theokanning.openai-gpt3-java</groupId>            <artifactId>client</artifactId>            <version>0.10.0</version>        </dependency>        <dependency>            <groupId>cn.hutool</groupId>            <artifactId>hutool-all</artifactId>            <version>5.8.12</version>        </dependency>        <dependency>            <groupId>com.unfbx</groupId>            <artifactId>chatgpt-java</artifactId>            <version>1.0.5</version>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>Mysql-connector-java</artifactId>            <version>8.0.17</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>1.2.8</version>        </dependency>        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.5.2</version>            <exclusions>                <exclusion>                    <groupId>com.baomidou</groupId>                    <artifactId>mybatis-plus-generator</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>com.GitHub.yulichang</groupId>            <artifactId>mybatis-plus-join</artifactId>            <version>1.4.2</version>        </dependency>        <!--集成随机生成数据包 -->        <dependency>            <groupId>com.apifan.common</groupId>            <artifactId>common-random</artifactId>            <version>1.0.19</version>        </dependency>        <!--集成随机生成数据包 -->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <configuration>                    <excludes>                        <exclude>                            <groupId>org.projectlombok</groupId>                            <artifactId>lombok</artifactId>                        </exclude>                    </excludes>                </configuration>            </plugin>        </plugins>    </build></project>

编写chatGPT实现工具类

package com.xyh.mychatgpt.utils;import com.unfbx.chatgpt.OpenAiClient;import com.unfbx.chatgpt.entity.chat.ChatChoice;import com.unfbx.chatgpt.entity.chat.ChatCompletion;import com.unfbx.chatgpt.entity.chat.Message;import com.unfbx.chatgpt.entity.common.Choice;import com.unfbx.chatgpt.entity.completions.Completion;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import java.util.Arrays;import java.util.List;@Componentpublic class ChatGPTUtils {    @Value("${xyh.openai.key}")    private  String token;    @Autowired    private RedisUtils redisUtils;    public void ask(String model,String question,String uuid){        StringBuffer result=new StringBuffer();        try {            OpenAiClient openAiClient = new OpenAiClient(token, 3000, 300, 300, null);            if("GPT-3.5-Turb".equals(model)){            // GPT-3.5-Turb模型            Message message=Message.builder().role(Message.Role.USER).content(question).build();            ChatCompletion chatCompletion = ChatCompletion.builder().messages(Arrays.asList(message)).build();            List<ChatChoice> resultList = openAiClient.chatCompletion(chatCompletion).getChoices();            for (int i = 0; i < resultList.size(); i++) {                result.append(resultList.get(i).getMessage().getContent());            }            }else{                //text-davinci-003/text-ada-003                Completion completion = Completion.builder()                        .prompt(question)                        .model(model)                        .maxTokens(2000)                        .temperature(0)                        .echo(false)                        .build();                Choice[] resultList = openAiClient.completions(completion).getChoices();                for (Choice choice : resultList) {                    result.append(choice.getText());                }            }        }catch (Exception e) {            System.out.println(e.getMessage());            result.append("小爱还不太懂,回去一定努力学习补充知识");        }        redisUtils.set(uuid,result.toString());    }}

开发项目Controller类,用来与前端进行交互

package com.xyh.mychatgpt.controller;import cn.hutool.core.thread.ThreadUtil;import cn.hutool.core.util.IdUtil;import cn.hutool.core.util.StrUtil;import com.xyh.mychatgpt.utils.ChatGPTUtils;import com.xyh.mychatgpt.utils.R;import com.xyh.mychatgpt.utils.RedisUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestControllerpublic class IndexController {    @Autowired    private RedisUtils redisUtils;    @Autowired    private ChatGPTUtils chatGPTUtils;    @GetMapping("/ask")    public R ask(String question,HttpServletRequest request) {        String uuid=IdUtil.simpleUUID();        if (StrUtil.isBlank(question)) {            question = "今天天气怎么样?";        }        String finalQuestion = question;        ThreadUtil.execAsync(()->{            chatGPTUtils.ask("GPT-3.5-Turb", finalQuestion,uuid);        });        return R.ok().put("data",uuid);    }    @GetMapping("/answer")    public R answer(String uuid){        String result=redisUtils.get(uuid);          return R.ok().put("data",result);    }}

前端页面开发,在项目templates目录创建index.html页面,并引入chatUI pro相关文件

<!DOCTYPE html><html lang="zh-CN"><head>    <meta name="renderer" content="webkit" />    <meta name="force-rendering" content="webkit" />    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-Scalable=0, minimum-scale=1.0, maximum-scale=1.0, viewport-fit=cover" />    <title>滴答小爱</title>    <link rel="stylesheet" href="//g.alicdn.com/chatui/sdk-v2/0.2.4/sdk.CSS" rel="external nofollow" ></head><body><div id="root"></div><script src="//g.alicdn.com/chatui/sdk-v2/0.2.4/sdk.js"></script><script src="//g.alicdn.com/chatui/extensions/0.0.7/isv-parser.js"></script><script src="js/setup.js"></script><script src="js/Jquery-3.6.3.min.js"></script><script src="//g.alicdn.com/chatui/icons/0.3.0/index.js" async></script></body></html>

创建setup.js实现chatUI Pro与后端通信交换。

var bot = new ChatSDK({    config: {        // navbar: {        //     title: '滴答小爱'        // },        robot: {            avatar: 'images/chat.png'        },        // 用户头像        user: {            avatar: 'images/user.png',        },        // 首屏消息        messages: [            {                type: 'text',                content: {                    text: '您好,小爱为您服务,请问有什么可以帮您的?'                }            }        ],        // 快捷短语        // quickReplies: [        //     { name: '健康码颜色',isHighlight:true },        //     { name: '入浙通行申报' },        //     { name: '健康码是否可截图使用' },        //     { name: '健康通行码适用范围' },        // ],        // 输入框占位符        placeholder: '输入任何您想询问的问题',    },    requests: {        send: function (msg) {            if (msg.type === 'text') {                return {                    url: '/ask',                    data: {                        question: msg.content.text                    }                };            }        }    },    handlers: {                parseResponse: function (res, requestType) {            // 根据 requestType 处理数据            if (requestType === 'send' && res.code==0) {                // 用 isv 消息解析器处理数据                $.ajaxSettings.async=false;                var answer="";                var isOK=false;                while(!isOK){                    $.get("/answer",{uuid:res.data},function(result){                        console.log(result.data)                        if(null != result.data){                            isOK=true;                            answer=result.data;                        }                    },"JSON");                    if(!isOK){                        sleep(5000);                    }                }                $.ajaxSettings.async=true;                return [{"_id":res.data,type:"text",content:{text:answer},position:"left"}];            }        },    },});function sleep(n) { //n表示的毫秒数    var start = new Date().getTime();    while (true) {        if (new Date().getTime() - start > n) {            break;        }    }}bot.run();

项目搭建完成后启动springboot项目然后访问http://ip:端口就可以。项目最终效果:http://hyrun.vip/

四、项目展示

怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具

读到这里,这篇“怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具

本文链接: https://www.lsjlt.com/news/354961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具
    本文小编为大家详细介绍“怎么使用springboot+chatgpt+chatUI Pro开发智能聊天工具”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用springboot+chatgpt+chatUI Pro...
    99+
    2023-07-05
  • springboot+chatgpt+chatUIPro开发智能聊天工具的实践
    目录一、技术介绍二、项目介绍三、项目搭建四、项目展示一、技术介绍 1.chatgpt-java是一个OpenAI的Java版SDK,支持开箱即用。目前以支持官网全部Api。支持最新版...
    99+
    2023-05-14
    springboot chatgpt智能聊天 springboot chatgpt 聊天
  • 如何使用ChatGPT PHP开发智能聊天机器人?
    如何使用ChatGPT PHP开发智能聊天机器人?引言:智能聊天机器人已经逐渐成为了现代通信领域的热门话题。其中,ChatGPT是一种先进的自然语言处理模型,它基于开放AI的GPT,可以生成几乎逼真的对话。本文将介绍如何使用PHP编程语言来...
    99+
    2023-10-24
    ChatGPT 开发 PHP
  • 如何利用ChatGPT PHP开发智能客户服务工具
    如何利用ChatGPT PHP开发智能客户服务工具引言:随着人工智能技术的快速发展,智能客户服务工具正逐渐取代传统的人工客服,成为企业与客户交流的主要方式。在众多的人工智能技术中,ChatGPT以其出色的自然语言处理能力备受关注。本文将介绍...
    99+
    2023-10-25
    ChatGPT 智能客服 PHP
  • ChatGPT PHP开发攻略:构建智能聊天机器人的实用技巧
    ChatGPT PHP 开发攻略:构建智能聊天机器人的实用技巧引言:随着人工智能的快速发展,智能聊天机器人(Chatbot)在各种领域中得到了广泛的应用。Chatbot 可以与用户进行自然语言交互,回答问题,提供解决方案,并提供个性化的服务...
    99+
    2023-10-25
    ChatGPT PHP开发 聊天机器人技巧
  • 怎么使用Python人工智能构建简单聊天机器人
    今天小编给大家分享一下怎么使用Python人工智能构建简单聊天机器人的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是聊天...
    99+
    2023-07-05
  • C#开发工具SharpDevelop怎么使用
    使用SharpDevelop进行C#开发的步骤如下:1. 安装SharpDevelop:从官方网站(https://www.icsh...
    99+
    2023-09-29
    C# SharpDevelop
  • 使用Python编写并实现一个具备人工智能的聊天机器人(包含代码和步骤)
    聊天机器人是一种人工智能,它通过应用程序或消息来模拟与用户的对话。本文我们将使用Pytho的chatterbot库来实现聊天机器人。该库生成对用户输入的自动响应。响应基于库中实现的机器学习算法。 机器学习算法使聊天机器人在收集用...
    99+
    2024-01-22
    人工智能 机器学习
  • 移动测试开发Mitmproxy工具怎么使用
    本文小编为大家详细介绍“移动测试开发Mitmproxy工具怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“移动测试开发Mitmproxy工具怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.前言在...
    99+
    2023-07-02
  • 基于node的cli工具怎么开发使用
    本篇内容介绍了“基于node的cli工具怎么开发使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景公司内部有维护admin和h6两套基础...
    99+
    2023-07-05
  • vue-devtools开发工具插件怎么安装使用
    本文小编为大家详细介绍“vue-devtools开发工具插件怎么安装使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue-devtools开发工具插件怎么安装使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-26
  • Android项目开发常用工具类LightTaskUtils怎么使用
    这篇文章主要介绍“Android项目开发常用工具类LightTaskUtils怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android项目开发常用工具类LightTaskUtils怎么使...
    99+
    2023-06-30
  • 怎么使用node开发一个mycli命令行工具
    这篇文章主要介绍了怎么使用node开发一个mycli命令行工具的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用node开发一个mycli命令行工具文章都会有所收获,下面我们一起来看看吧。初始化首先要确保电...
    99+
    2023-07-02
  • SQL Server开发智能提示插件SQL Prompt怎么使用
    这篇文章主要介绍“SQL Server开发智能提示插件SQL Prompt怎么使用”,在日常操作中,相信很多人在SQL Server开发智能提示插件SQL Prompt怎么使用问题上存在疑惑,小编查阅...
    99+
    2023-06-30
  • Ubuntu中怎么安装和使用编译器和开发工具
    在Ubuntu中安装和使用编译器和开发工具非常简单,通过apt包管理器可以轻松安装所需的工具。以下是一些常用的编译器和开发工具的安装...
    99+
    2024-03-05
    Ubuntu
  • 怎么使用Jenkins自动化构建工具进行敏捷开发
    这篇“怎么使用Jenkins自动化构建工具进行敏捷开发”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Jenkins自...
    99+
    2023-06-29
  • 怎么使用Node.js和adb开发一个手机备份小工具
    这篇“怎么使用Node.js和adb开发一个手机备份小工具”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2024-04-02
  • 怎么使用Python的开发框架Brownie部署以太坊智能合约
    这篇文章主要介绍怎么使用Python的开发框架Brownie部署以太坊智能合约,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!介绍我希望可以在任何开发场景都尽量用Python。在区块链开发中,常用的是以太坊虚拟机智能合...
    99+
    2023-06-15
  • 怎么使用Scrum敏捷开发工具Leangoo脑图实现影响地图
    这篇文章主要介绍了怎么使用Scrum敏捷开发工具Leangoo脑图实现影响地图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Leangoo 的5.8.12版本发布了Leang...
    99+
    2023-06-02
  • 怎么使用微信开发者工具调试在微信端访问的网页
    怎么使用微信开发者工具调试在微信端访问的网页,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。假设我用vue开发了一个web应用,需要在手机微信里访问并调试, 使用微信开发者工...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作