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 にアクセスするためのスレッドも再度開きます。openAI が結果の後で返すと、バックエンドは UUID をキーとして使用し、openAI によって返された結果は値として redis に保存されます。フロントエンドは、バックエンドからの最初のリクエストの結果の UUID に基づいて 5 秒ごとにバックエンド応答インターフェイスを要求します。応答インターフェイスは、UUID に基づいて Redis に値があるかどうかをクエリします。 -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. chatUI Pro がバックエンドと通信するための setup.js を作成します。
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 中国語 Web サイトの他の関連記事を参照してください。

ホット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
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









DALL-E 3は、前モデルより大幅に改良されたモデルとして2023年9月に正式導入されました。これは、複雑な詳細を含む画像を作成できる、これまでで最高の AI 画像ジェネレーターの 1 つと考えられています。ただし、発売当初は対象外でした

ChatGPT と Python の完璧な組み合わせ: インテリジェント カスタマー サービス チャットボットの作成 はじめに: 今日の情報化時代において、インテリジェント カスタマー サービス システムは企業と顧客の間の重要なコミュニケーション ツールとなっています。より良い顧客サービス体験を提供するために、多くの企業が顧客相談や質問応答などのタスクを完了するためにチャットボットに注目し始めています。この記事では、OpenAI の強力なモデル ChatGPT と Python 言語を使用して、インテリジェントな顧客サービス チャットボットを作成し、顧客サービスを向上させる方法を紹介します。

インストール手順: 1. ChatGTP ソフトウェアを ChatGTP 公式 Web サイトまたはモバイル ストアからダウンロードします; 2. それを開いた後、設定インターフェイスで言語を中国語を選択します; 3. ゲーム インターフェイスでヒューマン マシン ゲームを選択し、中国スペクトル; 4 . 起動後、チャット ウィンドウにコマンドを入力してソフトウェアを操作します。

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivotal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

この記事では、ChatGPT と Java を使用してインテリジェントなチャットボットを開発する方法を紹介し、いくつかの具体的なコード例を示します。 ChatGPT は、OpenAI によって開発された生成事前トレーニング トランスフォーマーの最新バージョンです。これは、自然言語を理解し、人間のようなテキストを生成できるニューラル ネットワーク ベースの人工知能テクノロジーです。 ChatGPT を使用すると、適応型チャットを簡単に作成できます

ChatGPTPHP を使用してインテリジェントな顧客サービス ロボットを構築する方法 はじめに: 人工知能技術の発展に伴い、顧客サービスの分野でロボットの使用が増えています。 ChatGPTPHP を使用してインテリジェントな顧客サービス ロボットを構築すると、企業はより効率的でパーソナライズされた顧客サービスを提供できるようになります。この記事では、ChatGPTPHP を使用してインテリジェントな顧客サービス ロボットを構築する方法を紹介し、具体的なコード例を示します。 1. ChatGPTPHP をインストールし、ChatGPTPHP を使用してインテリジェントな顧客サービス ロボットを構築します。

chatgpt は中国でも使用できますが、香港やマカオでも登録できません。ユーザーが登録したい場合は、外国の携帯電話番号を使用して登録できます。登録プロセス中にネットワーク環境を切り替える必要があることに注意してください。外国のIP。

ChatGPT と Python を使用してユーザー意図認識機能を実装する方法 はじめに: 今日のデジタル時代において、人工知能技術はさまざまな分野で徐々に不可欠な部分になりました。その中で、自然言語処理 (Natural Language Processing、NLP) テクノロジーの開発により、機械が人間の言語を理解して処理できるようになります。 ChatGPT (Chat-GeneratingPretrainedTransformer) は、
