ChatGPT作为OpenAI训练的大型语言模型,为自然语言处理任务提供人工智能服务。通过使用 ChatGPT API,开发人员可以将 ChatGPT 模型的功能集成到他们的应用程序中。在本文中,我们将探索如何通过 Java 使用 ChatGPT API。
第 1 步:获取 API 密钥
在使用 ChatGPT API 之前,您需要从 OpenAI 获取 API 密钥。您可以通过在 OpenAI 网站上创建一个帐户并按照说明创建新的 API 密钥来执行此操作。API 密钥是一长串字母和数字,您将使用它来验证您的 API 请求。
第 2 步:设置您的 Java 环境
要从 Java 发送 API 请求,您需要使用可以发出 HTTP 请求的库。我们推荐使用 OkHttp 库,它易于使用且得到广泛支持。
要使用 OkHttp,您需要将以下依赖项添加到您的 Maven 项目中:
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.1</version> </dependency>
|
如果你没有使用 Maven,你可以从官网下载 OkHttp 库,然后手动添加到你的项目中。第 3 步:发送 API 请求
下面是如何使用 OkHttp 发送 API 请求的示例。要发出 API 请求,您需要向 ChatGPT API 端点发送 POST 请求。端点 URL 是https://api.openai.com/v1/engine/davinci-codex/completions。
以下是如何使用 OkHttp 发出 API 请求的示例:
import okhttp3.*;
public class ChatGPTClient { private static final String API_URL = "https://api.openai.com/v1/engines/davinci-codex/completions";
public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient();
String prompt = "My name is"; String apiKey = "YOUR_API_KEY";
MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"prompt\": \"" + prompt + "\"}");
Request request = new Request.Builder() .url(API_URL) .post(body) .addHeader("Authorization", "Bearer " + apiKey) .addHeader("Content-Type", "application/json") .build();
Response response = client.newCall(request).execute(); String responseBody = response.body().string();
System.out.println(responseBody); } }
|
这段代码向ChatGPT API发送一个完成请求,提示 "你好,我的名字是",并将响应体打印到控制台。你可以根据需要修改提示和其他参数。
第4步:设置请求主体
请求主体应该包含一个JSON对象,包含完成请求的参数。必需的参数是 "提示",它指定了要生成完成度的输入文本。你还可以设置可选参数,如 "温度"、"max_tokens "和 "top_p",以控制生成过程。
下面是一个完成请求JSON对象的例子:
{
"prompt": "Hello, my name is",
"temperature": 0.5,
"max_tokens": 50,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0
}
你可以根据需要修改提示和其他参数。每个参数的含义如下:
- "prompt":要生成补全的输入文本。 - "temperature":控制生成的补语的随机性。更高的值会导致更多的随机性完成。 - "max_tokens":每个生成的补语中的最大标记数(单词或标点符号)。 - "top_p":控制生成的补语的多样性。较低的值会导致更多的完整性。 - "frequency_penalty":惩罚那些重复提示词或短语的完成品。 - "presence_penalty":惩罚那些包含提示中没有的单词或短语的填写。
|
第5步:处理API响应
发送API请求后,你将收到一个包含生成的完成度的JSON对象。响应格式如下:
{ "choices": [ { "text": "My name is John.", "index": 0, "logprobs": null, "finish_reason": "stop" }, { "text": "My name is Sarah.", "index": 1, "logprobs": null, "finish_reason": "stop" }, { "text": "My name is David.", "index": 2, "logprobs": null, "finish_reason": "stop" } ] }
|
"choices"数组包含一个或多个完成度,每个完成度由一个具有以下字段的JSON对象表示:
"text":生成的完成度文本。 "index":完成度在生成的完成度列表中的索引。 "logprobs":完成度中的标记的日志概率,用于调试目的。 "finish_reason":完成度生成停止的原因。可能的值是 "stop"、"max_tokens"、"temperature "和 "top_p"。
|
你可以使用Gson或Jackson这样的JSON库来解析响应的JSON对象。下面是一个使用Gson的例子:
import com.google.gson.Gson;
public class ChatGPTClient { // ... public static void main(String[] args) throws Exception { // ...
Gson gson = new Gson(); ChatGPTResponse response = gson.fromJson(responseBody, ChatGPTResponse.class); for (ChatGPTCompletion completion : response.choices) { System.out.println(completion.text); } } private static class ChatGPTResponse { private ChatGPTCompletion[] choices; } private static class ChatGPTCompletion { private String text; private int index; private Object logprobs; private String finish_reason; } }
|
这段代码使用Gson将响应的JSON对象解析成Java对象。ChatGPTResponse "类代表顶级的JSON对象,"ChatGPTCompletion "类代表每个完成对象。每个完成对象的 "文本 "字段被打印到控制台。
总结
在这篇文章中,我们展示了如何用Java来使用ChatGPT API。通过发送带有正确头信息和正文的HTTP请求,并解析JSON响应,你可以将ChatGPT模型的力量整合到你的Java应用程序中。