当前位置:   article > 正文

java使用springboot 集成chat-gpt的api调用_springboot 如何调用gpt接口

springboot 如何调用gpt接口

1,首先要能成功注册账号

注册成功会送一定的额度用户接口调用,使用api-key调用会消耗额度.赠送的额度会有有效期

2,生成自己的  api-key 

一分钟内只能响应三次, 如需要大于一分钟内三次响应的必须使用付费的调用(非赠送)
需要为api-key选择支付费用方式. 详情可以查看官方文档了. 这里只做代码测试,不做演示

代码如下:

 1,控制器

  1. @RestController
  2. @RequestMapping("api/v1/chat/gpt")
  3. @RequiredArgsConstructor
  4. public class TestController {
  5. private static final String API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  6. private static final String CHAT_BASE_URL = "https://api.openai.com/%s";
  7. private static final String CHAT_URL = "/v1/chat/completions";
  8. @GetMapping("test")
  9. public String wxCallback(@RequestParam("message") String message) {
  10. HttpHeaders headers = new HttpHeaders();
  11. headers.add("Authorization", "Bearer " + API_KEY);
  12. headers.add("Content-Type", "application/json");
  13. ChatGptRequest request = new ChatGptRequest(message);
  14. HttpEntity<ChatGptRequest> httpEntity = new HttpEntity<>(request, headers);
  15. //本机代理 如果是全局梯子了之后可以注释本段
  16. RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{
  17. setProxy(new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress("192.168.31.168", 7890)));
  18. setConnectTimeout(180000);
  19. setReadTimeout(180000);
  20. }});
  21. ResponseEntity<ChatGptResponse> response;
  22. response = restTemplate.exchange(String.format(CHAT_BASE_URL, CHAT_URL), HttpMethod.POST, httpEntity, ChatGptResponse.class);
  23. ChatGptResponse result = response.getBody();
  24. if (result != null) {
  25. return "CHAT-GPT :" + result.getChoices().get(0).getMessage().getContent();
  26. } else {
  27. return "No response from ChatGPT API.";
  28. }
  29. }

2,请求封装也可以做成可传参, 这里为了方便直接固定了模型和用户ID,

用户ID 可以用来识别上下文, 因为是单用户(自用) 所以 固定一个用户ID就可以了

  1. import com.google.common.collect.Lists;
  2. import lombok.Getter;
  3. import lombok.Setter;
  4. import java.util.List;
  5. @Setter
  6. @Getter
  7. public class ChatGptRequest {
  8. /**
  9. * 模型 具体可以查看官方文档 https://platform.openai.com/docs/models
  10. */
  11. private String model = "gpt-3.5-turbo";
  12. /**
  13. * 消息
  14. */
  15. private List<ChoiceMessage> messages = Lists.newArrayList();
  16. /**
  17. * 用户ID
  18. */
  19. private String user = "123456";
  20. /**
  21. * 随机值
  22. * 0.0对于同一个问题会回答相同答案
  23. */
  24. private Double temperature = 0.9;
  25. public ChatGptRequest(String message) {
  26. this.messages.add(new ChoiceMessage(message));
  27. }
  28. }
  1. import lombok.Getter;
  2. import lombok.NoArgsConstructor;
  3. import lombok.Setter;
  4. @Setter
  5. @Getter
  6. @NoArgsConstructor
  7. public class ChoiceMessage {
  8. /**
  9. * 角色
  10. */
  11. private String role;
  12. /**
  13. * 消息体
  14. */
  15. private String content;
  16. public ChoiceMessage(String content) {
  17. this.role = "user";
  18. this.content = content;
  19. }
  20. }
  1. import lombok.Getter;
  2. import lombok.Setter;
  3. import java.util.Date;
  4. import java.util.List;
  5. @Setter
  6. @Getter
  7. public class ChatGptResponse {
  8. private String id;
  9. private String object;
  10. private Date created;
  11. private String model;
  12. private List<ChoiceResponse> choices;
  13. }
  1. import lombok.Getter;
  2. import lombok.Setter;
  3. @Setter
  4. @Getter
  5. public class ChoiceResponse {
  6. private ChoiceMessage message;
  7. //省略了其他属性
  8. }
  1. import lombok.Getter;
  2. import lombok.NoArgsConstructor;
  3. import lombok.Setter;
  4. @Setter
  5. @Getter
  6. @NoArgsConstructor
  7. public class ChoiceMessage {
  8. /**
  9. * 角色
  10. */
  11. private String role;
  12. /**
  13. * 消息体
  14. */
  15. private String content;
  16. public ChoiceMessage(String content) {
  17. this.role = "user";
  18. this.content = content;
  19. }
  20. }

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

闽ICP备14008679号