文章摘要: 摘要内容。
简介
简要说明
主要功能
注意事项
适用场景
Maven坐标
<dependency> <!-- 智谱AI开放平台SDK -->
<groupId>ai.z.openapi</groupId>
<artifactId>zai-sdk</artifactId>
<version>版本号</version> <!-- 请替换为实际的版本号 -->
</dependency>
代码块分析
客户端
- apiKey: API key, format is 'key.secret'
- baseUrl: API base URL
- customHeaders:
- enableTokenCache: 启用令牌缓存以提高性能
- tokenExpire: 令牌过期时间(毫秒)
- connectionPool: 连接池配置(最大连接数、保持活动时间、时间单位)
import java.util.Arrays;
import ai.z.openapi.ZaiClient;
import ai.z.openapi.service.model.ChatCompletionCreateParams;
import ai.z.openapi.service.model.ChatCompletionResponse;
import ai.z.openapi.service.model.ChatMessage;
import ai.z.openapi.service.model.ChatMessageRole;
import ai.z.openapi.service.model.ImageUrl;
import ai.z.openapi.service.model.MessageContent;
public class MainTest {
public static void main(String[] args) {
// 简单配置示例
ZaiClient basicClient = ZaiClient.builder().apiKey("xxx.xxx").build();
// 完整配置示例
Map<String, String> customHeaders = new HashMap<>();
customHeaders.put("Session-Id", "custom-session-id-xx");
ZaiClient advancedClient = ZaiClient.builder()
.apiKey("your.api_key")
.baseUrl("https://api.z.ai/api/paas/v4/")
.customHeaders(customHeaders)
.enableTokenCache()
.tokenExpire(3600000) // 令牌过期时间(毫秒)
.connectionPool(10, 5, TimeUnit.MINUTES)
.build();
// Plus 客户端
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model("glm-4v-plus-0111")
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content(Arrays.asList(
MessageContent.builder()
.type("text")
.text("What is in this image?")
.build(),
MessageContent.builder()
.type("image_url")
.imageUrl(ImageUrl.builder()
.url("https://aigc-files.bigmodel.cn/api/cogview/20250723213827da171a419b9b4906_0.png")
.build())
.build()))
.build()))
.build();
ChatCompletionResponse response = client.chat().createChatCompletion(request);
if (response.isSuccess()) {
Object reply = response.getData().getChoices().get(0).getMessage().getContent();
System.out.println(reply);
} else {
System.err.println("错误: " + response.getMsg());
}
// 深度思考/思维链 客户端
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model("glm-4.1v-thinking-flashx")
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content(Arrays.asList(
MessageContent.builder()
.type("text")
.text("Describe this image")
.build(),
MessageContent.builder()
.type("image_url")
.imageUrl(ImageUrl.builder()
.url("https://aigc-files.bigmodel.cn/api/cogview/20250723213827da171a419b9b4906_0.png")
.build())
.build()))
.build()))
.build();
ChatCompletionResponse response = client.chat().createChatCompletion(request);
if (response.isSuccess()) {
Object reply = response.getData().getChoices().get(0).getMessage().getContent();
System.out.println(reply);
} else {
System.err.println("错误: " + response.getMsg());
}
}
}
import ai.z.openapi.ZaiClient;
public class MainTest {
public static void main(String[] args) {
// 智谱AI平台特定客户端
ZaiClient zhipuClient = ZaiClient.ofZHIPU("your.api_key").build();
// 完整配置示例
Map<String, String> customHeaders = new HashMap<>();
customHeaders.put("Session-Id", "custom-session-id-xx");
ZhipuAiClient zhipuAiClient = ZhipuAiClient.builder()
.apiKey("your.api_key")
.baseUrl("https://api.z.ai/api/paas/v4/")
.customHeaders(customHeaders)
.enableTokenCache()
.tokenExpire(3600000) // 令牌过期时间(毫秒)
.connectionPool(10, 5, TimeUnit.MINUTES)
.build();
}
}
聊天
import java.util.Arrays;
import ai.z.openapi.ZhipuAiClient;
import ai.z.openapi.core.Constants;
import ai.z.openapi.service.model.AsyncResultRetrieveParams;
import ai.z.openapi.service.model.ChatCompletionCreateParams;
import ai.z.openapi.service.model.ChatCompletionResponse;
import ai.z.openapi.service.model.ChatMessage;
import ai.z.openapi.service.model.ChatMessageRole;
import ai.z.openapi.service.model.QueryModelResultResponse;
public class MainTest {
public static void main(String[] args) {
/**
* 异步
*/
// 创建客户端,建议通过环境变量设置API key(API密钥)
ZhipuAiClient client = ZhipuAiClient.builder().build();
// 创建聊天请求
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4_5)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("Hello, how are you?")
.build()))
.stream(false)
.temperature(0.7f)
.maxTokens(1024)
.build();
try {
// 执行请求
ChatCompletionResponse response = client.chat().asyncChatCompletion(request);
System.out.println("Response Task: " + response.getData());
Thread.sleep(10000); // 这里暂停多少毫秒,不是实时
QueryModelResultResponse queryModelResultResponse = client.chat()
.retrieveAsyncResult(AsyncResultRetrieveParams.builder()
.taskId(response.getData().getId()).build());
System.out.println("Response Data: " + queryModelResultResponse.getData());
} catch (Exception e) {
System.err.println("Exception occurred: " + e.getMessage());
e.printStackTrace();
}
/**
* 非异步
*/
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4_5)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("Hello, how to learn english?")
.build()))
.stream(false)
.thinking(ChatThinking.builder().type("enabled").build())
.temperature(0.7f)
.maxTokens(1024)
.build();
try {
// 执行请求
ChatCompletionResponse response = client.chat().createChatCompletion(request);
if (response.isSuccess()) {
Object content = response.getData().getChoices().get(0).getMessage();
System.out.println("Response: " + content);
} else {
System.err.println("Error: " + response.getMsg());
}
} catch (Exception e) {
System.err.println("Exception occurred: " + e.getMessage());
e.printStackTrace();
}
}
}