【开箱即用】一分钟使用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...

相关推荐
Wang's Blog7 分钟前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时23 分钟前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
鹿角片ljp2 小时前
KV Cache 解析
java·算法
captain3763 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫3 小时前
意图识别置信度和检索重排的分数
java
caoerzhong3 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
程序员JerrySUN4 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
Joy T5 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
估值探索者5 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘