개요
설명하다
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 주석을 제공하는 데 사용되어 클래스를 인스턴스화할 수 없는 도구 클래스로 만듭니다.
- 문자열 유형의 두 상수 chatEndpoint 및 apiKey가 정의되어 각각 OpenAI의 채팅 API 끝점과 API 키를 나타냅니다.
- OpenAI의 API 인터페이스에 채팅 메시지를 보내는 데 사용되는 채팅 메서드를 정의하고 입력 매개 변수는 채팅 내용을 나타내는 txt입니다.
- 타사 Java 도구 클래스 Hutool은 HTTP 요청 및 JSON 데이터 구문 분석에 사용됩니다. 그 중 HttpRequest.post() 메서드는 POST 요청을 보내는 데 사용되고, JsonUtils.toJson() 메서드는 매개 변수 paramMap을 JSON 형식의 문자열로 변환하는 데 사용되며, JSONUtil.parseObj() 메서드는 다음과 같은 데 사용됩니다. 인터페이스에서 반환된 JSON 문자열을 JSONObject 개체로 구문 분석합니다.
- 요청을 보낼 때 요청 매개변수를 지도 객체로 캡슐화합니다. 여기서 모델 속성은 사용된 GPT 모델을 나타내고 메시지 속성은 사용자의 채팅 메시지를 나타내는 HashMap 객체를 포함하는 목록 객체입니다.
- 요청을 보낸 후 인터페이스에서 반환한 JSON 데이터에서 챗봇이 반환한 메시지를 가져온 다음 메시지의 콘텐츠 속성을 메서드의 반환 값으로 사용합니다.
- 예외 처리에서는 Hutool에서 제공하는 예외 클래스 HttpException 및 ConvertException을 사용하여 예외를 처리합니다.
일반적으로 이 코드는 Java의 Hutool 도구 클래스를 사용하여 HTTP 요청을 보내고 JSON 데이터를 구문 분석하므로 OpenAI API를 통해 채팅 기능을 실현합니다.