地表最强AI ChatGPT 账号注册 & Java API接入 home 编辑时间 2022/12/12 ![](/api/file/getImage?fileId=6396c5dada74050013018df0) ## 前言 开始之前首先要说明几点 1. IP地址必须能访问某些网站,懂自懂,别来问我。 2. 本方法有成本,且不保证100%成功,只是一个方案。 3. 注册成功也是不保证长期稳定的,由于现在已经泛滥,听说API已经开始限流了,调用频繁的会直接报错。请善用免费的API,建议只作为学习用途。 ## 折腾 只是想了解什么情况的话,可以先看看介绍的文章 https://mp.weixin.qq.com/s/rv3OAUv4kZc0FU672SfAog <br> **想技术注册账号申请API,并深入学习继续往下看** 参考这篇教程 [OpenAI 推出超神 ChatGPT 注册攻略来了(V2EX)](https://www.v2ex.com/t/900126) 首先你必须自己能访问 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,点击购买 ![](/api/file/getImage?fileId=6396c93ada74050013018df9) 如果顺利会得到一串数字是手机号 这里需要注意 例如印尼是62开头的 在openai注册的地方 前面默认有个+62 所以填写手机号的时候 是粘贴62以后的部分 不要再贴一次62,否则无法收到短信 在这里慢是正常的,收不到短信也是有可能的 等5~10分钟还是没有反应的话,就点重发验证码 再收不到就换个号,再试 再收不到就回到选择国家开始重新选个国家的手机号再试 直到成功为止 (稍微试验几次没成功的话好像不扣费,多了就不知道了) 注册成功登陆账户后 能看到这个界面基本就成功了 ![](/api/file/getImage?fileId=6396ca88da74050013018e01) **后面是开通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 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:"] }' ``` 其中最重要的就是头部需要加一个 `Authorization` 值是 字符串 `Bearer ` 加 刚才申请的 `api-keys` 直接上代码 我这里用maven创建项目,用到2个依赖 `jsoup` 用来实现post方法,替换httpclient `fastjson2` 用来解析传入和返回参数 ```xml <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> ``` 核心方法 我这里由于个人习惯接HTTP用的是jsoup,其实用其他的也可以,效果一样 另外亲测api 没有限IP 咱们IP可以裸连 只是慢 ```java 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); } ``` 调用效果如下 ```json { "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 } } ``` 至此简单聊天的部分就通了,其余功能的还在摸索中,以后有新的发现再来写笔记。 ## END 参考 [OpenAI 推出超神 ChatGPT 注册攻略来了(V2EX)](https://www.v2ex.com/t/900126) [Examples(openai)](https://beta.openai.com/examples) 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay 腾讯云 COS-CLI 工具入门 ,解决一点小坑 Live2d 最新学习笔记 在网页上展示二次元