基于ChatGPT+SpringBoot实现智能聊天AI机器人接口并上线至服务器的方法
作者:大数据小禅 发布时间:2023-07-01 06:19:34
🚀 ChatGPT是最近很热门的AI智能聊天机器人
🚀 本文使用SpringBoot+OpenAI的官方API接口,自己实现一个可以返回对话数据的接口并上线服务器
🚀 用途方面相比于普通的聊天AI更加的广泛,甚至可以帮助你改BUG,写代码!!!
最终接口效果演示
ChatGPT介绍
ChatGPT是一款基于自然语言处理技术的聊天机器人。它使用受控语料库,并使用最先进的深度学习技术来学习用户的输入,以便以最相似的方式回应。ChatGPT可以模拟真实的人类对话,并能够更贴近用户的需求,提供更有价值的服务。
SpringBoot介绍
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为一个重要的先驱。
Spring Boot为Spring应用提供了一种快速的起步方式,可用来创建独立的,生产级的基于Spring的应用程序。它提供了一种更快捷的方式来创建Spring应用,并且不需要任何XML配置。Spring Boot提供了可选择的高级特性,如持久层技术和安全性,可以让你快速构建令人满意的web应用程序和服务。
构建SpringBoot项目
项目主要使用的maven依赖如下,通过Maven构建项目即可
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yopai</groupId>
<artifactId>openapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>openapi</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.21</version>
</dependency>
Post请求解析
RestTemplate是Spring框架的一个用于访问RESTful服务的客户端库,它提供了一组简单的、可扩展的方法来访问RESTful服务。它可以访问HTTP服务,并以字符串、Java对象或多种格式的数据(如JSON)进行序列化和反序列化。RestTemplate支持多种HTTP方法,如GET、POST、PUT、DELETE等,可以用来访问RESTful服务,并获取服务器返回的结果。
public static String sendPost(String data) {
RestTemplate client = new RestTemplate();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Authorization","Bearer <YourAPI>");
httpHeaders.add("Content-Type", "application/json"); // 传递请求体时必须设置
// String requestJson = "{\n" +
// " \"model\": \"text-davinci-003\",\n" +
// " \"prompt\": \"你好\",\n" +
// " \"temperature\": 0, \n" +
// " \"max_tokens\": 2048\n" +
// "}";
String requestJson = String.format(
"{\n" +
" \"model\": \"text-davinci-003\",\n" +
" \"prompt\": \"%s\",\n" +
" \"temperature\": 0, \n" +
" \"max_tokens\": 2048\n" +
"}",data
);
HttpEntity<String> entity = new HttpEntity<String>(requestJson,httpHeaders);
ResponseEntity<String> response = client.exchange("https://api.openai.com/v1/completions", HttpMethod.POST, entity, String.class);
System.out.println(response.getBody());
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
JSONArray choices = jsonObject.getJSONArray("choices");
String text = choices.getJSONObject(0).getString("text");
// Object o = jsonObject.get("\"choices\"");
return text;
}
接口控制类
@PostMapping("gpt")
public JsonData get(@RequestBody Promat promat){
String text = HttpGPT.sendPost(promat.getData());
System.out.println(promat);
JsonData jsonData = JsonData.bulidSuccess(text);
return jsonData;
}
打包发布接口到服务器
通过IDEA将项目进行打包后上传到服务器,运行以下命令即可完成线上部署
java -jar :运行打包好的项目
nohup:让项目在后台一直运行
之后把LocalHost修改成服务器的公网IP即可
来源:https://soyboke.blog.csdn.net/article/details/128522969
猜你喜欢
- 背景Java是一种流行的编程语言,验证码是一种常用的网络安全技术。Java发展至今,网上也出现了各种各样的验证码,本人初学Java,下面是我
- SpringBoot2底层注解一、@ImportResource@Conditional注解,是根据条件进行装配。满足了 Condition
- 前端页面功能模块化拆分当一个系统的功能很多时,不可能所有功能模块的页面都写在一个页面里面,这时就需要将不同功能模块的页面拆分出去,就像模板一
- Java synchronized 关键字 可以将一个代码块或一个方法标记为同步代码块。同步代码块是指同一时间只能有一个线程执行的代码,并且
- 1. 每个编译单元(文件)都只能有一个public类。即每个编译单元都有单一的公共接口,用public类实现。此时,mian()就必须要包含
- 最近用了Stream流,感觉超好用,记录一下。1、快速创建List比如我有个实体类User,User有个属性Namepublic class
- 本文实例为大家分享了Java实现简单幸运抽奖的具体代码,供大家参考,具体内容如下代码模块:User类:package test1;publi
- 本文实例讲述了Android基于SoftReference缓存图片的方法。分享给大家供大家参考,具体如下:Java中的SoftReferen
- 起因:有后端同事反馈在异步线程中获取了request中的参数,然后下一个请求是get请求的话,发现会偶尔出现参数丢失的问题.示例代码:@Ge
- 日常对于金额计算,应该都是用的BigDecimal,可是苦于没有好的工具类方法,现在贡献一个我正在用的对于数字计算的工具类,项目中就是用的这
- 前言easyui是一种基于jQuery的用户界面插件集合。easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。使用
- 为了让我提供的通用 Mapper 的 boot-starter 同时兼容 Spring Boot 1.x 和 2.x,增加了这么一个工具类。
- 目录1. SpringCloud特点2. 分布式系统的三个指标CAP3. Eureka4. SpringCloud Demo4.1 regi
- java @Value("${}")获取不到配置文件中值1、property.yml配置spring: ma
- springboot整合tkmapper1.导入pom依赖1.1 导入springboot的parent依赖<parent> &
- 生产者消费者模式的几种实现方式拿我们生活中的例子来说,工厂生产出来的产品总是要输出到外面使用的,这就是生产与消费的概念。在我们实际的软件开发
- 当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。在临界区中使用适当的同步就可以避免
- SpringBoot2.x过后static下的静态资源无法访问package com.example.thymeleaf.commons;i
- 前言在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问、异常处理、消息队列、缓存服务、OSS服务,以及接口日志配置,接口文档
- 本文实例讲述了java实现的简单猜数字游戏代码。分享给大家供大家参考。具体代码如下:import java.util.InputMismat