Z.ai AI 平台官方 Java SDK,提供统一接口访问强大的AI能力,包括对话补全、向量嵌入、图像生成、音频处理等功能。
- 🚀 类型安全: 所有接口完全类型封装,无需查阅API文档即可完成接入
- 🔧 简单易用: 简洁直观的API设计,快速上手
- ⚡ 高性能: 基于现代Java库构建,性能优异
- 🛡️ 安全可靠: 内置身份验证和令牌管理
- 📦 轻量级: 最小化依赖,易于项目集成
- Java 1.8 或更高版本
- Maven 或 Gradle
- 尚不支持在 Android 平台运行
在您的 pom.xml 中添加以下依赖:
<dependency>
<groupId>ai.z.openapi</groupId>
<artifactId>zai-sdk</artifactId>
<version>0.0.4</version>
</dependency>在您的 build.gradle 中添加以下依赖(适用于 Groovy DSL):
dependencies {
implementation 'ai.z.openapi:zai-sdk:0.0.4'
}本SDK使用以下核心依赖库:
| Library | Version |
|---|---|
| OkHttp3 | 3.14.9 |
| Java JWT | 4.2.2 |
| Jackson | 2.19.0 |
| Retrofit2 | 2.12.0 |
| RxJava3 | 3.1.10 |
| SLF4J | 2.0.17 |
智谱AI API 地址 https://open.bigmodel.cn/api/paas/v4/
Z.ai API 地址 https://api.z.ai/api/paas/v4/
- 使用API凭证创建ZaiClient
- 通过客户端访问服务
- 使用类型化参数调用API方法
import ai.z.openapi.ZaiClient;
import ai.z.openapi.ZhipuAiClient;
import ai.z.openapi.service.model.*;
import ai.z.openapi.core.Constants;
// 创建客户端 推荐使用环境变量设置API凭证
// export ZAI_API_KEY=your.api.key
// 使用 Z.ai 平台客户端 https://api.z.ai/api/paas/v4/
ZaiClient client = ZaiClient.builder().build();
// 使用 智谱 AI 平台客户端 https://open.bigmodel.cn/api/paas/v4/
ZhipuAiClient zhipuClient = ZhipuAiClient.builder().build();
// 或代码设置凭证
ZaiClient client = ZaiClient.builder()
.apiKey("your.api.key")
.build();
// 或为智谱AI平台 bigmodel.cn 创建客户端
ZhipuAiClient zhipuClient = ZhipuAiClient.builder().apiKey("your.api.key").build();SDK提供了灵活的构建器模式来自定义您的客户端:
ZaiClient client = ZaiClient.builder()
.apiKey("your.api.key")
.baseUrl("https://api.z.ai/api/paas/v4/")
.enableTokenCache()
.tokenExpire(3600000) // 1小时
.connectionPool(10, 5, TimeUnit.MINUTES)
.build();import ai.z.openapi.ZaiClient;
import ai.z.openapi.service.model.*;
import ai.z.openapi.core.Constants;
import java.util.Arrays;
// 创建客户端
ZaiClient client = ZaiClient.builder()
.apiKey("your.api.key")
.build();
// 创建对话请求
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("你好,你怎么样?")
.build()
))
.stream(false)
.temperature(0.7f)
.maxTokens(1024)
.build();
// 执行请求
ChatCompletionResponse response = client.chat().createChatCompletion(request);
if (response.isSuccess()) {
String content = response.getData().getChoices().get(0).getMessage().getContent().toString();
System.out.println("回复: " + content);
} else {
System.err.println("错误: " + response.getMsg());
}// 创建流式请求
ChatCompletionCreateParams streamRequest = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("给我讲个故事")
.build()
))
.stream(true) // 启用流式
.build();
// 执行流式请求
ChatCompletionResponse response = client.chat().createChatCompletion(streamRequest);
if (response.isSuccess() && response.getFlowable() != null) {
response.getFlowable().subscribe(
data -> {
// 处理流式数据块
if (data.getChoices() != null && !data.getChoices().isEmpty()) {
String content = data.getChoices().get(0).getDelta().getContent();
if (content != null) {
System.out.print(content);
}
}
},
error -> System.err.println("\n流式错误: " + error.getMessage()),
() -> System.out.println("\n流式完成")
);
}// 定义函数
ChatTool weatherTool = ChatTool.builder()
.type(ChatToolType.FUNCTION.value())
.function(ChatFunction.builder()
.name("get_weather")
.description("获取指定地点的当前天气")
.parameters(ChatFunctionParameters.builder()
.type("object")
.properties(new HashMap<String, ChatFunctionParameterProperty>() {
{
put("location", ChatFunctionParameterProperty.builder()
.type("string")
.description("城市名称")
.build());
}
})
.required(Arrays.asList("location"))
.build())
.build())
.build();
// 创建带函数的请求
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("北京的天气怎么样?")
.build()
))
.tools(Arrays.asList(weatherTool))
.toolChoice("auto")
.build();
ChatCompletionResponse response = client.chat().createChatCompletion(request);import ai.z.openapi.service.embedding.*;
// 创建嵌入请求
EmbeddingCreateParams request = EmbeddingCreateParams.builder()
.model(Constants.ModelEmbedding3)
.input(Arrays.asList("你好世界", "你好吗?"))
.build();
// 执行请求
EmbeddingResponse response = client.embeddings().createEmbeddings(request);
if (response.isSuccess()) {
response.getData().getData().forEach(embedding -> {
System.out.println("嵌入向量: " + embedding.getEmbedding());
});
}import ai.z.openapi.service.image.*;
// 创建图像生成请求
CreateImageRequest request = CreateImageRequest.builder()
.model(Constants.ModelCogView3Plus)
.prompt("山间美丽的日落")
.size("1024x1024")
.build();
// 执行请求
ImageResponse response = client.images().createImage(request);
if (response.isSuccess()) {
response.getData().getData().forEach(image -> {
System.out.println("图像URL: " + image.getUrl());
});
}@RestController
public class AIController {
private final ZaiClient zaiClient;
public AIController() {
this.zaiClient = ZaiClient.builder()
.apiKey("your.api.key")
.enableTokenCache()
.build();
}
@PostMapping("/chat")
public ResponseEntity<String> chat(@RequestBody ChatRequest request) {
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content(request.getMessage())
.build()
))
.build();
ChatCompletionResponse response = zaiClient.chat().createChatCompletion(params);
if (response.isSuccess()) {
String content = response.getData().getChoices().get(0).getMessage().getContent();
return ResponseEntity.ok(content);
} else {
return ResponseEntity.badRequest().body(response.getMsg());
}
}
}- 对话补全(同步/异步)
- 流式对话
- 函数调用
- 多模态对话(文本+图像)
- 文本向量化
- 批量嵌入
- 多种嵌入模型
- 文本到图像生成
- 图像编辑
- 图像变体
- 语音转文本
- 文本转语音
- 语音翻译
- 文件上传
- 文件管理
- 文件检索
- AI助手创建
- 助手管理
- 对话线程
- 智能代理
- 工作流管理
- 任务执行
- 批量处理
- 异步任务
- 结果管理
详细的版本更新记录和历史信息,请查看 Release-Note.md。
本项目基于 MIT 许可证开源 - 详情请查看 LICENSE 文件。
欢迎贡献代码!请随时提交 Pull Request。
如有问题和技术支持:
- Visit Z.ai Platform
- Visit ZHIPU AI Open Platform
- Check our Architecture Documentation