一文读懂 ChatGPT API 接入指南

闪电发卡3年前ChatGPT1932

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的基础能力有了一定的了解之后,我们就要开始在ChatGPT的基础上探索更多的可能性。而ChatGPT本身的问题也很多,ChatGPT在使用上最大也最明显的革命,其实是对自然语言的...

适用于 PHP 应用程序的 GPT-4 和 GPT-3.5 ChatGPT API 客户端

适用于 PHP 应用程序的 GPT-4 和 GPT-3.5 ChatGPT API 客户端

添加图片注释,不超过 140 字(可选)自从去年 10 月发布OpenAI PHP API 客户端以来,我们已经看到成千上万的用户使用 OpenAI API 构建了一些令人惊叹的应用程序。在此期间,O...

ChatGPT的Bing浏览功能让用户免费阅读付费内容,OpenAI暂停测试

ChatGPT的Bing浏览功能让用户免费阅读付费内容,OpenAI暂停测试

OpenAI 的聊天机器人 ChatGPT 在上周推出了一个新功能,叫做“用 Bing 浏览(Browse with Bing)”,仅向 ChatGPT Plus 订阅者提供。据IT之家了解,这个功能...

如何使用Python调用ChatGPT API?

如何使用Python调用ChatGPT API?

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

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

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

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

ChatGPT函数调用初体验:让ChatGPT具备抓取网页文本的能力

 OpenAI在6月13号升级了ChatGPT,推出了类似其网页版插件的功能——函数调用(Function calling),13号当天我在很多微信公众号就看到了这个消息,甚至有人将函数调用称为杀手级...