springboot+chatgpt+chatUI Pro를 사용하여 지능형 채팅 도구를 개발하는 방법
1. 기술 소개
ChatGPT-Java는 즉시 사용이 가능한 OpenAI Java SDK입니다. 현재 공식 웹사이트의 모든 API를 지원합니다. 우리는 최신 버전의 GPT-3.5-Turbo 및 Whisper-1 모델을 사용하는 것을 선호합니다.
2. Spring Boot는 Pivotal 팀에서 제공하는 새로운 프레임워크로, 새로운 Spring 애플리케이션의 초기 구성 및 개발 프로세스를 단순화하도록 설계되었습니다. 이 프레임워크는 특정 구성 방법을 채택하며 개발자가 일반 구성을 정의할 필요가 없습니다. 이러한 방식으로 Spring Boot는 급성장하고 있는 신속한 애플리케이션 개발 분야의 리더가 되기 위해 노력하고 있습니다.
3.ChatUI Pro는 ChatUI의 기본 구성 요소를 기반으로 하고 Alibaba 및 Xiaomi의 모범 사례와 결합하여 지능형 대화 로봇을 빠르게 구축할 수 있는 즉시 사용 가능한 프레임워크입니다. 간단하고 사용하기 쉬울 뿐만 아니라 간단한 구성을 통해 대화형 로봇을 구축할 수 있으며, 강력하고 확장하기 쉬우며, 풍부한 인터페이스와 맞춤형 카드를 통해 다양한 맞춤형 요구 사항을 충족할 수 있습니다.
2. 프로젝트 소개
이 프로젝트는 GPT-3.5-Turb 모델을 기반으로 redis, chat-java, chatUI Pro와 결합된 springboot를 사용하여 간단한 인공지능 로봇을 구현합니다. openAI의 API에 액세스하면 결과가 느리게 반환되기 때문에 프로젝트의 프런트엔드가 문제 요청을 백엔드로 보낸 후 백엔드는 UUID를 생성하고 동시에 이를 프런트엔드로 반환합니다. -end는 openAI에 액세스하기 위해 스레드도 다시 엽니다. 결과가 반환된 후 백엔드는 UUID를 키로 사용하고 openAI가 반환한 결과는 redis에 값으로 저장됩니다. 프론트엔드는 백엔드의 첫 번째 요청 결과에 대해 UUID를 기준으로 5초마다 백엔드 응답 인터페이스를 요청합니다. 응답 인터페이스는 백엔드까지 Redis가 UUID를 기반으로 한 값을 가지고 있는지 쿼리합니다. -end 응답 인터페이스가 결과를 반환하면 프런트 엔드는 결과를 사용자에게 출력합니다.
3. 프로젝트 구성
1 springboot 프로젝트를 만들고 프로젝트 이름을 mychatgpt로 지정합니다.
2. 프로젝트 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>
3을 가져옵니다. 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; /** * @author xiangyuanhong * @description: TODO * @date 2023/3/21上午9:28 */ @Component public 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()); } }
4를 작성하여 프런트 엔드
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; /** * @author xiangyuanhong * @description: TODO * @date 2023/2/28下午4:57 */ @RestController public 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); } }
5와 상호 작용합니다. 개발, 프로젝트 템플릿에서 디렉토리에 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>
6. 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: { /** * * 解析请求返回的数据 * @param {object} res - 请求返回的数据 * @param {object} requestType - 请求类型 * @return {array} */ 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();
프로젝트가 완료되면 Spring Boot 프로젝트를 시작하고 http://ip:port에 접속합니다. 프로젝트 최종 효과 : http://hyrun.vip/
4. 프로젝트 전시
위 내용은 springboot+chatgpt+chatUI Pro를 사용하여 지능형 채팅 도구를 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











DALL-E 3는 이전 모델보다 대폭 개선된 모델로 2023년 9월 공식 출시되었습니다. 복잡한 디테일의 이미지를 생성할 수 있는 현재까지 최고의 AI 이미지 생성기 중 하나로 간주됩니다. 그러나 출시 당시에는 제외되었습니다.

ChatGPT와 Python의 완벽한 조합: 지능형 고객 서비스 챗봇 만들기 소개: 오늘날의 정보화 시대에 지능형 고객 서비스 시스템은 기업과 고객 간의 중요한 커뮤니케이션 도구가 되었습니다. 더 나은 고객 서비스 경험을 제공하기 위해 많은 기업이 고객 상담, 질문 답변 등의 업무를 완료하기 위해 챗봇을 활용하기 시작했습니다. 이 기사에서는 OpenAI의 강력한 모델인 ChatGPT와 Python 언어를 사용하여 지능형 고객 서비스 챗봇을 만드는 방법을 소개합니다.

설치 단계: 1. ChatGTP 공식 웹사이트 또는 모바일 스토어에서 ChatGTP 소프트웨어를 다운로드합니다. 2. 이를 연 후 설정 인터페이스에서 언어를 중국어로 선택합니다. 3. 게임 인터페이스에서 인간-기계 게임을 선택하고 설정합니다. 4. 시작한 후 채팅 창에 명령을 입력하여 소프트웨어와 상호 작용합니다.

SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

이 기사에서는 ChatGPT와 Java를 사용하여 지능형 챗봇을 개발하는 방법을 소개하고 몇 가지 구체적인 코드 예제를 제공합니다. ChatGPT는 자연어를 이해하고 인간과 유사한 텍스트를 생성할 수 있는 신경망 기반 인공지능 기술인 OpenAI가 개발한 Generative Pre-training Transformer의 최신 버전입니다. ChatGPT를 사용하면 적응형 채팅을 쉽게 만들 수 있습니다.

ChatGPTPHP를 사용하여 지능형 고객 서비스 로봇을 구축하는 방법 소개: 인공 지능 기술의 발전으로 로봇이 고객 서비스 분야에서 점점 더 많이 사용되고 있습니다. ChatGPTPHP를 사용하여 지능형 고객 서비스 로봇을 구축하면 기업이 보다 효율적이고 개인화된 고객 서비스를 제공하는 데 도움이 될 수 있습니다. 이 기사에서는 ChatGPTPHP를 사용하여 지능형 고객 서비스 로봇을 구축하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. ChatGPTPHP를 설치하고 ChatGPTPHP를 사용하여 지능형 고객 서비스 로봇을 구축합니다.

chatgpt는 중국에서는 사용할 수 있지만 등록할 수 없으며, 홍콩, 마카오에서는 등록을 원하는 경우 외국 휴대폰 번호를 사용하여 등록할 수 있습니다. 등록 과정에서 네트워크 환경을 전환해야 합니다. 외국 IP로.

ChatGPT와 Python을 사용하여 사용자 의도 인식 기능을 구현하는 방법 소개: 오늘날 디지털 시대에 인공지능 기술은 점차 다양한 분야에서 없어서는 안 될 부분이 되었습니다. 그 중 자연어 처리(Natural Language Process, NLP) 기술의 발달로 기계가 인간의 언어를 이해하고 처리할 수 있게 됐다. ChatGPT(Chat-GeneratingPretrainedTransformer)는 일종의
