在国内用Java代理调用OpenAI的ChatGPT的API接口
第一步:一个科学友好的上网工具,开启全局代理;
第二步:一个注册好的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接口的更多相关文章
- 【python】调用sm.ms图床api接口,实现上传图片并返回url
图床简介 sm.ms网站提供免费的图床服务.单图上传大小限制5MB,每次最多上传10张,支持多种图片链接格式和api接口调用. 获取令牌 注册账号并登录,点击User-Dashboard 点击API ...
- Java 使用阿里云短信的API接口
亲们上午好,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等.(我这里只讲一个 ...
- Java动态调用脚本语言Groovy
Java动态调用脚本语言Groovy 2019-05-15 目录 0. pom.xml添加依赖1. 使用GroovyShell计算表达式2. 使用GroovyScriptEngine脚本引擎加载Gro ...
- WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递
回到目录 上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对 ...
- 没想到吧,Java开发 API接口可以不用写 Controller了
本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便 ...
- Java代理(jdk静态代理、动态代理和cglib动态代理)
一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 /** * 业务接 ...
- [z]Java代理(jdk静态代理、动态代理和cglib动态代理)
一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 1 2 3 4 5 ...
- Java代理模式
java代理模式及动态代理类 1. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目 ...
- java 代理的三种实现方式
Java 代理模式有如下几种实现方式: 1.静态代理. 2.JDK动态代理. 3.CGLIB动态代理. 示例,有一个打招呼的接口.分别有两个实现,说hello,和握手.代码如下. 接口: public ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
随机推荐
- 声网Agora发布教育信息化解决方案 助力教育公平提效
4月23日-25日,由中国教育装备行业协会主办的第79届教育装备展在厦门国际会展中心举办.作为赋能教育信息化的实时互动PaaS服务商,声网Agora应邀参会.展会现场,声网展示了基于实时音视频互动能力 ...
- P7961 数列 题解
对模拟的过程不敏感,对范围的数字不敏感 手玩是发现规律的好方式 计数 dp 以及一众计数题是明显短板,需要加紧突破. 样例解释已经较为明显地提示了这道题的大致做法.对于计数题,有动归与组合数学两种方法 ...
- scoket用法
一.scoket基本介绍 1.scoket简介(以下是来自chatgpt回答) 1)Socket(套接字)是计算机网络中用于描述主机之间通信的一种机制.它定义了一种标准的接口, 使得应用程序可以利用网 ...
- Spring(Bean详解)
GoF之工厂模式 GoF是指二十三种设计模式 GoF23种设计模式可分为三大类: 创建型(5个):解决对象创建问题. 单例模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型(7个):一些类 ...
- 驱动开发:内核使用IO/DPC定时器
本章将继续探索驱动开发中的基础部分,定时器在内核中同样很常用,在内核中定时器可以使用两种,即IO定时器,以及DPC定时器,一般来说IO定时器是DDK中提供的一种,该定时器可以为间隔为N秒做定时,但如果 ...
- [Linux/CENTOS]YUM提示: Another app is currently holding the yum lock; waiting for it to exit...
1 问题描述 使用yum安装Nginx的安装依赖组件: yum -y install gcc gcc-c++ automake autoconf libtool make 但是,在执行过程中出现如下信 ...
- Solon2 常用注解之 @ProxyComponent 用法说明
在 Solon 提倡"克制"的原则下,托管组件分为: 普通组件 代理组件(即 @ProxyComponent 注解的类).代理的细节可以看下<动态代理的本质> . 之所 ...
- 如何在 .NET Core WebApi 中处理 MultipartFormDataContent
最近在对某个后端服务做 .NET Core 升级时,里面使用了多处处理 MultipartFormDataContent 相关内容的代码.这些地方从 .NET Framework 迁移到 .NET C ...
- Callback详解
Callbacks Callback Registration 在 Rails 中,回调(Callbacks)是一种在模型对象的生命周期中执行特定代码的机制.回调可以在模型对象的创建.更新.删除等操作 ...
- CSS 基础拾遗(核心知识、常见需求)
本篇文章围绕了 CSS 的核心知识点和项目中常见的需求来展开.虽然行文偏长,但较基础,适合初级中级前端阅读,阅读的时候请适当跳过已经掌握的部分. 这篇文章断断续续写了比较久,也参考了许多优秀的文章,但 ...