大纲
说明
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:
*/
@UtilityClass
public 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) {
MapString, Object> paramMap = new HashMap>();
paramMap.put("model", "gpt-3.5-turbo");
ListMapString, String>> dataList = new ArrayList>();
dataList.add(new HashMapString, 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