一文读懂 ChatGPT API 接入指南

闪电发卡2年前ChatGPT1274

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大面积封号的消息突然炸了。据传闻,受影响的账户已经达到了数百万,亚洲是重灾区,其中不少都是国...

keyimage.jpg

利用ChatGPT背后的AI加速药物发现 - 每天可筛选1亿种化合物

通过将语言模型应用于蛋白质与药物的相互作用,研究人员可以快速筛选大量的潜在药物化合物库。巨大的药物化合物库可能拥有治疗各种疾病的潜力,如癌症或心脏病。理想情况下,科学家们希望通过实验对这些化合物中的每...

ChatGPT上岗医疗还有多远?哈佛教授亲测表现接近医生,云知声被曝打造行业版

ChatGPT上岗医疗还有多远?哈佛教授亲测表现接近医生,云知声被曝打造行业版

国内玩家如火如荼入局ChatGPT,其在各行业出圈也有目共睹。但具体什么时候能上岗尚且还不明晰,尤其像一些艰深、壁垒性高的行业,比如医疗。现在,一位哈佛医学院教授,就亲自下场测试ChatGPT的表现。...

拒绝花架子!盘点ChatGPT最强的七个插件:写提示词、外语,让ChatGPT做你的私人秘书

拒绝花架子!盘点ChatGPT最强的七个插件:写提示词、外语,让ChatGPT做你的私人秘书

ChatGPT开放联网和插件功能后,不再受限于预训练数据中的知识,第三方开发者也可以基于ChatGPT增强自家应用程序的功能。可以说插件彻底改变了ChatGPT的玩法,到目前为止,商城中已经上架了超过...

ChatGPT注册时提交手机号报错,ChatGPT还能注册吗?chatgpt怎么注册?

ChatGPT注册时提交手机号报错,ChatGPT还能注册吗?chatgpt怎么注册?

OpenAI官方4月13号修改规则 导致现在还不能接收验证码OpenAI官方4月13号修改规则目前已大面积风控注册,大部分注册到手机号验证那一步都会提示“Your account was flagge...

ChatGPT账号如何购买使用(没号的可以直接来买号)

ChatGPT账号如何购买使用(没号的可以直接来买号)

这里不讲如何注册哦。如何注册,可以看我另外的教程#ChatGPT 使用必须的条件一个chatgpt账号(可在文章末尾添加客服购买),海外魔法一个(需自学魔法)#使用入口:https://chatgpt...

发表评论    

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