前言
开始之前首先要说明几点
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方法,替换httpclientfastjson2
用来解析传入和返回参数
<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