【开箱即用】一分钟使用java对接海外大模型gpt等对话模型,实现打字机效果

java如何快速对接海外大模型实现打字机效果-chat模式

前言

随着海外模型的热度胜起,海外各种模型开始兴起,但是由于初学者对环境的部署和海外支付阻扰,对海外模型学习难度增加,接下来会介绍如何各种方式快速调用海外模型,并且给出案例和效果。


一、如何使用原生http调用?

1. 引入http框架okhttpclient及其相应的包

java 复制代码
<dependency>
   <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.36</version>
</dependency>

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

2.非流

java 复制代码
public class GptChatDemo {

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class GptChatRequest {
        private String model;
        private List<Message> messages;
        private boolean stream;
    }


    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Message {
        private String role;
        private String content;
    }

    private static String url = "https://www.apiplus.online/v1/chat/completions";
    private static String token = "sk-aZ8OTonNtI7jo5bDQtwcbTsg0z4giYiH9Ax6wleLpRGlX4NP"; // 替换为实际的API令牌


    public static void main(String[] args) throws IOException {
        Message message = new Message();
        message.setRole("user");
        message.setContent("你好");
        GptChatRequest gptChatRequest = new GptChatRequest();
        gptChatRequest.setModel("gpt-4o-mini");
        gptChatRequest.setStream(false);
        gptChatRequest.setMessages(Collections.singletonList(message));

        String response = sendNoStreamRequest(url, token, gptChatRequest);
        System.out.println(response);

        gptChatRequest.setStream(true);
        sendStreamRequest(url, token, gptChatRequest);
    }


    private static void sendStreamRequest(String url, String apiKey, GptChatRequest gptChatRequest) throws IOException {
        // 实现发送请求的逻辑
        String jsonString = JSONObject.toJSONString(gptChatRequest);
        RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonString);
        Request.Builder builder = new Request.Builder().url(url).method("POST", body)
                .addHeader("Authorization", "Bearer " + apiKey);
        Request request = builder.build();
        OkHttpClient client = new OkHttpClient.Builder()
                .protocols(Collections.singletonList(Protocol.HTTP_1_1))
                .connectionPool(new ConnectionPool(8000, 300, TimeUnit.SECONDS))
                .readTimeout(600, TimeUnit.SECONDS)
                .writeTimeout(600, TimeUnit.SECONDS)
                .build();
        Response execute = client.newCall(request).execute();
        ResponseBody responseBody = execute.body();
        Reader reader = Objects.requireNonNull(responseBody).charStream();
        BufferedReader bufferedReader = new BufferedReader(reader);

        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
    }


    private static String sendNoStreamRequest(String url, String apiKey, GptChatRequest gptChatRequest) throws IOException {
        // 实现发送请求的逻辑
        String jsonString = JSONObject.toJSONString(gptChatRequest);
        RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonString);
        Request.Builder builder = new Request.Builder().url(url).method("POST", body)
                .addHeader("Authorization", "Bearer " + apiKey);
        Request request = builder.build();
        OkHttpClient client = new OkHttpClient.Builder()
                .protocols(Collections.singletonList(Protocol.HTTP_1_1))
                .connectionPool(new ConnectionPool(8000, 300, TimeUnit.SECONDS))
                .readTimeout(600, TimeUnit.SECONDS)
                .writeTimeout(600, TimeUnit.SECONDS)
                .build();
        try (Response response = client.newCall(request).execute()) {
            return response.body().string();
        }
    }
}

总结

以上可以无缝的使用java调用非流的,并且给出了相应的使用key去使用

github代码仓库 github.com/EroAI-Free/...

gitee代码仓库: gitee.com/lixinjiuhao...

相关推荐
SimonKing2 小时前
一键开启!Spring Boot 的这些「魔法开关」@Enable*,你用对了吗?
java·后端·程序员
间彧3 小时前
Spring Boot集成Spring Security 6.x完整指南
java
xiezhr3 小时前
用户只需要知道「怎么办」,不需要知道「为什么炸了」
java·api·接口设计规范
xiezhr4 小时前
接口设计18条军规:写给那些半夜被“502”叫醒的人
java·api·restful
RainbowSea13 小时前
12. LangChain4j + 向量数据库操作详细说明
java·langchain·ai编程
RainbowSea13 小时前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
考虑考虑17 小时前
Jpa使用union all
java·spring boot·后端
用户37215742613517 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊18 小时前
Java学习第22天 - 云原生与容器化
java