Skip to main content

A SDK library for accessing big model apis from ZhipuAI

Project description

ZhipuAI Open Platform Python SDK

PyPI version License: MIT Python

中文文档 | 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zhipuai-2.1.5.20250715.tar.gz (68.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zhipuai-2.1.5.20250715-py3-none-any.whl (115.6 kB view details)

Uploaded Python 3

File details

Details for the file zhipuai-2.1.5.20250715.tar.gz.

File metadata

  • Download URL: zhipuai-2.1.5.20250715.tar.gz
  • Upload date:
  • Size: 68.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for zhipuai-2.1.5.20250715.tar.gz
Algorithm Hash digest
SHA256 245f6db92bf1da4f60a34c0d572373214e61f48148ebe543a542cc0155d3bf9c
MD5 76c75583d42b7982ba839a88559b9f00
BLAKE2b-256 461b71aa9869ded210800351fc6307bc80ad490f6b80c10f284ffd5908f45a85

See more details on using hashes here.

File details

Details for the file zhipuai-2.1.5.20250715-py3-none-any.whl.

File metadata

File hashes

Hashes for zhipuai-2.1.5.20250715-py3-none-any.whl
Algorithm Hash digest
SHA256 9ee6a2906734e0135a616a92d3c75a97967c9c90d66b161d6c50e4230096d275
MD5 ff51cc7eb71d640bca41ef6369f8ddc6
BLAKE2b-256 c0a949f4f546d103100e09f89767070ed40ad11ce3ac974498eb20df40df2680

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page