一文读懂 ChatGPT API 接入指南

闪电发卡1年前ChatGPT915

image.png

最近 ChatGPT 突然爆火。抱着好奇的心态我也去官网注册账号体验了一下,因为网站人数太多,一时半会竟然注册不了,不过最终还是成功注册了。
还没注册的朋友们可以参考一下这篇教程 https://www.chatgptzh.com/post/210.html
写的很详细,我就不再说明了。

在我和 ChatGPT 聊了十几分钟之后,这个东西令我大为震惊,虽然它有些地方显得笨笨的,带点机器人的味道,但是丝毫不影响我对它的喜爱。
感叹之余我思考了一下,能不能将它接入到我们现有的应用中。
于是我仔细浏览了一下 OpenAI 官网,果然已经提供了比较多的接口供我们使用。
准备工作 ChatGPT API 接入需要如下条件。

已成功注册 OpenAI 的账号。

创建 API KEY,这个 API KEY 是用于 HTTP 请求身份验证的,可以创建多个。如下图点击“Create new secret key“,
注意这个创建之后需要马上复制好保存,关闭弹框之后就看不到了。


image.png



官方 API 文档链接 https://platform.openai.com/docs/api-reference

注意 API 调用是收费的,但是 OpenAI 已经为我们免费提供了18美元的用量,足够大家放心使用。(2024.4不再提供)

image.png

补全接口示例
该接口功能较多,支持最常用的问答功能。

请求方式,Post

url,https://api.openai.com/v1/completions

请求体 (json)。

{
  "model": "text-davinci-003",
  "prompt": "Say this is a test",
  "max_tokens": 7,
  "temperature": 0,
  "top_p": 1,
  "n": 1,
  "stream": false
}

4、接口文档,https://platform.openai.com/docs/api-reference

请求参数解析

字段说明
model可选参数。语言模型,这里选择的是text-davinci-003
prompt必选参数。即用户的输入。
max_tokens可选参数,默认值为 16。最大分词数,会影响返回结果的长度。
temperature可选参数,默认值为 1,取值 0-2。该值越大每次返回的结果越随机,即相似度越小。
top_p可选参数,与temperature类似。
n可选参数,默认值为 1。表示对每条prompt生成多少条结果。
stream可选参数,默认值为false。表示是否回流部分结果。

请求示例
本文使用OkHttp作为网络请求框架,Moshi作为序列/反序列化框架。编写单元测试对该接口进行请求,代码如下。


1、OkHttp 的初始化。

private final OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .callTimeout(60, TimeUnit.SECONDS)
        .build();

2、请求实体类。

private static class CompletionRequest {
    private String model = "text-davinci-003";
    private String prompt;
    private Integer max_tokens = 256;
    private float temperature = 0.5f;
    private Integer top_p = 1;
    private Integer n = 1;
    private Boolean stream = false;
    private Boolean logprobs;
    private String stop;
}

3、请求方法。

使用OkHttp发送请求。需注意所有的 Post 请求需要添加头字段Authorization,值为Bearer YOUR_API_KEY来验证身份。

public void completion(String prompt) throws IOException {
    CompletionRequest completionRequest = new CompletionRequest();
    completionRequest.setPrompt(prompt);

    String reqJson = moshi.adapter(CompletionRequest.class).toJson(completionRequest);
    System.out.println("reqJson: " + reqJson);
    Request request = new Request.Builder()
            .url("https://api.openai.com/v1/completions")
            // 将 API_KEY 替换成你自己的 API_KEY
            .header("Authorization", "Bearer " + API_KEY)
            .post(RequestBody.create(MEDIA_TYPE_JSON, reqJson))
            .build();

    try (Response response = okHttpClient.newCall(request).execute()) {
        if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
        System.out.println(response.body().string());
    }
}

4、在completion()测试方法中调用上面的completion(String prompt)方法

@Test
public void completion() {
    try {
        chatGPT.completion("你能背诵多少位圆周率");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

5、查看请求结果

{
  "id": "cmpl-6j9PhjAom9GyxBNCVacvckcVNKVZg",
  "object": "text_completion",
  "created": 1676218965,
  "model": "text-davinci-003",
  "choices": [
    {
      "text": "?\n\n我可以背诵50位圆周率:3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679。",
      "index": 0,
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 21,
    "completion_tokens": 73,
    "total_tokens": 94
  }
}

总结

通过上面一个例子,相信大家已经学会了如何将 ChatGPT API 接入到自己的应用了。OpenAI 还提供了其他有用的接口,这里就不一个一个说明了,大家可以前往官网自行查看文档。


闪电发卡ChatGPT产品推荐:

ChatGPT独享账号:https://www.chatgptzh.com/post/86.html

ChatGPT Plus共享账号:https://www.chatgptzh.com/post/319.html

ChatGPT Plus独享账号(购买充值代充订阅):https://www.chatgptzh.com/post/306.html

ChatGPT APIKey购买充值(直连+转发):https://www.chatgptzh.com/post/305.html

ChatGPT Plus国内镜像逆向版:https://www.chatgptzh.com/post/312.html

ChatGPT国内版(AIChat):https://www.chatgptzh.com/post/318.html


相关文章

微信快速接入ChatGPT教程,让你的微信秒变人工智能机器人

微信快速接入ChatGPT教程,让你的微信秒变人工智能机器人

前言最近ChatGPT可谓是火的一发不可收拾,从圈内火到圈外。在人工智能领域,Ai已经是一个屡见不鲜的东西了,为什么这次OpenAi推出的ChatGPT却异常的受人欢迎?其实这还得益于GPT模型。那么...

ChatGPT API中的Tokens限制及其解决方案

闪电发卡ChatGPT产品推荐:ChatGPT独享账号:https://www.chatgptzh.com/post/86.htmlChatGPT Plus独享共享账号购买代充:https://www...

如何使用Python调用ChatGPT API?

如何使用Python调用ChatGPT API?

什么是ChatGPT?  ChatGPT 是由 OpenAI 开发的一个语言模型。OpenAI 是一家领先的人工智能研究机构。ChatGPT 基于变换器架构,使用深度学习生成会话风格的文本。该模型在大...

任何地方无障碍快速访问!ChatGPT Next Web——一键免费部署你的私人ChatGPT网页应用

任何地方无障碍快速访问!ChatGPT Next Web——一键免费部署你的私人ChatGPT网页应用

今天来分享一个私人 ChatGPT 网页应用——ChatGPT Next Web,让你随时随地方便使用ChatGPT!主界面ChatGPT Next Web 简单介绍(来自GitHub)1.1 主要功...

在云服务器上搭建个人版ChatGPT及后端Spring Boot集成ChatGPT

在云服务器上搭建个人版ChatGPT及后端Spring Boot集成ChatGPT

一、国内服务器上搭建chat GPT首先,你需要准备以下东西:1、一台可以访问公网的Linux云服务器,最低配置1核2G即可(当然,有钱可以任性,买最高配置)2、ChatGPT的密钥3、开源的仿Cha...

如何连接到ChatGPT API

如何连接到ChatGPT API

由于其独特、几乎准确且类似人类的响应,聊天 GPT 如今在互联网上引起了太多讨论。本文讨论如何通过Python代码连接Chat GPT API。第 1 步:获取 OpenAI API 的 API 密钥...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。