返回顶部
首页 > 资讯 > 后端开发 > JAVA >调用OpenAi出现连接超时的解决方案
  • 627
分享到

调用OpenAi出现连接超时的解决方案

java 2023-09-03 10:09:40 627人浏览 独家记忆
摘要

在向https://api.openai.com/v1/completions发起Http请求之前,使用java.net包下面的Proxy进行代理。 代码如下: public class OpenAiApi { public Stri

在向https://api.openai.com/v1/completions发起Http请求之前,使用java.net包下面的Proxy进行代理。

代码如下:

public class OpenAiApi {    public String OpenAiAnswerer(CompletionRequest request, String openAiApiKey) {        //代理        String proxyHost = "代理地址";        int proxyPort = 代理端口;        String url = "https://api.openai.com/v1/completions";        // JSON为请求体        String json = JSONUtil.toJsonStr(request);        String result = "";        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));        try {            HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(proxy);            connection.setRequestProperty("Authorization", "Bearer " + openAiApiKey);            connection.setRequestProperty("Content-Type", "application/json");            connection.setRequestMethod("POST");            connection.setDoOutput(true);            byte[] requestBodyBytes = json.getBytes(StandardCharsets.UTF_8);            try (OutputStream outputStream = connection.getOutputStream()) {                outputStream.write(requestBodyBytes, 0, requestBodyBytes.length);            }            try (InputStream inputStream = connection.getInputStream()) {                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));                StringBuilder response = new StringBuilder();                String line;                while ((line = reader.readLine()) != null) {                    response.append(line);                }                result = response.toString();            }        } catch (IOException e) {            throw new RuntimeException(e);        }        return JSONUtil.toBean(result, CompletionResponse.class);    }}

connection.setRequestProperty("Authorization", "Bearer " + openAiApiKey);
connection.setRequestProperty("Content-Type", "application/json");

我在使用的时候忘记设置了Content-Type,结果一直报错,后面反复观看文档才发现这个必须得设置。

下面是OpenAiAnswerer方法里面形参类CompletionRequest,这里使用了Lombok插件里的@Data注解,自动填入get、set方法和无参构造。(如果添加了有参构造,那么务必加上无参构造)

@Data public class CompletionRequest {    private String model;    private String prompt;    private Integer max_tokens;    private Integer temperature;    private Integer top_p;    private Integer n;    private Boolean stream;    private Integer logprobs;    private String stop;}

来源地址:https://blog.csdn.net/dantui_/article/details/130072028

--结束END--

本文标题: 调用OpenAi出现连接超时的解决方案

本文链接: https://lsjlt.com/news/392005.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作