ChatGPT 账号注册 & Java API接入

前言

开始之前首先要说明几点
1. IP地址必须能访问某些网站,懂自懂,别来问我。
2. 本方法有成本,且不保证100%成功,只是一个方案。
3. 注册成功也是不保证长期稳定的,由于现在已经泛滥,听说API已经开始限流了,调用频繁的会直接报错。请善用免费的API,建议只作为学习用途。

折腾

只是想了解什么情况的话,可以先看看介绍的文章
https://mp.weixin.qq.com/s/rv3OAUv4kZc0FU672SfAog

想技术注册账号申请API,并深入学习继续往下看

参考这篇教程
OpenAI 推出超神 ChatGPT 注册攻略来了(V2EX)

首先你必须自己能访问 openai
https://beta.openai.com/signup
官网并完成注册,且不要用谷歌或微软登录,只能是邮箱注册,建议用海外邮箱+海外IP地址

如果你看到这句话
Not available
OpenAI's services are not available in your country.

说明你已经被标记不可访问了,这时候2个方法2选一
* 要么打开chrome的无痕模式再试试
* 要么按F12找到Application中的cookies和2个storage
清空域名下的所有数据

如果一路正常
会来到发短信验证码的地方
这里就要用到第二个网站了
https://sms-activate.org/cn

也是一样,先注册登录并直接到充值界面
充值单位是美元,可以设小数点,
发一条短信是10卢布,所以差不多充个0.2美元左右
保证至少能发成功一条短信
最后可以用支付宝结算。

接下如图来左边
国家推荐印尼
运营商关键字openai
应该只有一个结果,就是openai,点击购买

如果顺利会得到一串数字是手机号
这里需要注意
例如印尼是62开头的
在openai注册的地方
前面默认有个+62
所以填写手机号的时候
是粘贴62以后的部分
不要再贴一次62,否则无法收到短信

在这里慢是正常的,收不到短信也是有可能的
等5~10分钟还是没有反应的话,就点重发验证码
再收不到就换个号,再试
再收不到就回到选择国家开始重新选个国家的手机号再试
直到成功为止
(稍微试验几次没成功的话好像不扣费,多了就不知道了)

注册成功登陆账户后
能看到这个界面基本就成功了

后面是开通API并用接入JAVA部分
参考文档
https://beta.openai.com/examples/default-chat

首先需要开通自己的秘钥
在个人账户中的api-keys页面
https://beta.openai.com/account/api-keys
新增一个秘钥
create new secret key
这个秘钥只显示一次,之后如果忘记只能作废重新申请,所以必须保存好

接下来参考官方文档里的curl方法接一个聊天接口 chat

curl https://api.openai.com/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "text-davinci-003",
  "prompt": "The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?\nHuman: I'd like to cancel my subscription.\nAI:",
  "temperature": 0.9,
  "max_tokens": 150,
  "top_p": 1,
  "frequency_penalty": 0.0,
  "presence_penalty": 0.6,
  "stop": [" Human:", " AI:"]
}'

Curl

Copy

其中最重要的就是头部需要加一个 Authorization
值是 字符串 Bearer 加 刚才申请的 api-keys

直接上代码
我这里用maven创建项目,用到2个依赖
jsoup 用来实现post方法,替换httpclient
fastjson2 用来解析传入和返回参数

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.15.3</version>
</dependency>
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.20</version>
</dependency>

XML

Copy

核心方法
我这里由于个人习惯接HTTP用的是jsoup,其实用其他的也可以,效果一样
另外亲测api 没有限IP 咱们IP可以裸连 只是慢

public static String doPost(String url, JSONObject headers, JSONObject params) {
    String result = null;
    try {
        Connection connection = Jsoup.connect(url)
                .ignoreContentType(true)
                .ignoreHttpErrors(true)
                .timeout(600000)
                .method(Connection.Method.POST)
                .requestBody(params == null ? null : params.toJSONString());

        if (headers != null && headers.size() != 0) {
            connection.headers((Map) headers);
        }
        Connection.Response response = connection.execute();
        result = response.body();
    } catch (IOException e) {
        System.out.println(" * doPsot Error ===> " + e.getMessage() + " \nerror url: " + url);
        e.printStackTrace();
    }
    return result;
}

public static JSONObject chat(String prompt){
    JSONObject header = new JSONObject();
    header.put("Content-Type", "application/json");
    header.put("Authorization", "Bearer " 加刚才申请的秘钥);
    JSONObject params = new JSONObject();
    params.put("model", "text-davinci-003");
    params.put("prompt", prompt);
    params.put("temperature", 0.9);
    params.put("max_tokens", 2048);
    params.put("top_p", 1);
    params.put("frequency_penalty", 0.0);
    params.put("presence_penalty", 0.6);

    JSONArray stop = new JSONArray();
    stop.add("<br>");
    params.put("stop", stop);

    return JsoupUtils.post("https://api.openai.com/v1/completions", header, params);
}

Java

Copy

调用效果如下

{
    "id": "xxxx-xxxxxxxxxxxxxxxxxxxxxxxx",
    "object": "text_completion",
    "created": 1670829113,
    "model": "text-davinci-003",
    "choices": [{
        "text": "\n\n三体人于2016年7月11日正式入侵地球,这是第一次外星入侵世界的重大事件。\n\n三体人(The Triune)来自天文学家发现的外太空中的一个神秘行星,初次入侵地球的样子如同白蚁,由20多只类似蝎子的生物组成,是外星入侵者的代表。",
        "index": 0,
        "finish_reason": "stop"
    }],
    "usage": {
        "prompt_tokens": 22,
        "completion_tokens": 195,
        "total_tokens": 217
    }
}

JSON

Copy

至此简单聊天的部分就通了,其余功能的还在摸索中,以后有新的发现再来写笔记。

END

参考
OpenAI 推出超神 ChatGPT 注册攻略来了(V2EX)
Examples(openai)


来源:https://www.zzzmh.cn/post/3b3e842d79ed11eda7050242ac110003

腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/VPeD6dyhtlXbCboK (转载请保留)。
关注下面的标签,发现更多相似文章