前言:ChatGPT因为国内的各种原因,官网目前已经提高了原生IP的访问门槛。

现状

应该有很多人和我一样,之前能在官网直接使用ChatGPT,现在因为节点IP不够纯正而被限制访问,不过好在官网提供的API接口是正常使用的,所以曲线救国思路就是:

  • 申请官网API keys

  • 查看官网实例调用ChatGPT

  • API调用额度查看

申请API keys

前文:ChatGPT注册使用系列一文中,注册好账号后,在个人页创建自己的API keys

官网支持语言一览

官网中可以看到ChatGPT已经支持很多语言接入了。

openai-java

调用费用

程序接入到 ChatGPT,调用接口要收费的
不过新注册的账号,前3个月免费使用,总消费额度不超过18美元
我的账号是到2023年4月1日,这期间只要调用费用不超过18美元相当于是免费使用

官网实例接入

以上准备工作及注意事项做好之后,我们就可以开始接入ChatGPT了。
下面是官网给出的调用例子(只是其中一个使用场景)

curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"model": "text-davinci-003", "prompt": "中国的首都是什么地方?", "temperature": 0, "max_tokens": 7}'

重要参数解释:

  • model:接入模型
    OpenAI API提供了一系列具有不同功能和价格点的模型,其中,GPT-3是最为智能的模型,也是收费最高的,后面代码中我们将使用其中的text-davinci-003。

使用场景

官网给我们列出来很多使用场景

  • Answers(问答场景)

  • Classification(分类场景)

  • Code(代码场景)

  • Conversation(谈话场景)

  • Translation(翻译场景)

  • Transformation(转换场景)

代码实现

官网有大约49种场景。代码中,我们以Answers(问答场景) 为例,只要点场景图标,就可以跳到该场景查看对应参数调用实例了。具体如下:

postman调用测试

可以在github中下载对应汉化版本的 postman,参考相应教程

  • 选择请求方式,填入接口地址,添加自己账号创建的Token

  • 请求头中添加Content-Type类型为json

  • 拼接json格式的入参

  • 调用成功

Java代码调用

  1. IDEA新建一个Maven项目:ChatGPT
  2. POM添加Hutool依赖,使用Hutool工具发送http post请求,json对象封装等等。


3. Java代码

import cn.hutool.http.*;
import cn.hutool.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class ChatGptDemo {
    public static void main(String[] args) {
        Map<String,String> headers = new HashMap<String,String>();
        headers.put("Content-Type","application/json;charset=UTF-8");

        JSONObject json = new JSONObject();
        //选择模型
        json.set("model","text-davinci-003");
        //添加我们需要输入的内容
        json.set("prompt","中国的首都在哪里?");
        json.set("temperature",0.9);
        json.set("max_tokens",2048);
        json.set("top_p",1);
        json.set("frequency_penalty",0.0);
        json.set("presence_penalty",0.6);

        HttpResponse response = HttpRequest.post("https://api.openai.com/v1/completions")
                .headerMap(headers, false)
                .bearerAuth("API keys")
                .body(String.valueOf(json))
                .timeout(5 * 60 * 1000)
                .execute();

        System.out.println(response.body());
    }
}

调用返回结果:

使用场景有很多,具体需求可以在官网实例中找到自己感兴趣的场景学习研究。目前Github上有很多优秀的基于ChatGPT二次开发的封装的项目,可以多多试验。
盘点近期非常火热的ChatGPT开源项目

我也根据一个开源小项目搭建了一个网页版ChatGPT
https://github.com/slippersheepig/chatgpt-web

PS:18美元的免费额度,大概能回答54000000字。每天限制调用200次