概要
例証する
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) {
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: 送信されるテキスト コンテンツ。
戻り値: ボットの返信テキスト。
テスト
予防
- OpenAI API を利用するには、OpenAI 公式サイトでアカウントを登録し、API キーを取得する必要があります。
- チャット メソッドを使用する前に、OpenAIAPI の chatEndpoint 変数と apiKey 変数を変更して、API の URL とキーをそれぞれ指定する必要があります。
- チャット方式を使用する前に、使用する GPT-3 モデルとパラメータを決定する必要があります。
- チャット方式を使用する場合は、テキスト コンテンツの長さと形式、およびネットワーク接続の安定性と速度に注意する必要があります。
コードの説明
このコードは、チャット用の OpenAI の API インターフェイスにアクセスするために使用される Java ツール クラスです。以下に、重要なテクニカル ノートをいくつか示します。
- Java Lombok ツール クラスを使用して @UtilityClass アノテーションを提供し、クラスをインスタンス化不可能なツール クラスにします。
- OpenAI のチャット API エンドポイントと API キーをそれぞれ表す String 型の 2 つの定数 chatEndpoint と apiKey が定義されています。
- チャット メッセージを OpenAI の API インターフェイスに送信するためのチャット メソッドが定義されており、入力パラメーターはチャットの内容を表す txt です。
- サードパーティの Java ツール クラス Hutool は、HTTP 要求と JSON データの解析に使用されます。このうち、HttpRequest.post() メソッドは POST リクエストの送信に使用され、JsonUtils.toJson() メソッドはパラメータ paramMap を JSON 形式の文字列に変換するために使用され、JSONUtil.parseObj() メソッドはインターフェイスによって返された JSON 文字列を JSONObject オブジェクトに解析します。
- リクエストを送信するときは、リクエスト パラメータを Map オブジェクトとしてカプセル化します。このモデル属性は、使用される GPT モデルを表し、メッセージ属性は、ユーザーのチャット メッセージを表す HashMap オブジェクトを含む List オブジェクトです。
- リクエスト送信後、インターフェースから返されたJSONデータからチャットボットから返されたメッセージを取得し、メッセージの content 属性をメソッドの戻り値として使用します。
- 例外処理では、Hutool が提供する例外クラス HttpException と ConvertException を使用して例外処理を行います。
一般に、このコードは Java の Hutool ツール クラスを使用して HTTP リクエストを送信し、JSON データを解析して、OpenAI API を介したチャット機能を実現します。