大纲
说明
Java调用OpenAI接口,Java调用实现ChatGPT聊天,OpenAIAPI是一个自己封装的OpenAI GPT-3聊天API的Java工具类,可用于通过Java代码调用GPT-3模型进行自然语言交互,实现智能聊天等功能。
通过调用GPT-3模型,输入一段文本,返回机器人对话回复的文本。
附项目代码:在本文最后面
OpenAI3.5模型版本使用
工具类
使用了Lombok以及hutool依赖
以下是自己封装的工具类,只需写一下自己的api就可以使用了哦
importcn.hutool.core.convert.ConvertException;importcn.hutool.http.HttpException;importcn.hutool.http.HttpRequest;importcn.hutool.json.JSONArray;importcn.hutool.json.JSONObject;importcn.hutool.json.JSONUtil;importlombok.experimental.UtilityClass;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/**
* @author Astar
* ClassName:OpenAIAPI.java
* date:2023-03-03 16:49
* Description:
*/@UtilityClasspublicclassOpenAIAPI{/**
* 聊天端点
*/String chatEndpoint ="https://api.openai.com/v1/chat/completions";/**
* api密匙
*/String apiKey ="Bearer 你自己的key";/**
* 发送消息
*
* @param txt 内容
* @return {@link String}
*/publicStringchat(String txt){Map<String,Object> paramMap =newHashMap<>();
paramMap.put("model","gpt-3.5-turbo");List<Map<String,String>> dataList =newArrayList<>();
dataList.add(newHashMap<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");}publicstaticvoidmain(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 进行聊天的功能。
后文
版权归原作者 一个小浪吴啊 所有, 如有侵权,请联系我们删除。