The official Python SDK for Z.ai's large model open interface, making it easier for developers to call Z.ai's open APIs.
中文文档 | English
Z.ai Open Platform The official Python SDK for Z.ai’s large model open interface, making it easier for developers to call Z.ai’s open APIs.
glm-4.7charglm-3 modelpip install zai-sdk
| Package | Version | Purpose |
|---|---|---|
httpx |
>=0.23.0 |
HTTP client for API requests |
pydantic |
>=1.9.0,<3.0.0 |
Data validation and serialization |
typing-extensions |
>=4.0.0 |
Enhanced type hints support |
cachetools |
>=4.2.2 |
Caching utilities |
pyjwt |
>=2.8.0 |
JSON Web Token (JWT) handling |
https://open.bigmodel.cn/api/paas/v4/https://api.z.ai/api/paas/v4/For complete examples, please refer to the open platform API Reference and User Guide, and remember to replace with your own API key.
from zai import ZaiClient, ZhipuAiClient
# For Overseas users, create the ZaiClient
client = ZaiClient(api_key="your-api-key")
# For Chinese users, create the ZhipuAiClient
client = ZhipuAiClient(api_key="your-api-key")
# Create chat completion
response = client.chat.completions.create(
model="glm-4.7",
messages=[
{"role": "user", "content": "Hello, Z.ai!"}
]
)
print(response.choices[0].message.content)
The SDK supports multiple ways to configure API keys:
export ZAI_API_KEY="your-api-key"
export ZAI_BASE_URL="https://api.z.ai/api/paas/v4/" # Optional
from zai import ZaiClient, ZhipuAiClient
client = ZaiClient(
api_key="your-api-key",
base_url="https://api.z.ai/api/paas/v4/" # Optional
)
# if you want to use Zhipu's domain service
zhipu_client = ZhipuAiClient(
api_key="your-api-key",
base_url="https://open.bigmodel.cn/api/paas/v4/" # Optional
)
Customize client behavior with additional parameters:
from zai import ZaiClient
import httpx
client = ZaiClient(
api_key="your-api-key",
timeout=httpx.Timeout(timeout=300.0, connect=8.0), # Request timeout
max_retries=3, # Retry attempts
base_url="https://api.z.ai/api/paas/v4/" # Custom API endpoint
)
from zai import ZaiClient
# Initialize client
client = ZaiClient(api_key="your-api-key")
# Create chat completion
response = client.chat.completions.create(
model='glm-4.7',
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Tell me a story about AI.'},
],
stream=True,
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='')
from zai import ZaiClient
# Initialize client
client = ZaiClient(api_key="your-api-key")
# Create chat completion
response = client.chat.completions.create(
model='glm-4.7',
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'What is artificial intelligence?'},
],
tools=[
{
'type': 'web_search',
'web_search': {
'search_query': 'What is artificial intelligence?',
'search_result': True,
},
}
],
temperature=0.5,
max_tokens=2000,
)
print(response)
from zai import ZaiClient
import base64
def encode_image(image_path):
"""Encode image to base64 format"""
with open(image_path, 'rb') as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
client = ZaiClient(api_key="your-api-key")
base64_image = encode_image('examples/test_multi_modal.jpeg')
response = client.chat.completions.create(
model='glm-4.6v',
messages=[
{
'role': 'user',
'content': [
{'type': 'text', 'text': "What's in this image?"},
{'type': 'image_url', 'image_url': {'url': f'data:image/jpeg;base64,{base64_image}'}},
],
}
],
temperature=0.5,
max_tokens=2000,
)
print(response)
from zai import ZaiClient
client = ZaiClient(api_key="your-api-key")
# Generate video
response = client.videos.generations(
model="cogvideox-3",
prompt="A cat is playing with a ball.",
quality="quality", # Output mode, "quality" for quality priority, "speed" for speed priority
with_audio=True, # Whether to include audio
size="1920x1080", # Video resolution, supports up to 4K (e.g., "3840x2160")
fps=30, # Frame rate, can be 30 or 60
max_wait_time=300, # Maximum wait time (seconds)
)
print(response)
# Get video result
result = client.videos.retrieve_videos_result(id=response.id)
print(result)
The SDK provides comprehensive error handling:
from zai import ZaiClient
import zai
client = ZaiClient(api_key="your-api-key")
try:
response = client.chat.completions.create(
model="glm-4.7",
messages=[
{"role": "user", "content": "Hello, Z.ai!"}
]
)
print(response.choices[0].message.content)
except zai.core.APIStatusError as err:
print(f"API Status Error: {err}")
except zai.core.APITimeoutError as err:
print(f"Request Timeout: {err}")
except Exception as err:
print(f"Unexpected Error: {err}")
| Status Code | Error Type | Description |
|---|---|---|
| 400 | APIRequestFailedError |
Invalid request parameters |
| 401 | APIAuthenticationError |
Authentication failed |
| 429 | APIReachLimitError |
Rate limit exceeded |
| 500 | APIInternalError |
Internal server error |
| 503 | APIServerFlowExceedError |
Server overloaded |
| N/A | APIStatusError |
General API error |
For detailed version history and update information, please see Release-Note.md.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For questions and technical support, please visit Z.ai Open Platform or check our documentation.
For feedback and support, please contact us at: user_feedback@z.ai