z-ai-sdk-python/tests/integration_tests/test_chat.py
wellenzheng 81cffb6cc4
feat: translate and enrich doc (#3)
* init

* enrich doc

* init

* init

* init

* doc

* chore: remove deprecated email field from pyproject.toml

* feat: translate content from Chinese to English and update documentation

This commit translates all Chinese text content in the codebase to English, including:
- Test messages and prompts
- Error messages
- Documentation strings
- API parameter descriptions
- README and release notes content

The changes ensure consistency in language usage across the entire project while maintaining all functionality. Documentation has been updated to reflect these changes and provide clearer English descriptions of features and usage.

* refactor: update branding from ZaiClient to Z.ai

Update SDK name in README and HTTP headers to reflect new branding. Also update endpoint references in type definitions.

* ci: allow spaces in PR commit message subject pattern

---------

Co-authored-by: zhengweijun <weijun.zheng@aminer.cn>
2025-07-11 15:20:27 +08:00

485 lines
13 KiB
Python

import logging
import logging.config
import os.path
import time
import zai
from zai import ZaiClient
def test_completions_temp0(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4',
messages=[{'role': 'user', 'content': 'tell me a joke'}],
top_p=0.7,
temperature=0,
max_tokens=2000,
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_temp1(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4',
messages=[{'role': 'user', 'content': 'tell me a joke'}],
top_p=0.7,
temperature=1,
max_tokens=2000,
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_top0(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4',
messages=[{'role': 'user', 'content': 'tell me a joke'}],
top_p=0,
temperature=0.9,
max_tokens=2000,
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_top1(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4',
messages=[{'role': 'user', 'content': 'tell me a joke'}],
top_p=1,
temperature=0.9,
max_tokens=2000,
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4', # Fill in the model name to call
messages=[
{
'role': 'user',
'content': 'As a marketing expert, please create an attractive slogan for my product',
},
{
'role': 'assistant',
'content': (
'Of course, to create an attractive slogan, please tell me some information about your product'
),
},
{'role': 'user', 'content': 'Z.ai Open Platform'},
{
'role': 'assistant',
'content': 'Ignite the future, paint infinity - Z.AI, making innovation within reach!',
},
{'role': 'user', 'content': 'Create a more precise and attractive slogan'},
],
tools=[
{
'type': 'web_search',
'web_search': {
'search_query': 'Show me the admission rate of Tsinghua University',
'search_result': True,
},
}
],
user_id='12345678',
extra_body={'temperature': 0.5, 'max_tokens': 50},
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_disenable_web_search(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4', # Fill in the model name to call
messages=[
{
'role': 'user',
'content': 'As a marketing expert, please create an attractive slogan for my product',
},
{
'role': 'assistant',
'content': (
'Of course, to create an attractive slogan, please tell me some information about your product'
),
},
{'role': 'user', 'content': 'Z.ai Open Platform'},
{
'role': 'assistant',
'content': 'Ignite the future, paint infinity - Z.AI, making innovation within reach!',
},
{'role': 'user', 'content': 'Create a more precise and attractive slogan'},
],
tools=[
{
'type': 'web_search',
'web_search': {
'search_query': 'Show me the admission rate of Tsinghua University',
'search_result': True,
'enable': False,
},
}
],
user_id='12345678',
extra_body={'temperature': 0.5, 'max_tokens': 50},
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_enable_web_search(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4', # Fill in the model name to call
messages=[
{
'role': 'user',
'content': 'As a marketing expert, please create an attractive slogan for my product',
},
{
'role': 'assistant',
'content': (
'Of course, to create an attractive slogan, please tell me some information about your product'
),
},
{'role': 'user', 'content': 'Z.ai Open Platform'},
{
'role': 'assistant',
'content': 'Ignite the future, paint infinity - Z.AI, making innovation within reach!',
},
{'role': 'user', 'content': 'Create a more precise and attractive slogan'},
],
tools=[
{
'type': 'web_search',
'web_search': {
'search_query': 'Show me the admission rate of Tsinghua University',
'search_result': True,
'enable': True,
},
}
],
extra_body={'temperature': 0.5, 'max_tokens': 50},
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_sensitive_word_check(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4', # Fill in the model name to call
stream=True,
messages=[
{
'role': 'user',
'content': 'As a marketing expert, please create an attractive slogan for my product',
},
{
'role': 'assistant',
'content': (
'Of course, to create an attractive slogan, please tell me some information about your product'
),
},
{'role': 'user', 'content': 'Z.ai Open Platform'},
{
'role': 'assistant',
'content': 'Ignite the future, paint infinity - Z.AI, making innovation within reach!',
},
{'role': 'user', 'content': 'Create a more precise and attractive slogan'},
],
extra_body={'temperature': 0.5, 'max_tokens': 50},
user_id='12345678',
)
for item in response:
print(item)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
# Function to encode the image
def encode_image(image_path):
import base64
with open(image_path, 'rb') as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
def test_completions_stream_with_tools(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4v', # Fill in the model name to call
extra_body={'temperature': 0.5, 'max_tokens': 50},
messages=[
{
'role': 'user',
'content': [
{'type': 'text', 'text': 'What is in this image?'},
{
'type': 'image_url',
'image_url': {
'url': 'https://img1.baidu.com/it/u=1369931113,3388870256&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703696400&t=f3028c7a1dca43a080aeb8239f09cc2f'
},
},
],
}
],
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_vis_base64(test_file_path, logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
base64_image = encode_image(os.path.join(test_file_path, 'img/MetaGLM.png'))
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4v', # Fill in the model name to call
extra_body={'temperature': 0.5, 'max_tokens': 50},
messages=[
{
'role': 'user',
'content': [
{'type': 'text', 'text': 'What is in this image?'},
# {
# "type": "image_url",
# "image_url": {
# "url": "https://img1.baidu.com/it/u=1369931113,3388870256&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703696400&t=f3028c7a1dca43a080aeb8239f09cc2f"
# }
# },
{
'type': 'image_url',
'image_url': {'url': f'data:image/jpeg;base64,{base64_image}'},
},
],
}
],
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_async_completions(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4v', # Fill in the model name to call
messages=[
{
'role': 'user',
'content': 'As a marketing expert, please create an attractive slogan for my product',
},
{
'role': 'assistant',
'content': (
'Of course, to create an attractive slogan, please tell me some information about your product'
),
},
{'role': 'user', 'content': 'Z.ai Open Platform'},
{
'role': 'assistant',
'content': 'Ignite the future, paint infinity - Z.AI, making innovation within reach!',
},
{'role': 'user', 'content': 'Create a more precise and attractive slogan'},
],
tools=[
{
'type': 'web_search',
'web_search': {
'search_query': 'Show me the admission rate of Tsinghua University',
'search_result': True,
},
}
],
extra_body={'temperature': 0.5, 'max_tokens': 50},
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_retrieve_completion_result(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
response = client.chat.asyncCompletions.retrieve_completion_result(id='1014908592669352541651237')
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)
def test_completions_vis(logging_conf):
logging.config.dictConfig(logging_conf) # type: ignore
client = ZaiClient() # Fill in your own API Key
try:
# Generate request_id
request_id = time.time()
print(f'request_id:{request_id}')
response = client.chat.completions.create(
request_id=request_id,
model='glm-4',
messages=[{'role': 'user', 'content': 'tell me a joke'}],
top_p=1,
temperature=0.9,
max_tokens=2000,
sensitive_word_check={'type': 'ALL', 'status': 'DISABLE'},
user_id='12345678',
)
print(response)
except zai.core._errors.APIRequestFailedError as err:
print(err)
except zai.core._errors.APIInternalError as err:
print(err)
except zai.core._errors.APIStatusError as err:
print(err)