java使用springboot 集成chat-gpt的api调用

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

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

2,生成自己的  api-key 

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

代码如下:

 1,控制器

@RestController
@RequestMapping("api/v1/chat/gpt")
@RequiredArgsConstructor
public class TestController {

    private static final String API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

    private static final String CHAT_BASE_URL = "https://api.openai.com/%s";

    private static final String CHAT_URL = "/v1/chat/completions";

    @GetMapping("test")
    public String wxCallback(@RequestParam("message") String message) {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Authorization", "Bearer " + API_KEY);
        headers.add("Content-Type", "application/json");
        ChatGptRequest request = new ChatGptRequest(message);
        HttpEntity<ChatGptRequest> httpEntity = new HttpEntity<>(request, headers);
        //本机代理 如果是全局梯子了之后可以注释本段
        RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{
            setProxy(new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress("192.168.31.168", 7890)));
            setConnectTimeout(180000);
            setReadTimeout(180000);
        }});
        ResponseEntity<ChatGptResponse> response;
        response = restTemplate.exchange(String.format(CHAT_BASE_URL, CHAT_URL), HttpMethod.POST, httpEntity, ChatGptResponse.class);
        ChatGptResponse result = response.getBody();
        if (result != null) {
            return "CHAT-GPT :" + result.getChoices().get(0).getMessage().getContent();
        } else {
            return "No response from ChatGPT API.";
        }
    }

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

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

import com.google.common.collect.Lists;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Setter
@Getter
public class ChatGptRequest {

    /**
     * 模型  具体可以查看官方文档 https://platform.openai.com/docs/models
     */
    private String model = "gpt-3.5-turbo";
    /**
     * 消息
     */
    private List<ChoiceMessage> messages = Lists.newArrayList();

    /**
     * 用户ID
     */
    private String user = "123456";

    /**
     * 随机值
     * 0.0对于同一个问题会回答相同答案
     */
    private Double temperature = 0.9;

    public ChatGptRequest(String message) {
        this.messages.add(new ChoiceMessage(message));
    }
}


import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Setter
@Getter
@NoArgsConstructor
public class ChoiceMessage {

    /**
     * 角色
     */
    private String role;

    /**
     * 消息体
     */
    private String content;

    public ChoiceMessage(String content) {
        this.role = "user";
        this.content = content;
    }
}


import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.List;

@Setter
@Getter
public class ChatGptResponse {

    private String id;

    private String object;

    private Date created;

    private String model;

    private List<ChoiceResponse> choices;
}
import lombok.Getter;
import lombok.Setter;


@Setter
@Getter
public class ChoiceResponse {

    private ChoiceMessage message;

    //省略了其他属性
}
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;


@Setter
@Getter
@NoArgsConstructor
public class ChoiceMessage {

    /**
     * 角色
     */
    private String role;

    /**
     * 消息体
     */
    private String content;

    public ChoiceMessage(String content) {
        this.role = "user";
        this.content = content;
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值