第一步:一个科学友好的上网工具,开启全局代理;

第二步:一个注册好的ChatGPT账号,且在个人设置里面生成apiKey:https://platform.openai.com/account/api-keys;

第三步:在发起HTTP请求(openConnection() 或者 openStream())之前,加上以下2行代码:

1 System.setProperty("proxyHost", PROXY_HOST); // PROXY_HOST:代理的IP地址
2 System.setProperty("proxyPort", PROXY_PORT); // PROXY_PORT:代理的端口号
代理的IP地址、代理的端口号:

第四步:贴上全部代码:

 1 package com.xiaobing.springcloud.util;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.net.HttpURLConnection;
7 import java.net.URL;
8
9 public class OpenAIGPT3Example {
10
11 public static void main(String[] args) throws IOException {
12 System.setProperty("proxyHost", "127.0.0.1"); // 代理的IP地址
13 System.setProperty("proxyPort", "7890"); // 代理的端口号
14
15 String apiEndpoint = "https://api.openai.com/v1/engines/text-davinci-003/completions";
16 String apiKey = "sk-**********"; // 这里是第二步生成的apiKey
17 String prompt = "'你在哪里?'翻译成英文";
18 int maxTokens = 150;
19
20 URL url = new URL(apiEndpoint);
21 HttpURLConnection con = (HttpURLConnection) url.openConnection();
22 con.setRequestMethod("POST");
23
24 // 设置HTTP请求头
25 con.setRequestProperty("Content-Type", "application/json");
26 con.setRequestProperty("Authorization", "Bearer " + apiKey);
27
28 // 设置HTTP请求体
29 String requestBody = "{\"prompt\": \"" + prompt + "\", \"max_tokens\": " + maxTokens + "}";
30 con.setDoOutput(true);
31 con.getOutputStream().write(requestBody.getBytes());
32
33 // 发送HTTP请求并读取响应
34 int responseCode = con.getResponseCode();
35 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
36 String response = "";
37 String inputLine;
38 while ((inputLine = in.readLine()) != null) {
39 response += inputLine;
40 }
41 in.close();
42
43 // 处理响应
44 System.out.println("Response code: " + responseCode);
45 System.out.println("Response body: " + response);
46 }
47
48 }

第五步:执行代码响应结果:

1 Response code: 200
2 Response body: {"id":"cmpl-8G0ApukM5c0oCMdKs9hVk8b4IYboY","object":"text_completion","created":1684048271,"model":"text-davinci-003","choices":[{"text":":\n\nWhere are you?","index":0,"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":26,"completion_tokens":9,"total_tokens":35}}

设置代理参考链接:https://www.cnblogs.com/memory4young/p/java-proxy-property.html

在国内用Java代理调用OpenAI的ChatGPT的API接口的更多相关文章

  1. 【python】调用sm.ms图床api接口,实现上传图片并返回url

    图床简介 sm.ms网站提供免费的图床服务.单图上传大小限制5MB,每次最多上传10张,支持多种图片链接格式和api接口调用. 获取令牌 注册账号并登录,点击User-Dashboard 点击API ...

  2. Java 使用阿里云短信的API接口

    亲们上午好,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等.(我这里只讲一个 ...

  3. Java动态调用脚本语言Groovy

    Java动态调用脚本语言Groovy 2019-05-15 目录 0. pom.xml添加依赖1. 使用GroovyShell计算表达式2. 使用GroovyScriptEngine脚本引擎加载Gro ...

  4. WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递

    回到目录 上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对 ...

  5. 没想到吧,Java开发 API接口可以不用写 Controller了

    本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便 ...

  6. Java代理(jdk静态代理、动态代理和cglib动态代理)

    一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 /** * 业务接 ...

  7. [z]Java代理(jdk静态代理、动态代理和cglib动态代理)

    一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 1 2 3 4 5 ...

  8. Java代理模式

    java代理模式及动态代理类 1.      代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目 ...

  9. java 代理的三种实现方式

    Java 代理模式有如下几种实现方式: 1.静态代理. 2.JDK动态代理. 3.CGLIB动态代理. 示例,有一个打招呼的接口.分别有两个实现,说hello,和握手.代码如下. 接口: public ...

  10. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

随机推荐

  1. RMQ总结

    题目描述 给定N个数的序列和M次询问,每次询问给定左右端点区间中的最大值 输入样例: 6 (N) 34 1 8 123 3 2 4 (M) 1 2 1 5 3 4 2 3 输出样例: 34 123 1 ...

  2. urllib.parse的使用

    urllib简介 urllib是pyhton自带的标准库用于网络请求库,无需安装,直接引用 通常用于爬虫开发,API(应用程序编程接口)数据获取和测试 urllib库的4大模块 urllib.requ ...

  3. 【ACM算法竞赛日常训练】DAY4题解与分析【树】【子序列】| 组合数学 | 动态规划

    DAY4共2题: 树(组合数学) 子序列(dp,数学) 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式讲解算法!️欢迎关注我,一起交流C++/Python ...

  4. 总结workerman启动与停止相关命令

    手册:https://www.workerman.net/doc/workerman/install/start-and-stop.html 本篇文章给大家介绍一下workerman启动与停止相关命令 ...

  5. Markdown/Latex常用数学公式语法

    0. 写在前面:MarkDown快捷键总结 名称 语法 快捷键 标题 用#号表示,#一级标题,##表示二级标题,依次类推 Ctrl+1.2.3.4 字体加粗 左右用**包裹起来 Ctrl+B 斜体字 ...

  6. (原创)【B4A】一步一步入门10:TabHost,标签页、标题带图标(控件篇06)

    一.前言 本篇教程我们来讲一下TabHost(标签页)的基本使用方法. 相信看完的你,一定会有所收获! 本文地址:https://www.cnblogs.com/lesliexin/p/1728556 ...

  7. GitLab 安装部署使用

    GitLab介绍 GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业.学校等内部网络搭建git私服. 功能:Gitl ...

  8. elk7.15.1安装部署搭建

    ELK简介 ELK是Elasticsearch.Logstash.Kibana三大开源框架首字母大写简称(但是后期出现的Filebeat(beats中的一种)可以用来替代Logstash的数据收集功能 ...

  9. 【技巧存档】常用网站如CSDN打开时加载慢怎么办?

    找到最快站点,更改host文件 F12打开控制台,查看网络中哪些站点的请求标红,如 img-home.csdnimg.cn 去站长之家测试ping值,找到最低ping值的ip,这里找到安徽合肥,ip为 ...

  10. 访问不到tomcat下的静态资源文件

    问题:idea+tomcat 测试Servlet,居然访问不到与WEB-INF同级的静态资源1.html.又不是访问WEB-INF里的文件.... 分析:可能是开发目录中的文件没有自动复制到部署目录. ...