大纲
说明
Java调用OpenAI接口,Java调用实现ChatGPT聊天,OpenAIAPI是一个自己封装的OpenAI GPT-3聊天API的Java工具类,可用于通过Java代码调用GPT-3模型进行自然语言交互,实现智能聊天等功能。
通过调用GPT-3模型,输入一段文本,返回机器人对话回复的文本。
附项目代码:在本文最后面
OpenAI3.5模型版本使用
工具类
使用了Lombok以及hutool依赖
以下是自己封装的工具类,只需写一下自己的api就可以使用了哦
import cn.hutool.core.convert.ConvertException;import cn.hutool.http.HttpException;import cn.hutool.http.HttpRequest;import cn.hutool.json.JSONArray;import cn.hutool.json.JSONObject;import cn.hutool.json.JSONUtil;import lombok.experimental.UtilityClass;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author Astar * ClassName:OpenAIAPI.java * date:2023-03-03 16:49 * Description: */@UtilityClasspublic class OpenAIAPI {/** * 聊天端点 */String chatEndpoint = "https://api.openai.com/v1/chat/completions";/** * api密匙 */String apiKey = "Bearer 你自己的key";/** * 发送消息 * * @param txt 内容 * @return {@link String} */public String chat(String txt) {Map<String, Object> paramMap = new HashMap<>();paramMap.put("model", "gpt-3.5-turbo");List<Map<String, String>> dataList = new ArrayList<>();dataList.add(new HashMap<String, String>(){{put("role", "user");put("content", txt);}});paramMap.put("messages", dataList);JSONObject message = null;try {String body = HttpRequest.post(chatEndpoint).header("Authorization", apiKey).header("Content-Type", "application/json").body(JsonUtils.toJson(paramMap)).execute().body();JSONObject jsonObject = JSONUtil.parseObj(body);JSONArray choices = jsonObject.getJSONArray("choices");JSONObject result = choices.get(0, JSONObject.class, Boolean.TRUE);message = result.getJSONObject("message");} catch (HttpException e) {return "出现了异常";} catch (ConvertException e) {return "出现了异常";}return message.getStr("content");}public static void main(String[] args) {System.out.println(chat("Hello,一个小浪吴啊"));}}
参数说明:
txt:要发送的文本内容。
返回值:机器人的回复文本。
测试
注意事项
- 在使用OpenAIAPI之前,需要先在OpenAI官网注册账号,并获取API密钥。
- 在使用chat方法之前,需要先修改OpenAIAPI中的chatEndpoint和apiKey变量,分别指定API的URL和密钥。
- 在使用chat方法之前,需要先确定使用的GPT-3模型和参数。
- 在使用chat方法时,需要注意文本内容的长度和格式,以及网络连接的稳定性和速度。
代码说明
这段代码是一个 Java 工具类,用于访问 OpenAI 的 API 接口来进行聊天。下面是一些重要的技术说明:
- 使用了 Java 的 Lombok 工具类,来提供 @UtilityClass 注解,使该类成为一个不可实例化的工具类。
- 定义了两个 String 类型的常量 chatEndpoint 和 apiKey,分别代表 OpenAI 的聊天 API 端点和 API 密钥。
- 定义了一个 chat 方法,用于发送聊天消息到 OpenAI 的 API 接口,输入参数为 txt,代表聊天内容。
- 使用了第三方 Java 工具类 Hutool 来进行 HTTP 请求和 JSON 数据解析。其中,HttpRequest.post() 方法用于发送 POST 请求,JsonUtils.toJson() 方法用于将参数 paramMap 转换为 JSON 格式的字符串,JSONUtil.parseObj() 方法用于将接口返回的 JSON 字符串解析为 JSONObject 对象。
- 在发送请求时,将请求参数封装为一个 Map 对象,其中 model 属性代表使用的 GPT 模型,messages 属性为一个 List 对象,其中包含一个 HashMap 对象,代表用户的聊天消息。
- 在发送请求后,从接口返回的 JSON 数据中获取到聊天机器人返回的消息,然后将消息的 content 属性作为方法的返回值。
- 在异常处理中,使用了 Hutool 提供的 HttpException 和 ConvertException 异常类来处理异常情况。
总体来说,这段代码使用了 Java 的 Hutool 工具类来发送 HTTP 请求和解析 JSON 数据,从而实现了通过 OpenAI API 进行聊天的功能。
后文
项目地址:https://gitee.com/wy521a/astar-weixin-mp
集成公众号使用:https://gitee.com/wy521a/astar-weixin-mp