如虎添翼,Java接入ChatGPT API

本文介绍如何使用Java与ChatGPT API交互,帮助您将ChatGPT模型的强大功能集成到Java应用程序中!

微信搜索关注《Java学研大本营》

图片

ChatGPT作为一个由OpenAI训练的大型语言模型,提供了自然语言处理任务的人工智能服务。通过使用ChatGPT API,开发人员可以将ChatGPT模型的能力集成到他们的应用程序中。在本文中,我们将探讨如何使用Java与ChatGPT API交互。

1 步骤1:获取API密钥

在您使用ChatGPT API之前,需要从OpenAI获取API密钥。您可以在OpenAI网站上创建一个帐户,按照说明创建新的API密钥来完成此操作。API密钥是一长串字母和数字,您将使用它来验证API请求。

图片

2 步骤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请求

要发送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);
    }
}

此代码使用“Hello, my name is”作为提示,向ChatGPT API发送完成请求,并将响应主体打印到控制台。您可以根据需要修改提示和其他参数。

4 设置请求正文

发送API请求时,请求正文应包含一个JSON对象,其中包含完成请求的参数。必需的参数是“prompt”,用于指定要为其生成完成的输入文本。除此之外,您还可以设置可选参数,例如“temperature”、“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类表示每个完成对象。每个完成项的“text”字段将打印到控制台。

6  总结

本文介绍了如何使用Java与ChatGPT API交互。通过发送带有正确头部和请求体的HTTP请求,并解析JSON响应,您可以将ChatGPT模型的强大功能集成到Java应用程序中。

推荐书单

IT BOOK 多得(点击查看5折活动书单)icon-default.png?t=N7T8https://u.jd.com/psx2y1M

《Java从入门到精通(第7版)》

《Java从入门到精通(第7版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细讲解了使用Java语言进行程序开发需要掌握的知识。全书分为4篇共24章,内容包括初识Java,开发工具(IDEA、Eclipse),Java语言基础,流程控制,数组,类和对象,继承、多态、抽象类与接口,包和内部类,异常处理,字符串,常用类库,集合类,枚举类型与泛型,lambda表达式与流处理,I/O(输入/输出),反射与注解,数据库操作,Swing程序设计,Java绘图,多线程,并发,网络通信,飞机大战游戏,MR人脸识别打卡系统。书中所有知识都结合具体实例进行讲解,涉及的程序代码都给出了详细的注释,这可以帮助读者轻松领会Java程序开发的精髓,并快速提高开发技能。

《Java从入门到精通(第7版)》icon-default.png?t=N7T8https://item.jd.com/14067396.html

精彩回顾

10个企业级软件架构设计模式

8个用于绘制软件架构图的画图工具

10个不可不知的Spring Boot注释方法

10个不能错过的IntelliJ IDEA插件

孰优孰劣,gRPC和Rest性能大比拼

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值