大綱
說明
Java調(diào)用OpenAI接口,Java調(diào)用實(shí)現(xiàn)ChatGPT聊天,OpenAIAPI是一個(gè)自己封裝的OpenAI GPT-3聊天API的Java工具類,可用于通過Java代碼調(diào)用GPT-3模型進(jìn)行自然語(yǔ)言交互,實(shí)現(xiàn)智能聊天等功能。
通過調(diào)用GPT-3模型,輸入一段文本,返回機(jī)器人對(duì)話回復(fù)的文本。
附項(xiàng)目代碼:在本文最后面
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 {
/**
* 聊天端點(diǎn)
*/
String chatEndpoint = "https://api.openai.com/v1/chat/completions";
/**
* api密匙
*/
String apiKey = "Bearer 你自己的key";
/**
* 發(fā)送消息
*
* @param txt 內(nèi)容
* @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 "出現(xiàn)了異常";
} catch (ConvertException e) {
return "出現(xiàn)了異常";
}
return message.getStr("content");
}
public static void main(String[] args) {
System.out.println(chat("Hello,一個(gè)小浪吳啊"));
}
}
參數(shù)說明:
txt:要發(fā)送的文本內(nèi)容。
返回值:機(jī)器人的回復(fù)文本。
測(cè)試
注意事項(xiàng)
- 在使用OpenAIAPI之前,需要先在OpenAI官網(wǎng)注冊(cè)賬號(hào),并獲取API密鑰。
- 在使用chat方法之前,需要先修改OpenAIAPI中的chatEndpoint和apiKey變量,分別指定API的URL和密鑰。
- 在使用chat方法之前,需要先確定使用的GPT-3模型和參數(shù)。
- 在使用chat方法時(shí),需要注意文本內(nèi)容的長(zhǎng)度和格式,以及網(wǎng)絡(luò)連接的穩(wěn)定性和速度。
代碼說明
這段代碼是一個(gè) Java 工具類,用于訪問 OpenAI 的 API 接口來進(jìn)行聊天。下面是一些重要的技術(shù)說明:
- 使用了 Java 的 Lombok 工具類,來提供 @UtilityClass 注解,使該類成為一個(gè)不可實(shí)例化的工具類。
- 定義了兩個(gè) String 類型的常量 chatEndpoint 和 apiKey,分別代表 OpenAI 的聊天 API 端點(diǎn)和 API 密鑰。
- 定義了一個(gè) chat 方法,用于發(fā)送聊天消息到 OpenAI 的 API 接口,輸入?yún)?shù)為 txt,代表聊天內(nèi)容。
- 使用了第三方 Java 工具類 Hutool 來進(jìn)行 HTTP 請(qǐng)求和 JSON 數(shù)據(jù)解析。其中,HttpRequest.post() 方法用于發(fā)送 POST 請(qǐng)求,JsonUtils.toJson() 方法用于將參數(shù) paramMap 轉(zhuǎn)換為 JSON 格式的字符串,JSONUtil.parseObj() 方法用于將接口返回的 JSON 字符串解析為 JSONObject 對(duì)象。
- 在發(fā)送請(qǐng)求時(shí),將請(qǐng)求參數(shù)封裝為一個(gè) Map 對(duì)象,其中 model 屬性代表使用的 GPT 模型,messages 屬性為一個(gè) List 對(duì)象,其中包含一個(gè) HashMap 對(duì)象,代表用戶的聊天消息。
- 在發(fā)送請(qǐng)求后,從接口返回的 JSON 數(shù)據(jù)中獲取到聊天機(jī)器人返回的消息,然后將消息的 content 屬性作為方法的返回值。
- 在異常處理中,使用了 Hutool 提供的 HttpException 和 ConvertException 異常類來處理異常情況。
總體來說,這段代碼使用了 Java 的 Hutool 工具類來發(fā)送 HTTP 請(qǐng)求和解析 JSON 數(shù)據(jù),從而實(shí)現(xiàn)了通過 OpenAI API 進(jìn)行聊天的功能。
后文
項(xiàng)目地址:https://gitee.com/wy521a/astar-weixin-mp文章來源:http://www.zghlxwxcb.cn/news/detail-816035.html
集成公眾號(hào)使用:https://gitee.com/wy521a/astar-weixin-mp文章來源地址http://www.zghlxwxcb.cn/news/detail-816035.html
到了這里,關(guān)于Java SpringBoot實(shí)現(xiàn)調(diào)用OpenAI ChatGPT的相關(guān)接口(詳細(xì)教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!