A SDK library for accessing big model apis from ZhipuAI
Project description
ZhipuAI Open Platform Python SDK
中文文档 | English
The official Python SDK for ZhipuAI's large model open interface, making it easier for developers to call ZhipuAI's open APIs.
✨ Features
- Type Safety: Complete type annotations for all interfaces
- Easy Integration: Simple initialization and intuitive method calls
- High Performance: Built-in connection pooling and request optimization
- Secure: Automatic token caching and secure API key management
- Lightweight: Minimal dependencies with efficient resource usage
- Streaming Support: Real-time streaming responses for chat completions
📦 Installation
Requirements
- Python: 3.9+
- Package Manager: pip
Install via pip
pip install zhipuai
Core Dependencies
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 |
🚀 Quick Start
Basic Usage
from zhipuai import ZhipuAI
# Initialize client
client = ZhipuAI(api_key="your-api-key")
# Create chat completion
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "user", "content": "Hello, ZhipuAI!"}
]
)
print(response.choices[0].message.content)
Client Configuration
Environment Variables
export ZHIPUAI_API_KEY="your-api-key"
export ZHIPUAI_BASE_URL="https://open.bigmodel.cn/api/paas/v4/" # Optional
Code Configuration
from zhipuai import ZhipuAI
client = ZhipuAI(
api_key="your-api-key",
base_url="https://open.bigmodel.cn/api/paas/v4/" # Optional
)
Advanced Configuration
Customize client behavior with additional parameters:
from zhipuai import ZhipuAI
import httpx
client = ZhipuAI(
api_key="your-api-key",
timeout=httpx.Timeout(timeout=300.0, connect=8.0), # Request timeout
max_retries=3, # Retry attempts
base_url="https://open.bigmodel.cn/api/paas/v4/" # Custom API endpoint
)
📖 Usage Examples
Basic Chat
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your-api-key") # Uses environment variable ZHIPUAI_API_KEY
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is artificial intelligence?"}
],
tools=[
{
"type": "web_search",
"web_search": {
"search_query": "Search the Zhipu",
"search_result": True,
}
}
],
extra_body={"temperature": 0.5, "max_tokens": 50}
)
print(response)
Streaming Chat
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your-api-key")
response = client.chat.completions.create(
model="glm-4",
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)
Multimodal Chat
import base64
from zhipuai import ZhipuAI
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 = ZhipuAI(api_key="your-api-key")
base64_image = encode_image("path/to/your/image.jpg")
response = client.chat.completions.create(
model="glm-4v",
extra_body={"temperature": 0.5, "max_tokens": 50},
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}"
}
}
]
}
]
)
print(response)
Character Role-Playing
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your-api-key")
response = client.chat.completions.create(
model="charglm-3",
messages=[
{
"role": "user",
"content": "Hello, how are you doing lately?"
}
],
meta={
"user_info": "I am a film director who specializes in music-themed movies.",
"bot_info": "You are a popular domestic female singer and actress with outstanding musical talent.",
"bot_name": "Xiaoya",
"user_name": "Director"
}
)
print(response)
Assistant Conversation
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your-api-key")
response = client.assistant.conversation(
assistant_id="your_assistant_id", # You can use 65940acff94777010aa6b796 for testing
model="glm-4-assistant",
messages=[
{
"role": "user",
"content": [{
"type": "text",
"text": "Help me search for the latest ZhipuAI product information"
}]
}
],
stream=True,
attachments=None,
metadata=None,
request_id="request_1790291013237211136",
user_id="12345678"
)
for chunk in response:
print(chunk)
Video Generation
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="your-api-key")
response = client.videos.generations(
model="cogvideox-2",
prompt="A beautiful sunset beach scene",
quality="quality", # Output mode: use "quality" for higher quality, "speed" for faster generation
with_audio=True, # Generate video with background audio
size="1920x1080", # Video resolution (up to 4K, e.g. "3840x2160")
fps=30, # Frames per second (choose 30 fps or 60 fps)
user_id="user_12345"
)
# Generation may take some time
result = client.videos.retrieve_videos_result(id=response.id)
print(result)
🚨 Error Handling
The SDK provides comprehensive error handling:
from zhipuai import ZhipuAI
import zhipuai
client = ZhipuAI()
try:
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "user", "content": "Hello, ZhipuAI!"}
]
)
print(response.choices[0].message.content)
except zhipuai.APIStatusError as err:
print(f"API Status Error: {err}")
except zhipuai.APITimeoutError as err:
print(f"Request Timeout: {err}")
except Exception as err:
print(f"Other Error: {err}")
Error Codes
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 |
📈 Version Updates
For detailed version history and update information, please see Release-Note.md.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📞 Support
For questions and technical support, please visit ZhipuAI Open Platform or check our documentation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file zhipuai-2.1.5.20250716.tar.gz
.
File metadata
- Download URL: zhipuai-2.1.5.20250716.tar.gz
- Upload date:
- Size: 68.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
901d736c163fba2d39baa208433495b247320d8e1c8d00ab8b58eaa90bd46297
|
|
MD5 |
5d4e806e71bcd43e496dfd7f5b0e35b4
|
|
BLAKE2b-256 |
61f2694fc84029c40dc545d9f5bda8a949e9601867bc1a410263f20ae25da9b9
|
File details
Details for the file zhipuai-2.1.5.20250716-py3-none-any.whl
.
File metadata
- Download URL: zhipuai-2.1.5.20250716-py3-none-any.whl
- Upload date:
- Size: 116.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
6728a4c612adb23be46304dc76a3bd1e3546d174dcb75cc2b4f4cf6adc2c5ce3
|
|
MD5 |
d612bc277735558d58367bc0d642b20d
|
|
BLAKE2b-256 |
6945b9c5e8e235b17ba73126e74bb32c3c9e92c6a25bdf230cf58f2a687c9906
|