当前位置:   article > 正文

调用OpenAi出现连接超时的解决方案_openai sse连接异常data

openai sse连接异常data

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

代码如下:

  1. public class OpenAiApi {
  2. public String OpenAiAnswerer(CompletionRequest request, String openAiApiKey) {
  3. //代理
  4. String proxyHost = "代理地址";
  5. int proxyPort = 代理端口;
  6. String url = "https://api.openai.com/v1/completions";
  7. // json为请求体
  8. String json = JSONUtil.toJsonStr(request);
  9. String result = "";
  10. Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
  11. try {
  12. HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(proxy);
  13. connection.setRequestProperty("Authorization", "Bearer " + openAiApiKey);
  14. connection.setRequestProperty("Content-Type", "application/json");
  15. connection.setRequestMethod("POST");
  16. connection.setDoOutput(true);
  17. byte[] requestBodyBytes = json.getBytes(StandardCharsets.UTF_8);
  18. try (OutputStream outputStream = connection.getOutputStream()) {
  19. outputStream.write(requestBodyBytes, 0, requestBodyBytes.length);
  20. }
  21. try (InputStream inputStream = connection.getInputStream()) {
  22. BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
  23. StringBuilder response = new StringBuilder();
  24. String line;
  25. while ((line = reader.readLine()) != null) {
  26. response.append(line);
  27. }
  28. result = response.toString();
  29. }
  30. } catch (IOException e) {
  31. throw new RuntimeException(e);
  32. }
  33. return JSONUtil.toBean(result, CompletionResponse.class);
  34. }
  35. }

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

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

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

  1. @Data
  2. public class CompletionRequest {
  3. private String model;
  4. private String prompt;
  5. private Integer max_tokens;
  6. private Integer temperature;
  7. private Integer top_p;
  8. private Integer n;
  9. private Boolean stream;
  10. private Integer logprobs;
  11. private String stop;
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/837376
推荐阅读
相关标签
  

闽ICP备14008679号