java也能结合Ai? | springboot集成chatGLM

什么是GLM:

GLM 全名 General Language Model ,是一款基于自回归填空的预训练语言模型。ChatGLM 系列模型,支持相对复杂的自然语言指令,并且能够解决困难的推理类问题。该模型配备了易于使用的 API 接口,允许开发者轻松将其融入各类应用,广泛应用于智能客服、虚拟主播、聊天机器人等诸多领域。

SDK 安装说明

安装 Java SDK

Java SDK 地址: https://github.com/zhipuai/zhipuai-sdk-java-v4

如下方式,将SDK的依赖项加入到Maven项目:

 <dependency>
    <groupId>cn.bigmodel.openapi</groupId>
    <artifactId>oapi-java-sdk</artifactId>
    <version>release-V4-2.0.2</version>
</dependency>

Java SDK 创建 Client

使用 Java SDK 您替换自己的 ApiSecretKey 即可,示例如下:

ClientV4 client = new ClientV4.Builder("{Your ApiSecretKey}").build();  

传输层默认使用 okhttpclient,如果需要修改为其他 http client,可以如下指定(注意 apache不支持sse调用):​​​​​​​

ClientV4 client = new ClientV4.Builder("{Your ApiSecretKey}")
                  .httpTransport(new ApacheHttpClientTransport())
                  .build();  

SDK 代码示例

同步调用

调用后即可一次性获得最终结果,Java 代码如下:

/**
* 同步调用
*/
private static void testInvoke() {
   List<ChatMessage> messages = new ArrayList<>();
   ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan");
   messages.add(chatMessage);
   String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
   
   ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
           .model(Constants.ModelChatGLM4)
           .stream(Boolean.FALSE)
           .invokeMethod(Constants.invokeMethod)
           .messages(messages)
           .requestId(requestId)
           .build();
   ModelApiResponse invokeModelApiResp = client.invokeModelApi(chatCompletionRequest);
   try {
       System.out.println("model output:" + mapper.writeValueAsString(invokeModelApiResp));
   } catch (JsonProcessingException e) {
       e.printStackTrace();
   }
}

异步调用

调用后会立即返回一个任务 ID,然后用任务ID查询调用结果(根据模型和参数的不同,通常需要等待10-30秒才能得到最终结果)​​​​​​​

/**
* 异步调用
*/
private static String testAsyncInvoke() {
   List<ChatMessage> messages = new ArrayList<>();
   ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan");
   messages.add(chatMessage);
   String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
   
   ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
           .model(Constants.ModelChatGLM4)
           .stream(Boolean.FALSE)
           .invokeMethod(Constants.invokeMethodAsync)
           .messages(messages)
           .requestId(requestId)
           .build();
   ModelApiResponse invokeModelApiResp = client.invok
### Java 集成 ChatGLM AI 模型教程 为了在Java项目中集成ChatGLM AI模型,开发者需遵循一系列配置步骤来确保顺利集成。首先,获取必要的依赖库和API密钥是必不可少的一步。对于Spring Boot应用来说,可以通过引入特定的SDK来简化这一过程。 #### 获取 API 密钥 和 SDK 确保已注册并获得了访问权限以及相应的API Key用于后续请求认证[^1]。接着,在项目的`pom.xml`文件内加入如下依赖项以导入所需的Java SDK: ```xml <dependency> <groupId>com.zhipuai</groupId> <artifactId>zhipuai-sdk-java-v4</artifactId> <version>版本号</version> </dependency> ``` #### 构建对话参数 构建对话时,需要定义消息结构体,并设置好想要使用的具体模型名称和其他选项。下面是一个简单的例子展示了怎样创建一个多轮次会话的消息对象: ```java private static GenerationParam buildGenerationParam(List<Message> historyMessages, Message currentMessage) { return GenerationParam.builder() .model("chatglm") // 使用 chatglm 模型 .messages(historyMessages.stream().collect(Collectors.toList())) .addMessage(currentMessage) .resultFormat(GenerationParam.ResultFormat.MESSAGE) .topP(0.8F) .incrementalOutput(true) .build(); } ``` 这段代码片段说明了如何准备发送给服务器的数据包,其中包含了过往聊天记录的历史信息,使得每次响应都能基于之前的交流背景给出连贯的回答[^2]。 #### 发送请求与接收回复 完成上述准备工作之后,则可通过HTTP客户端发起POST请求至指定端点,并解析返回的结果数据。这里展示了一个基本框架用来执行这样的操作: ```java public class ChatService { private final String apiKey; public Response sendRequest(GenerationParam param){ OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create( MediaType.parse("application/json; charset=utf-8"), JsonUtils.toJson(param)); Request request = new Request.Builder() .url("https://api.example.com/v1/generation") .header("Authorization", "Bearer "+apiKey) .post(body) .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()){ throw new RuntimeException("Unexpected code " + response); } return response.body().string(); } catch (IOException e) { log.error(e.getMessage(),e); throw new RuntimeException(e); } } } ``` 以上示例利用OkHttp库实现了向远程服务提交JSON格式化后的生成参数,并处理可能发生的异常情况。实际应用场景下还需考虑更多的细节如超时控制、重试机制等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值