δΈζζζ‘£ | English
Not yet released.
The official Java SDK for Z.ai and ZHIPU AI platforms, providing a unified interface to access powerful AI capabilities including chat completion, embeddings, image generation, audio processing, and more.
- π Type-safe API: All interfaces are fully type-encapsulated, no need to consult API documentation
- π§ Easy Integration: Simple and intuitive API design for quick integration
- β‘ High Performance: Built with modern Java libraries for optimal performance
- π‘οΈ Secure: Built-in authentication and token management
- π¦ Lightweight: Minimal dependencies for easy project integration
- Java 1.8 or higher
- Maven or Gradle
- Not supported on Android platform
Add the following dependency to your pom.xml
:
<dependency>
<groupId>ai.z</groupId>
<artifactId>zai-sdk</artifactId>
<version>0.0.1</version>
</dependency>
Add the following dependency to your build.gradle
(for Groovy DSL):
dependencies {
implementation 'ai.z:zai-sdk:0.0.1'
}
Or build.gradle.kts
(for Kotlin DSL):
dependencies {
implementation("ai.z:zai-sdk:0.0.1")
}
This SDK uses the following core dependencies:
Library | Version |
---|---|
OkHttp | 4.12.0 |
Java JWT | 4.4.0 |
Jackson | 2.17.2 |
Retrofit2 | 2.11.0 |
RxJava | 3.1.8 |
SLF4J | 2.0.16 |
- Create a ZaiClient with your API credentials
- Access services through the client
- Call API methods with typed parameters
import ai.z.openapi.ZaiClient;
import ai.z.openapi.service.model.*;
import ai.z.openapi.core.Constants;
// Create client with API key, recommend export the ENV api-key
// export ZAI_API_KEY=your.api.key
ZaiClient client = ZaiClient.builder().build();
// Or set the api-key by code
ZaiClient client = ZaiClient.builder()
.apiKey("your.api.key.your.api.secret")
.build();
// Or create client for specific platform
ZaiClient zhipuClient = ZaiClient.ofZHIPU("your.api.key.your.api.secret").build();
The SDK provides a flexible builder pattern for customizing your client:
ZaiClient client = ZaiClient.builder()
.apiKey("your.api.key.your.api.secret")
.baseUrl("https://api.z.ai/api/paas/v4/")
.enableTokenCache()
.tokenExpire(3600000) // 1 hour
.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;
// Create client
ZaiClient client = ZaiClient.builder()
.apiKey("your.api.key.your.api.secret")
.build();
// Create chat request
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("Hello, how are you?")
.build()
))
.stream(false)
.temperature(0.7f)
.maxTokens(1024)
.build();
// Execute request
ChatCompletionResponse response = client.chat().createChatCompletion(request);
if (response.isSuccess()) {
String content = response.getData().getChoices().get(0).getMessage().getContent();
System.out.println("Response: " + content);
} else {
System.err.println("Error: " + response.getMsg());
}
// Create streaming request
ChatCompletionCreateParams streamRequest = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("Tell me a story")
.build()
))
.stream(true) // Enable streaming
.build();
// Execute streaming request
ChatCompletionResponse response = client.chat().createChatCompletion(streamRequest);
if (response.isSuccess() && response.getFlowable() != null) {
response.getFlowable().subscribe(
data -> {
// Handle streaming chunk
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("\nStream error: " + error.getMessage()),
() -> System.out.println("\nStream completed")
);
}
// Define function
ChatTool weatherTool = ChatTool.builder()
.type(ChatToolType.FUNCTION.value())
.function(ChatFunction.builder()
.name("get_weather")
.description("Get current weather for a location")
.parameters(ChatFunctionParameters.builder()
.type("object")
.properties(Map.of(
"location", Map.of(
"type", "string",
"description", "City name"
)
))
.required(Arrays.asList("location"))
.build())
.build())
.build();
// Create request with function
ChatCompletionCreateParams request = ChatCompletionCreateParams.builder()
.model(Constants.ModelChatGLM4)
.messages(Arrays.asList(
ChatMessage.builder()
.role(ChatMessageRole.USER.value())
.content("What's the weather like in Beijing?")
.build()
))
.tools(Arrays.asList(weatherTool))
.toolChoice("auto")
.build();
ChatCompletionResponse response = client.chat().createChatCompletion(request);
import ai.z.openapi.service.embedding.*;
// Create embedding request
EmbeddingCreateParams request = EmbeddingCreateParams.builder()
.model(Constants.ModelEmbedding3)
.input(Arrays.asList("Hello world", "How are you?"))
.build();
// Execute request
EmbeddingResponse response = client.embeddings().create(request);
if (response.isSuccess()) {
response.getData().getData().forEach(embedding -> {
System.out.println("Embedding: " + embedding.getEmbedding());
});
}
import ai.z.openapi.service.image.*;
// Create image generation request
CreateImageRequest request = CreateImageRequest.builder()
.model(Constants.ModelCogView3Plus)
.prompt("A beautiful sunset over mountains")
.size("1024x1024")
.quality("standard")
.n(1)
.build();
// Execute request
ImageResponse response = client.images().generate(request);
if (response.isSuccess()) {
response.getData().getData().forEach(image -> {
System.out.println("Image URL: " + image.getUrl());
});
}
@RestController
public class AIController {
private final ZaiClient zaiClient;
public AIController() {
this.zaiClient = ZaiClient.builder()
.apiKey("your.api.key.your.api.secret")
.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());
}
}
}
The ZaiClient provides access to comprehensive AI services:
Service | Description | Key Features |
---|---|---|
Chat | Text generation and conversation | Streaming, function calling, async support |
Embeddings | Text embeddings generation | Multiple embedding models |
Images | Image generation and processing | CogView models, various sizes |
Audio | Speech synthesis and recognition | Text-to-speech, speech-to-text |
Files | File management and processing | Upload, download, batch processing |
Assistants | AI assistant management | Create, configure, and manage assistants |
Agents | Agent-based completions | Specialized agent interactions |
Knowledge | Knowledge base operations | Document indexing and retrieval |
Fine-tuning | Model customization | Train custom models |
Batch | Batch processing | Bulk operations |
Web Search | Web search integration | Real-time web information |
Videos | Video processing | Video analysis and generation |
glm-4-plus
- Enhanced GLM-4 with improved capabilitiesglm-4
- Standard GLM-4 modelglm-4-air
- Lightweight version for speedglm-4-flash
- Ultra-fast response modelglm-4-0520
- GLM-4 model version 0520glm-4-airx
- Extended Air model with additional featuresglm-4-long
- Optimized for long-context conversationsglm-4-voice
- Specialized for voice interactionsglm-4.1v-thinking-flash
- Visual reasoning model with thinking capabilitiesglm-z1-air
- Optimized for mathematical and logical reasoningglm-z1-airx
- Fastest domestic inference model with 200 tokens/sglm-z1-flash
- Completely free reasoning model serviceglm-4-air-250414
- Enhanced with reinforcement learning optimizationglm-4-flash-250414
- Latest free language modelglm-4-flashx
- Enhanced Flash version with ultra-fast inference speedglm-4-9b
- Open-source model with 9 billion parametersglm-4-assistant
- AI assistant for various business scenariosglm-4-alltools
- Agent model for complex task planning and executionchatglm3-6b
- Open-source base model with 6 billion parameterscodegeex-4
- Code generation and completion model
glm-asr
- Context-aware audio transcription model
glm-realtime-air
- Real-time video call model with cross-modal reasoningglm-realtime-flash
- Fast real-time video call model
glm-4v-plus
- Enhanced vision modelglm-4v
- Standard vision modelglm-4v-plus-0111
- Variable resolution video and image understandingglm-4v-flash
- Free and powerful image understanding model
cogview-3-plus
- Enhanced image generationcogview-3
- Standard image generationcogview-3-flash
- Free image generation modelcogview-4-250304
- Advanced image generation with text capabilitiescogview-4
- Advanced image generation for precise and personalized AI image expression
cogvideox
- Video generation from text or imagescogvideox-flash
- Free video generation modelcogvideox-2
- New video generation modelviduq1-text
- High-performance video generation from text inputviduq1-image
- Video generation from first frame image and text descriptionviduq1-start-end
- Video generation from first and last frame imagesvidu2-image
- Enhanced video generation from first frame image and text descriptionvidu2-start-end
- Enhanced video generation from first and last frame imagesvidu2-reference
- Video generation with reference images of people, objects, etc.
embedding-3
- Latest embedding modelembedding-2
- Previous generation embedding
charglm-3
- Character interaction modelcogtts
- Text-to-speech modelrerank
- Text reordering and relevance scoring
For detailed release notes and version history, please see Release-Note.md.
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions! Please feel free to submit a Pull Request.
For questions and support:
- Visit Z.ai Platform
- Visit ZHIPU AI Open Platform
- Check our Architecture Documentation