Java SpringBoot は、OpenAI ChatGPT を呼び出すための関連インターフェースを実装します (詳細なチュートリアル)

概要

例証する

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: 送信されるテキスト コンテンツ。
戻り値: ボットの返信テキスト。

テスト

予防

  1. OpenAI API を利用するには、OpenAI 公式サイトでアカウントを登録し、API キーを取得する必要があります。
  2. チャット メソッドを使用する前に、OpenAIAPI の chatEndpoint 変数と apiKey 変数を変更して、API の URL とキーをそれぞれ指定する必要があります。
  3. チャット方式を使用する前に、使用する GPT-3 モデルとパラメータを決定する必要があります。
  4. チャット方式を使用する場合は、テキスト コンテンツの長さと形式、およびネットワーク接続の安定性と速度に注意する必要があります。

コードの説明

このコードは、チャット用の OpenAI の API インターフェイスにアクセスするために使用される Java ツール クラスです。以下に、重要なテクニカル ノートをいくつか示します。

  1. Java Lombok ツール クラスを使用して @UtilityClass アノテーションを提供し、クラスをインスタンス化不可能なツール クラスにします。
  2. OpenAI のチャット API エンドポイントと API キーをそれぞれ表す String 型の 2 つの定数 chatEndpoint と apiKey が定義されています。
  3. チャット メッセージを OpenAI の API インターフェイスに送信するためのチャット メソッドが定義されており、入力パラメーターはチャットの内容を表す txt です。
  4. サードパーティの Java ツール クラス Hutool は、HTTP 要求と JSON データの解析に使用されます。このうち、HttpRequest.post() メソッドは POST リクエストの送信に使用され、JsonUtils.toJson() メソッドはパラメータ paramMap を JSON 形式の文字列に変換するために使用され、JSONUtil.parseObj() メソッドはインターフェイスによって返された JSON 文字列を JSONObject オブジェクトに解析します。
  5. リクエストを送信するときは、リクエスト パラメータを Map オブジェクトとしてカプセル化します。このモデル属性は、使用される GPT モデルを表し、メッセージ属性は、ユーザーのチャット メッセージを表す HashMap オブジェクトを含む List オブジェクトです。
  6. リクエスト送信後、インターフェースから返されたJSONデータからチャットボットから返されたメッセージを取得し、メッセージの content 属性をメソッドの戻り値として使用します。
  7. 例外処理では、Hutool が提供する例外クラス HttpException と ConvertException を使用して例外処理を行います。

一般に、このコードは Java の Hutool ツール クラスを使用して HTTP リクエストを送信し、JSON データを解析して、OpenAI API を介したチャット機能を実現します。

エピローグ

プロジェクトアドレス: https://gitee.com/wy521a/astar-weixin-mp

統合された公式アカウントの使用: https://gitee.com/wy521a/astar-weixin-mp

おすすめ

転載: blog.csdn.net/A_yonga/article/details/129398716