z-ai-sdk-python/tests/integration_tests/test_chat.py
2025-12-22 22:03:39 +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.7',
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.7',
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.7',
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.7',
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.7', # 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.7', # 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.7', # 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.7', # 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-4.6v', # 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-4.6v', # 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-4.6v', # 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.7',
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)