如何用Python调用智谱清言GLM系API实现智能问答
本文围绕用Python调用智谱清言GLM系API实现智能问答展开。先介绍获取API key的方法,接着从HTTP API、智谱SDK、OpenAI SDK和LangChain四个方面给出代码示例,涵盖文本、图像、视频等多种交互场景,还提及错误处理及高级配置。
GLM系列大模型是智谱AI提供的系列语言模型。
本文介绍如何用Python语言调用GLM的API实现智能问答。
本篇不会涉及智谱的AI编程相关功能,因为那一般不都是接到IDE里用的么,需要的话我另外开一篇写吧。
智谱大模型开放平台:http://bigmodel.cn/
官方教程:https://docs.bigmodel.cn/cn/guide/start/introduction
官方API参数文档:https://docs.bigmodel.cn/cn/api/introduction
英文版官方文档:https://docs.z.ai/guides/overview/quick-start
模型报价:https://open.bigmodel.cn/pricing
文本模型GLM-4.5-Flash、视觉理解模型GLM-4.6V-Flash是免费的,我在下面一般会以这两个模型为例写代码,如果不是这两个模型说明这两个模型到使用限制了,我被迫换成别的模型了……
在输入内容很多的时候需要关注token数对应的价格和模型自身的上下文窗口(也就是能记住多少token的内容)长度。有一个GLM-4-Long模型可以支持百万级输入上下文。
模型概览和上下文窗口长度:https://docs.bigmodel.cn/cn/guide/start/model-overview
对于超过模型上下文窗口大小的长文本,可以采用以下策略:
使用 GLM-4-Long 等支持更长上下文的模型
对文本进行分段处理,然后合并结果
使用文本嵌入模型进行相关性检索,只保留最相关的部分
对文本进行摘要,提取关键信息后再输入模型
模型并发数限制可以从这个网址进去看:https://bigmodel.cn/usercenter/proj-mgmt/rate-limits
如果直接想在线试用可以进入体验中心:https://bigmodel.cn/trialcenter/modeltrial
官方提交工单的网址:https://bigmodel.cn/ticket-submit
另外本文不会涉及AutoGLM-Phone(自动化操纵安卓手机)的部分,以后如果需要的话会另开文章撰写:
https://docs.bigmodel.cn/cn/guide/models/vlm/autoglm-phone
也不会涉及音视频实时通话模型和端到端语音模型,因为感觉我用不到(等我的游戏终有一天开工了可能会用到):
https://docs.bigmodel.cn/cn/guide/models/sound-and-video/glm-realtime
https://docs.bigmodel.cn/cn/guide/models/sound-and-video/glm-4-voice
也不会涉及文件解析服务、OCR服务、知识库管理部分,这套我打算在构建知识库的时候再统一调研,本文主要还是调用智谱清言大模型的,就不涉及这部分了:
https://docs.bigmodel.cn/cn/guide/tools/file-parser
https://docs.bigmodel.cn/cn/guide/tools/zhipu-ocr
https://docs.bigmodel.cn/cn/guide/tools/knowledge/guide
https://www.bigmodel.cn/console/appcenter_v1/knowledge
文章目录
1. 获得API key
注册并登录智谱AI开放平台:

点击“查看API key”:


复制的API key用于调用API
2. 撰写代码并实现提问和回答
-
视觉→文本不支持同时传入图片、视频多模态,只能带文本。但是可以同时传多个图片/文件
-
批量处理可以用专门的batch API,我暂时用不到就不详写了,有需要可以直接去看文档:https://docs.bigmodel.cn/cn/guide/tools/batch
2.1 使用HTTP API
headers的Authorization的两种写法
以下代码中Authorization都以Bearer {key}的形式来写。这个key可以直接填ChatGLM的API KEY,也可以填JWT token。
JWT token会更安全一些,是将API KEY拆成ID和SECRET(秘钥),用SECRET加密生成一个时间有限的JWT token,能保证token泄露后被利用的窗口期变短。生成方法:
(需要先pip install PyJWT。PyJWT包在安装智谱SDK的时候会自动带着安装)
import requests
import time
import jwt
def generate_token(apikey: str, exp_seconds: int):
try:
id, secret = apikey.split(".")
except Exception as e:
raise Exception("invalid apikey", e)
payload = {
"api_key": id,
"exp": int(round(time.time() * 1000)) + exp_seconds * 1000,
"timestamp": int(round(time.time() * 1000)),
}
return jwt.encode(
payload,
secret,
algorithm="HS256",
headers={"alg": "HS256", "sign_type": "SIGN"},
)
# 使用生成的 token
token = generate_token(chatglm_api_key, 3600) # 1 小时有效期
data格式
messages
role:
-
user:用户
-
system:系统提示词
-
assistant:AI内容(可以包括reasoning_content和tool_calls。tool_calls是一个列表,每个值是一个字典(实际上只会有一个值,因为每次只会命中一个函数),键为id、type(如function)、function(示例:
[{"id": tc["id"], "type": "function", "function": tc["function"]} for tc in tool_calls])) -
tool:工具调用返回结果(包括tool_call_id)
文本模型:文本→文本(单轮)
[
{
"role": "user",
"content": "你好,请介绍一下自己。"
}
]
文本模型:文本→文本(多轮)
[
{
"role": "system",
"content": "你是一个专业的编程助手"
},
{
"role": "user",
"content": "什么是递归?"
},
{
"role": "assistant",
"content": "递归是一种编程技术,函数调用自身来解决问题..."
},
{
"role": "user",
"content": "能给我一个 Python 递归的例子吗?"
}
]
视觉理解模型:图片(base64格式)→文本
如何将图片转换为base64格式可以参考2.2中的“图片(URL或base64格式)→文本”一节
[
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片是什么?"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,..."
}
}
]
}
]
文本模型:工具调用
parameters是输入参数,required指明哪些输入参数是必填的
tools 支持传多个函数,但每次调用只能命中一个。
另外自定义函数调用和内置的知识库检索、网络搜索三者互斥,只能传一个。如果在参数里面都传了倒也不会报错,按照优先级只会生效一个。优先级顺序为:函数调用>知识库检索>网络搜索。
{
"model": "glm-4.7",
"messages": [
{
"type": "text",
"text": "帮我查询从2024年1月20日,从北京出发前往上海的航班"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_flight_number",
"description": "根据始发地、目的地和日期,查询对应日期的航班号",
"parameters": {
"type": "object",
"properties": {
"departure": {
"description": "出发地",
"type": "string"
},
"destination": {
"description": "目的地",
"type": "string"
},
"date": {
"description": "日期",
"type": "string"
}
},
"required": ["departure", "destination", "date"]
}
}
}
]
}
其它参数
https://docs.bigmodel.cn/cn/guide/start/concept-param
对于do_sample, temperature, top_p这三个控制文本生成解码格式的参数,如果想要了解其原理可以参考我写的另一篇博文:文本生成解码策略及其在transformers中的代码实现_guided decoding-CSDN博客
一般都建议输出越需要精确(如严谨的数学推理、知识问答),越推荐降低输出的随机性;如果需要进行文学写作等需要创意的内容,简易提高输出的随机性。
- stream:流式输出(默认为false)
非流式输出就是等AI完全生成全文再返回;流式输出会以SSE形式生成一点就返回一点内容,比较有实时交互感
{
"model": "glm-4.7",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下自己。"
}
],
"stream": true
}
-
tool_stream:工具流式输出
-
do_sample:对输出进行采样(默认为true)
如果是false的话会采用贪心策略来输出,输出确定性高,适用于需要精确、事实性回答的场景。 -
temperature:控制输出的随机性,值越高越随机
-
top_p:通过核采样控制多样性,值越高越随机,建议与
temperature二选一。 -
max_tokens:限制单次调用生成的最大 token 数。
-
thinking:是否开启思维链深度思考,仅
GLM-4.5及以上支持(默认为{"type": "enabled"},值改成disabled就是关闭思维链)
除type外还有一个键clear_thinking,值为True时表示用交错式思考(Interleaved thinking),为False时表示用保留式思考(Preserved thinking)。实话说我没理解这两种思考方式有啥区别
thinking参数在智谱SDK中放在extra_body键里 -
response_format: 指定响应格式,设置为
{"type": "json_object"}启用 JSON 模式
建议用JSON Schema语法来规定输出JSON的格式 -
user_id:这个是用来识别终端用户的,以防终端用户一个狂暴发言给企业整个KEY全ban了
各模型的默认 max_tokens 和支持的最大 max_tokens:
| 模型编码 | 默认 max_tokens | 最大 max_tokens |
|---|---|---|
| glm-4.7 | 65536 | 131072 |
| glm-4.6 | 65536 | 131072 |
| glm-4.6v | 16384 | 32768 |
| glm-4.6v-flash | 16384 | 32768 |
| glm-4.6v-flashx | 16384 | 32768 |
| glm-4.5 | 65536 | 98304 |
| glm-4.5-air | 65536 | 98304 |
| glm-4.5-x | 65536 | 98304 |
| glm-4.5-flash | 65536 | 98304 |
| glm-4.5v | 16384 | 16384 |
| glm-4.1v-thinking-flashx | 32768 | 32768 |
| glm-4.1v-thinking-flash | 32768 | 32768 |
| glm-4-air-250414 | 16384 | 16384 |
| glm-4-flash-250414 | 32768 | 32768 |
| glm-4-plus | 动态计算 | 4095 |
| glm-4-air | 动态计算 | 4095 |
| glm-4-airx | 动态计算 | 4095 |
| glm-4-flash | 动态计算 | 4095 |
| glm-4-flashx | 动态计算 | 4095 |
| glm-4-plus | 动态计算 | 4095 |
| glm-4v-plus-0111 | 1024 | 8192 |
| glm-4v-flash | 1024 | 1024 |
整体代码示例
文本模型:文本→文本
import requests
def call_zhipu_api(messages, model="glm-4.7"):
url = "https://open.bigmodel.cn/api/paas/v4/chat/completions"
headers = {
"Authorization": f"Bearer {chatglm_api_key}",
"Content-Type": "application/json",
}
data = {"model": model, "messages": messages, "temperature": 1.0}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"API调用失败: {response.status_code}, {response.text}")
# 使用示例
messages = [{"role": "user", "content": "你好,请介绍一下自己"}]
result = call_zhipu_api(messages)
print(result["choices"][0]["message"]["content"])
ASR(语音→文本)
curl --request POST \
--url https://open.bigmodel.cn/api/paas/v4/audio/transcriptions \
--header 'Authorization: Bearer API_Key' \
--header 'Content-Type: multipart/form-data' \
--form model=glm-asr-2512 \
--form stream=false \
--form file=@example-file
智能体
这部分我也暂时没用到,所以在这里只罗列一下功能,就不写了
-
翻译 https://docs.bigmodel.cn/cn/guide/agents/translation
-
AI绘图 https://docs.bigmodel.cn/cn/guide/agents/aidrawing
-
AI生成特效短视频 https://docs.bigmodel.cn/cn/guide/agents/specialeffectsvideos
-
AI生成PPT https://docs.bigmodel.cn/cn/guide/agents/glm-ppt
应用空间:https://bigmodel.cn/marketplace/index/agent
智能体广场:https://open.bigmodel.cn/console/appcenter_v2/intelligent/center
(我也不知道为啥这还分了两个网站,可能智谱这么干有他们的道理)
2.2 使用智谱SDK
官方教程:https://docs.bigmodel.cn/cn/guide/develop/python/introduction
更多示例代码:https://github.com/zai-org/z-ai-sdk-python/tree/main/examples
需要使用的Python环境>3.8
首先下载包:pip install zai-sdk
以下几节是代码示例。在create()函数中用的参数跟HTTP API里的data参数格式相同。
2025.12.10 注意还需要安装sniffio这个包,否则会报ModuleNotFoundError: No module named 'sniffio':
pip install sniffio
2025.12.24(Python 3.9)现在不需要手动安装sniffio了,但是需要手动降低cryptography包的版本:pip install cryptography==41.0.2
参考资料:python使用库cryptography报错如何解决_cryptography 版本过高-CSDN博客
否则会报这个bug:
Traceback (most recent call last):
File "D:\codes\kpcode\tryai\try2.py", line 3, in <module>
from zai import ZhipuAiClient
File "env_path\lib\site-packages\zai\__init__.py", line 1, in <module>
from ._client import ZaiClient, ZhipuAiClient
File "env_path\lib\site-packages\zai\_client.py", line 29, in <module>
from .core import (
File "env_path\lib\site-packages\zai\core\_jwt_token.py", line 5, in <module>
import jwt
File "env_path\lib\site-packages\jwt\__init__.py", line 1, in <module>
from .api_jwk import PyJWK, PyJWKSet
File "env_path\lib\site-packages\jwt\api_jwk.py", line 7, in <module>
from .algorithms import get_default_algorithms, has_crypto, requires_cryptography
File "env_path\lib\site-packages\jwt\algorithms.py", line 11, in <module>
from .utils import (
File "env_path\lib\site-packages\jwt\utils.py", line 7, in <module>
from cryptography.hazmat.primitives.asymmetric.ec import EllipticCurve
File "env_path\lib\site-packages\cryptography\hazmat\primitives\asymmetric\ec.py", line 11, in <module>
from cryptography.exceptions import UnsupportedAlgorithm, _Reasons
File "env_path\lib\site-packages\cryptography\exceptions.py", line 9, in <module>
from cryptography.hazmat.bindings._rust import exceptions as rust_exceptions
ImportError: DLL load failed while importing _rust: 找不到指定的程序。
文本→文本
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key=api_key)
# Create chat completion
response = client.chat.completions.create(
model="GLM-4.5-Flash",
messages=[{"role": "user", "content": "你好,请介绍一下自己, Z.ai!"}],
)
print("思维链:")
print(response.choices[0].message.reasoning_content)
print("回答:")
print(response.choices[0].message.content)
(如果设置环境变量设置ZAI_API_KEY为api_key,就不用再传入api_key参数)
(如果设置thinking参数为{"type": "disabled"}将不会执行思考)
文本→文本(流式生成)
# 创建流式聊天请求
from zai import ZhipuAiClient
# Initialize client
client = ZhipuAiClient(api_key=chatglm_api_key)
# Create chat completion
response = client.chat.completions.create(
model='glm-4.7',
messages=[
{'role': 'system', 'content': '你是一个 AI 作家.'},
{'role': 'user', 'content': '讲一个关于 AI 的故事.'},
],
stream=True,
)
for chunk in response:
# 思维链
# if chunk.choices[0].delta.reasoning_content:
# print(chunk.choices[0].delta.reasoning_content, end='')
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end='')
官方给的流式处理代码示例:
class StreamProcessor:
def __init__(self, client):
self.client = client
self.full_response = ""
def stream_chat(self, messages, model="glm-4.7", callback=None):
"""流式聊天处理"""
stream = self.client.chat.completions.create(
model=model,
messages=messages,
stream=True
)
self.full_response = ""
for chunk in stream:
if chunk.choices[0].delta.content is not None:
content = chunk.choices[0].delta.content
self.full_response += content
if callback:
callback(content, self.full_response)
else:
print(content, end="", flush=True)
print() # 换行
return self.full_response
# 使用示例
processor = StreamProcessor(client)
# 自定义回调函数
def on_token_received(token, full_text):
# 可以在这里实现实时处理逻辑
print(token, end="", flush=True)
response = processor.stream_chat(
messages=[{"role": "user", "content": "写一个 Python 函数来计算斐波那契数列"}],
callback=on_token_received
)
图片(URL或base64格式)→文本
GLM-4V-Flash一次只能传一张图片。
import base64
from zai import ZhipuAiClient
def encode_image(image_path):
"""将图像编码为 base64 格式"""
with open(image_path, 'rb') as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
client = ZhipuAiClient(api_key="your-api-key")
# 方式1:使用图像URL
response = client.chat.completions.create(
model="glm-4.6v",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片里有什么?请详细描述。"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/image.jpg"
}
}
]
}
]
)
print(response.choices[0].message.content)
# 方式2:使用base64编码的图像
base64_image = encode_image('path/to/your/image.jpg')
response = client.chat.completions.create(
model="glm-4.6v",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "分析这张图片中的内容"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
]
)
print(response.choices[0].message.content)
文件(URL)→文本
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key="your-api-key") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4.6v",
messages=[
{
"role": "user",
"content": [
{
"type": "file_url",
"file_url": {
"url": "https://cdn.bigmodel.cn/static/demo/demo2.txt"
}
},
{
"type": "file_url",
"file_url": {
"url": "https://cdn.bigmodel.cn/static/demo/demo1.pdf"
}
},
{
"type": "text",
"text": "What are the files show about?"
}
]
}
],
thinking={
"type": "enabled"
}
)
print(response.choices[0].message)
文本→图片(URL)
from zai import ZhipuAiClient
# Initialize client
client = ZhipuAiClient(api_key="your-api-key")
# 图像生成
response = client.images.generations(
model="cogview-3",
prompt="一幅美丽的山水画,中国传统风格,水墨画",
size="1024x1024",
quality="standard",
)
image_url = response.data[0].url
print(f"生成的图像URL: {image_url}")
# 高质量图像生成
response = client.images.generations(
model="cogview-3-plus",
prompt="未来城市的概念设计,科幻风格,高清细节",
size="1024x1024",
quality="hd",
)
image_url = response.data[0].url
print(f"生成的图像URL: {image_url}")
图片/文本/视频→视频
from zai import ZhipuAiClient
import time
client = ZhipuAiClient(api_key="your-api-key")
# 提交生成任务
response = client.videos.generations(
model="cogvideox-3", # 使用的视频生成模型
image_url=image_url, # 提供的图片 URL 地址或者 Base64 编码
prompt="让画面动起来",
quality="speed", # 输出模式,"quality"为质量优先,"speed"为速度优先
with_audio=True,
size="1920x1080", # 视频分辨率,支持最高 4K(如: "3840x2160")
fps=30, # 帧率,可选为 30 或 60
)
print(response)
# 获取生成结果
time.sleep(60) # 等待一段时间以确保视频生成完成
result = client.videos.retrieve_videos_result(id=response.id)
print(result)
对于支持首尾帧生成视频的模型,image_url可以传一个URL列表(两个元素)
视频→视频(修改视频)也是可以的,见智谱官方文档:https://docs.bigmodel.cn/cn/best-practice/creativepractice/video
文本嵌入
# 基础文本嵌入
from zai import ZhipuAiClient
client = ZhipuAiClient(api_key="your-api-key")
response = client.embeddings.create(
model="embedding-3",
input=[
"这是第一段文本",
"这是第二段文本",
"这是第三段文本"
]
)
for i, embedding in enumerate(response.data):
print(f"文本{i+1}的嵌入向量维度: {len(embedding.embedding)}")
print(f"前5个维度的值: {embedding.embedding[:5]}")
# 计算文本相似度
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
def calculate_similarity(texts):
"""计算文本间的相似度"""
response = client.embeddings.create(
model="embedding-2",
input=texts
)
embeddings = [data.embedding for data in response.data]
embeddings_array = np.array(embeddings)
# 计算余弦相似度
similarity_matrix = cosine_similarity(embeddings_array)
return similarity_matrix
# 使用示例
texts = [
"我喜欢吃苹果",
"苹果是我最爱的水果",
"今天天气很好"
]
similarity = calculate_similarity(texts)
print("相似度矩阵:")
print(similarity)
TTS(文本→语音)
https://docs.bigmodel.cn/cn/guide/models/sound-and-video/glm-tts
非流式:
from zai import ZhipuAiClient
from pathlib import Path
client = ZhipuAiClient(api_key="") # 请填写您自己的APIKey
speech_file_path = "" # 请填写您输出文件的保存路径
response = client.audio.speech(
model="glm-tts",
input="你好呀,欢迎来到智谱开放平台",
voice="female",
response_format="wav",
speed=1.0,
volume=1.0
)
response.stream_to_file(speech_file_path)
流式:
api_key = "YOUR API KEY" # 填写您自己的APIKey
def main():
client = ZhipuAiClient(api_key=api_key)
try:
response = client.audio.speech(
model='glm-tts',
input='大家好,欢迎到来智谱开放平台',
voice='female',
stream=True,
response_format='pcm',
encode_format='base64',
speed=1.0,
volume=1.0
)
for chunk in response:
for choice in chunk.choices:
index = choice.index
is_finished = choice.finish_reason
if is_finished == "stop":
break
audio_delta = choice.delta.content
print(f"{index}.audio_delta={audio_delta[:64]}..., length={len(audio_delta)}")
except Exception as e:
print(e)
if __name__ == '__main__':
main()
音色克隆:
curl -X POST "https://open.bigmodel.cn/api/paas/v4/voice/clone" \
-H "Authorization: Bearer API_Key" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-tts-clone",
"voice_name": "my_custom_voice_001",
"text": "你好,这是一段示例音频的文本内容,用于音色复刻参考。",
"input": "欢迎使用我们的音色复刻服务,这将生成与示例音频相同音色的语音。",
"file_id": "file_abc123def456ghi789",
"request_id": "voice_clone_req_001"
}'
工具调用:内置的网络搜索工具
联网搜索工具文档:https://docs.bigmodel.cn/cn/guide/tools/web-search
from zai import ZhipuAiClient
# 初始化客户端
client = ZhipuAiClient(api_key=chatglm_api_key)
# 使用网络搜索工具
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)
response实例:
Completion(model='glm-4.7', created=1766653263, choices=[CompletionChoice(index=0, finish_reason='stop', message=CompletionMessage(content='人工智能(Artificial Intelligence,简称AI)是计算机科学的一个分支,也是一门研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学。其核心目标是使机器能够模拟人类的思维和行为,执行通常需要人类认知能力才能完成的复杂任务,如视觉感知、语音识别、决策制定、推理、学习和交流等。\n\n人工智能具有多学科交叉的特性,融合了计算机科学、认知科学、神经科学、语言学、心理学、哲学和数学等知识。其主要研究领域包括机器学习、深度学习、自然语言处理、计算机视觉、机器人技术、专家系统等。\n\n根据智能水平,人工智能可分为狭义人工智能(ANI),专注于特定任务(如图像识别);以及广义人工智能(AGI),指具备通用智能、能执行任何人类智力活动的系统(目前尚处于理论阶段)。\n\n人工智能的应用范围极其广泛,已渗透至医疗、金融、交通、教育、工业自动化、自动驾驶、智能家居、智能客服等多个领域,对社会生产力和生活方式产生着深远影响。', role='assistant', reasoning_content='1. **分析请求:**\n * **用户问题:** “What is artificial intelligence?”(什么是人工智能?)\n * **当前日期:** {2025-12-25}(这作为“实时”背景,尽管提供的文本是主要来源)。\n * **角色:** 智能问答专家,具备整合信息、时间识别、语义理解与矛盾信息清洗处理的能力。\n * **限制条件:** 仅使用提供的参考信息。仅提炼有价值的内容。确保答案具有实时性与权威性(基于提供的文本)。 直接陈述答案。无需说明数据来源或内部处理过程。\n\n2. **分析参考信息:**\n * *来源 [1] (2017):* 将AI定义为研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。计算机科学的一个分支。试图了解智能的实质并生产出一种新的能以人类智能相似的方式做出反应的智能机器。领域:机器人、语言识别、图像识别、自然语言处理、专家系统。未来产品 = “人类智慧的容器”。模拟意识/思维。不是人的智能,但能像人那样思考,也可能超过人的智能。需要计算机知识、心理学、哲学。目标:使机器能够胜任一些通常需要人类智能才能完成的复杂工作。\n * *来源 [2] (2019):* 几乎与 [1] 相同的定义。增加了电影推荐《A.I.》。\n * *来源 [3] (2020):* 定义:由人制造出来的机器所表现出来的智能。通常指通过普通计算机程序来呈现人类智能的技术。核心问题:推理、知识、规划、学习、交流、感知、移物、使用工具 和操控机械。本质:对人的思维或者行为过程的模拟。流程:输入 -> 处理 -> 输出。自我学习/优化。提及“强”与“弱”人工智能。方法:符号学习。\n * *来源 [4] (2024-08-31):* 定义:旨在模拟人类智能的计算机科学领域。涉及开发具备感知、学习、推理和决策能力的算法。核心:构建能够自主处理复杂任务的系统。分类:狭义人工智能(ANI - 特定任务)与广义人工智能(AGI - 通用,理论阶段)。多学科:认知科学、神经科学、语言学、心理学、哲学、数学。\n * *来源 [5] (日期未知/词典):* AI = artificial intelligence。中文翻译:人工智慧。定义:任何试图让计算机拥有人类心智属性的尝试。\n * *来源 [6] (2023):* 定义:以 仿效人类智能的思维和行为为目标。研究、设计、实现用于理解和掌握复杂的知识、推理、学习、交流、感知和创造等一系列智能活动的理论、方法、技术、应用系统及其开发的支撑环境。子领域:机器学习、深度学习、图像识别、自然语言处理、智能控制。应用:医疗、金融、交通、农业、教育。\n * *来源 [7] (词典/雅思):* 释义:人工智能。例句。\n * *来源 [8] (2024-08-10):* 定义:由计算机系统执行的智能行为。计算机 科学的一个分支。领域:模式识别、机器学习、自然语言处理、计算机视觉、机器人技术。技术:让机器模拟人类智能行为以处理复杂问题。应用:机器人、自动驾驶、自然语言处理、智能客服、智能搜索引擎。\n * * 来源 [9] (2024-10-23):* 定义:计算机科学的一个分支,试图理解和构建智能的实体,以便能够执行那些通常需要人类智能的任务(视觉感知、语音识别、决策制定)。起源:1956年达特茅斯会议。主要研究领域:机器学习、深度学习、自然语言处理、计算机视觉。应用:自动驾驶、智能家居、医疗诊断、金融。挑战:透明度、公平性、隐私。未来趋势:人机协同。\n * *来源 [10] (词典/发音):* 发音,“artificial”和“intelligence” 的定义。与AI本身的定义无关。\n\n3. **综合与清洗:**\n * *核心定义:* AI(Artificial Intelligence,人工智能)是计算机科学的一个分支,也是一门研究、开发用于模拟、延伸和扩展人的智能的理论、方法、 技术及应用系统的技术科学 [1][4][6][9]。它涉及通过计算机程序实现智能行为,使机器能够执行通常需要人类认知能力才能完成的任务 [4][9]。\n * *目标/本质:* 它旨在了解智能的实质,生产出一种新的能以人类智能相似的方式做出反应的智能机器 [1][2]。它模拟人的意识、思维的信息过程,或模仿人类智能行为 [1][3][8]。其核心在于构建能够自主处理复杂任务的系统,具备感知、学习、推理、决策和创造等能力 [4][6][9]。\n * *子领域/组成部分:* 包括机器学习、深度学习、自然语言处理、计算机视觉、机器人技术、专家系统、模式识别等 [1][3][4][6][8][9]。\n * *分类:* 可分为狭义人工智能(ANI,专注于特定任务)和广义人工智能(AGI,具备通用智能,尚处于理论阶段)[4]。\n * *应用:* 广泛应用于医疗、金融、交通、教育、自动驾驶、智能家居、智能客服、图像识别、语音识别等领域 [3][6][8][9]。\n * *多学科特性:* 融 合了计算机科学、认知科学、神经科学、语言学、心理学、哲学、数学等多个学科 [1][4]。\n\n4. **起草回答(迭代优化):**\n * *草稿 1(构思):* AI代表Artificial Intelligence。它是计算机科学的一个分支。它旨在让机器像人类一样思考。它包括机器学习和自然语言处理等内容。它始于1956年。它用于汽车和医疗保健。它分为弱人工智能和强人工智能。\n * *草稿 2(更贴近来源):* 人工智能(Artificial Intelligence,简称AI)是计算机科学的一个分支,旨在研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统。它试图让机器模拟人类的思维和行为,执行通常需要人类智能才能完成的复杂任务,如感知、学习、推理和决策。AI涵盖机器学习、深度学习、自然语言处理、计算机视觉等领域,并广泛应用于医疗、金融、交通、自动驾驶等场景。它分为狭义人工智能(特定任务)和广义人工智能(通用智能)。AI是一门多学科交叉的科学,涉及心理学、哲学、数学等。\n * *针对“权威性”和“直接性”进行优化:* 确保定义全面,涵盖“是什么”、“怎么做”和“领域”。使用最新的定义(2024年的来源很好地补充了2017/2019年的来源)。\n\n5. **最终润色( 匹配要求的格式):**\n 人工智能(Artificial Intelligence,简称AI)是计算机科学的一个分支,也是一门研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学。其核心目标是使机器 能够模拟人类的思维和行为,执行通常需要人类认知能力才能完成的复杂任务,如视觉感知、语音识别、决策制定、推理、学习和交流等。\n\n 人工智能具有多学科交叉的特性,融合了计算机科学、认知科学、神经科学、语言学、心理学、哲学和数学等知识。其主要研究领域包括机器学习、深度学习、自然语言处理、计算机视觉、机器人技术、专家系统等。\n\n 根据智能水平,人工智能可分为狭义人工智能(ANI),专注于特定任务(如 图像识别);以及广义人工智能(AGI),指具备通用智能、能执行任何人类智力活动的系统(目前尚处于理论阶段)。\n\n 人工智能的应用范围极其广泛,已渗透至医疗、金融、交通、教育、工业自动化、自动驾驶、智 能家居、智能客服等多个领域,对社会生产力和生活方式产生着深远影响。\n\n6. **对照限制条件进行最终审查:**\n * 当前日期背景:{2025-12-25}(文本支持该定义)。\n * 无数据来源说明:已检查。\n * 直接陈述:已检查。\n * 全面:已检查。\n\n7. **生成输出。**', tool_calls=None))], request_id='20251225170019dcfbb21fb1c3410f', id='20251225170019dcfbb21fb1c3410f', usage=CompletionUsage(prompt_tokens=3192, prompt_tokens_details=PromptTokensDetails(cached_tokens=4), completion_tokens=1992, completion_tokens_details=None, total_tokens=5184), object='chat.completion', web_search=[{'content': '人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的容器”。\n人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。\n人工智能是一门极富挑战性的科学,从 事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种复杂工作”的理解是不同的。\n人工智能的定义可以分为两部分,即人工”和智能”。人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步,等等。但总的来说,人工系统”就是通常意义下的人工系统。\n关于什么是智能”,就问题多多了。这涉及到其它诸如意识(CONSCIOUSNESS)、自我(SELF)、思维(MIND )(包括无意识的思维(UNCONSCIOUSMIND))等等问题。人唯一了解的智能是人本身的智能,这是普遍认同的观点。但是我们对我们自', 'icon': 'https://sfile.chatglm.cn/searchImage/blog_csdn_net_icon_new.jpg', 'link': 'https://blog.csdn.net/weixin_34233679/article/details/92232900', 'media': 'CSDN博客', 'publish_date': '2017-03-26', 'refer': 'ref_1', 'title': '什么是 AI(人工智能(Artificial Intelligence)(发布时间:2017-03-26 15:16:00)'}, {'content': '人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的容器”。人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的 智能。人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种复杂工作”的理解是不同的。推荐部电影,就是一个机器小男孩的故事名字就叫《A.I.》你真心的看,就明白什么叫人工智能 了。', 'icon': 'https://sfile.chatglm.cn/searchImage/wenwen_sogou_com_icon_new.jpg', 'link': 'https://wenwen.sogou.com/z/q896822522.htm', 'media': '搜狗问问', 'publish_date': '2019-05-04', 'refer': 'ref_2', 'title': 'What is Artificial Intelligence什么是人工智能(发布时间:2019-05-04 00:00:00)'}, {'content': '1.什么是人工智能(Artificial Intelligence)?\n1.1 定义之前,我们先看下面列举的例子 : 车牌识别,人脸识别,自动驾驶, 情感分类,机器翻译,人机互动, 智能机器人,AlphaGo, 可以看到人工智能应用范围很广,功能多样 1.2 维基百科给出的定义如下:\n人工智能(英语:Artificial Intelligence, 缩写为AI)亦称智械、机器智能,指由人制造出来的机器所表现出来的智能,通常人工智能是指通过普通计算机程序来呈现人类智能的技术\nAI的核心问题包括建构能够跟人类似甚至超卓的推理、知识、规划、学习、交流、感知、移物、使用工具和操控机械的能力等 通俗地讲,Intelligence的核心是自主学习及解决问题的能力,Artificial Intelligence就是机器对人类智能的模仿 就其本质而言,人工智能机器对人的思维或者行为过程的模拟, 让它能够像人一样思考或行动,流程如下: 输入—>处理—>输出 根据输入信息进行模型构造、权重更新,实现最终优化,并且具有自我学习、优化升级的特点,可以通过现有的数据,寻找数据之间的关系,建立相应的模型(自我学习),在得到新的数据后会对原有模型进行更新优化升级,以后每次得到的数据都能使现有模型更新迭代(优化升级)\n2.人工智能发展的各个阶段\n2.1 "强"人工智能\n2.2 "弱"人工智能\n3.人工智能实现方法\n3.1 符号学习(Symbolic learning)\n基于逻辑与规则的学习方法,其原理主要为物理符号系统(即符号操作系统)假设和有限合理性原理\n简单来说就是专家系统\n欠缺点:不能根据新', 'icon': 'https://sfile.chatglm.cn/searchImage/blog_csdn_net_icon_new.jpg', 'link': 'https://blog.csdn.net/weixin_45092215/article/details/105806827', 'media': 'CSDN博客', 'publish_date': '2020-04-28', 'refer': 'ref_3', 'title': '人工 智能(Artificial Intelligence)浅谈,填补你的人工智能空白(发布时间:2020-04-28 21:45:11)'}, {'content': '人工智能(AI, Artificial Intelligence)是当今科技领域最引人注目的前沿技术之一。它的影响已渗透到各行各业,从日常生活中的虚拟助手到复杂的工业自动化系统,AI 的应用无处不在。本文将详细探讨人工智能的定义与发展历程、学习人工智能的目的、人工智能在实际生活中的应用以及人工智能的常见流程,并结合实 例代码加深理解。\n一、人工智能是什么以及发展历程\n1. 人工智能的定义\n人工智能的基本定义 人工智能(Artificial Intelligence,AI)是一门旨在模拟人类智能的计算机科学领域。它不仅涉及开发具备感知、学习、 推理和决策能力的算法,还涵盖了创建这些算法的理论框架和技术方法。人工智能的核心在于构建能够自主处理复杂任务的系统,这些任务通常需要人类的认知能力来完成。\n狭义与广义的人工智能 人工智能可以分为狭义人 工智能(ANI, Artificial Narrow Intelligence)和广义人工智能(AGI, Artificial General Intelligence)。狭义人工智能专注于特定任务,如语音识别、图像处理等,其表现往往在某些领域超过人类。广义人工智能则 指能够执行任何人类智力活动的通用智能系统,具备理解、学习、适应和执行广泛任务的能力,然而这类智能尚处于理论阶段。\n人工智能的多学科特性 人工智能不仅仅是一门计算机科学,它融合了认知科学、神经科学、语 言学、心理学、哲学、数学等多个学科的知识。这种多学科的交叉使得AI在处理人类智能相关问题时,能够从不同角度进行模拟和分析。\n2. 人工智能的发展历程\n人工智能的发展可', 'icon': 'https://sfile.chatglm.cn/searchImage/blog_csdn_net_icon_new.jpg', 'link': 'https://blog.csdn.net/loveting99/article/details/141729318', 'media': 'CSDN博客', 'publish_date': '2024-08-31', 'refer': 'ref_4', 'title': '认识人工智能(AI,Artificial Intelligence)(发布时间:2024-08-31 20:03:38)'}, {'content': '英文缩写大全\nAI\nAI的意思\nartificial intelligence\nAI”是什么意思\n英文缩写\nAI\n英文全称\nartificial intelligence\n中文解释\n人工智慧\n缩写分类\n未分类\n应用领域\n无领域\n流行程度\n216\n简要解释\n无\n以上表格展示了AI”的主要定义,其中中文解释由机器翻译(标记人工审核”除外)\nAI”应用示例\nThis article for the layman answers basic questions about artificial intelligence. The opinions expressed here are not all consensus opinion among researchers in AI. 这篇文章主要针对外行提出的关于人工智能(ai)的基础性问题。这里的观点并非ai研究者的普遍共识。\nThe entire field of artificial intelligence, or AI, is devoted to this question. 人工智能领域的所有研究者都在致力于解答这个难题。\nArtificial Intelligence (or ai, for short) is the name given to any attempt to have computers gain attributes of the human mind. 人工智能(缩写为ai)这个名称来源于一些想让计算机拥有某些人类智能属性的尝试。\nIt will be a product of AI (artificia', 'icon': '', 'link': 'http://suoxie.gei6.com/q32tmd31.html', 'media': '', 'publish_date': '', 'refer': 'ref_5', 'title': 'AI是什么意思?AI是“artificial intelligence”的简写,AI的中文翻译:人工智慧'}, {'content': '人工智能(Artificial Intelligence,简称AI)是指以仿效人类智能的思维和行为为目标,研究、设计、实现用于理解和掌握复杂的知识、推理、学习、交流、感知和创造等一系列智能活动的理论、方法、技术、应用系统及其开发的支撑环境。人工智能包括多个子领域,如机器学习、深度学习、图像识别、自然语言处理、智能控制等,可以被应用在各种领域中,如医疗、金融、交通、农业、教育等。近年来,随着技术的不断发展和应用场景的扩大,人工智能已经成为世界科技领域的重要发展方向之一,并对人类的社会生产力、文化、生活方式产生着越来越重要的影响。值得拥有https://s.20a.top/3939', 'icon': 'https://sfile.chatglm.cn/searchImage/zhuanlan_zhihu_com_icon_new.jpg', 'link': 'https://zhuanlan.zhihu.com/p/626713587', 'media': '知乎专栏', 'publish_date': '2023-05-08', 'refer': 'ref_6', 'title': '人工智能(Artificial Intelligence,简称AI)(发布时间:2023-05-08 19:04:19)'}, {'content': "雅思英语常用固定搭配短语词组 artificial intelligence 释义: artificial intelligence 人工智能 例句: It was the first commercially available machine to employ artificial intelligence. 这是第一台具有商业价值的人工智能机器。 Managers have learned to grapple with networking, artificial intelligence, computer-aided engineering and manufacturing. 管理人员已经学会如何去应付网络、人工智能、计算机辅助工程和制造等问题。 It's the most powerful branch of artificial intelligence. 它是人工智能领域最强大的分支。 Every coin has two sides, and artificial intelligence is no exception. 凡事都有两面,人工智能也不例外。 This is also the case with agent technology, as it is a form of artificial intelligence. 这同样适用于代理 技术的情况,因为代理技术也是人工智能的一种。 We have classes that discuss artificial intelligence within th", 'icon': 'https://sfile.chatglm.cn/searchImage/china_viv-media_com_icon_new.jpg', 'link': 'http://china.viv-media.com/infozx-77876.html', 'media': 'Viv-Media联合大众网', 'publish_date': '', 'refer': 'ref_7', 'title': '雅思英语常用固定搭配短语词组 artificial intelligence'}, {'content': '人工智能是什么意思?\n人工智能(ArtificialIntelligence,简称AI)是指由计算机系统执行的智能行为,它是计算机科学的一个分支,是研究计算机如何实现智能行为的一门学科。它涉及模式识别、机器学习、自然语言处理、计算机视觉、机器人技术等多个领域。\n人工智能的定义\n人工智能是一种能够让机器模拟人类智能行为的技术,可以用来处理复杂的问题,从而达到较好的解决方案。它既可以应用于机器人,也可以应用于软件系统,比如智能客服、智能搜索引擎、智能驾驶系统等。\n人工智能的发展\n人工智能的发展可以追溯到20世纪50年代,当时计算机科学家们开始研究如何让计算机模拟人类的智能行为。随着计算机技术的发展,人工智能也发展得越来越快,从1980年代开始,机器学习和神经网络等技术开始发展,使得人工智能可以被应用到更多的领域,比如自动驾驶、自然语言处理、智能客服等。\n人工智能的应用\n人工智能可以应用于各个领域,比如机器人、自动驾驶、自然语言处理、智能客服、智能搜索引擎等。\n机器人技术是人工智能的一个重要分支,它可以用来实现机器人的自动化操作,比如机器人可以用来做简单的加工任务,也可以用来做更复杂的任务,比如机器人可以用来做医疗诊断、手术等。\n自动驾驶也是人工智能的一个重要应用,它可以实现车辆的自动驾驶,可以让车辆自动行驶,实现安全驾驶。\n自然语言处理是人工智能的另一个重要应用,它可以用来实现自然语言的理解和处理,比如可以用来实现机器人的自动对话,也可以用来实现智能客服的自动回复。\n智能搜索引擎也是人工智能的一个重要应用,它可以用来实现更快更准确的搜索,比如可以用来实现智能搜索引', 'icon': 'https://sfile.chatglm.cn/searchImage/www_copyedu_com_icon_new.jpg', 'link': 'http://www.copyedu.com/news/81775.html', 'media': '网校一点通', 'publish_date': '2024-08-10', 'refer': 'ref_8', 'title': 'artificial intelligence是什么意思?(发布时间:2024-08-10 16:48:43)'}, {'content': '人工智能(Artificial Intelligence,简称AI)是计算机科学的一个分支,它试图理解和构建智能的实体,以便能够执行那些通常需要人类智能的任务, 如视觉感知、语音识别、决策制定等。以下是对人工智能的介绍:\n定义与起源:人工智能是指通过计算机程序实现智能行为。这一领域旨在使机器能够模拟、延伸和扩展人类智能。人工智能的概念最早在1956年的达特茅斯会议上被提出,当时的定义强调的是使机器能够模仿人类的学习、推理和问题解决能力。\n主要研究领域:机器学习是人工智能的一个核心子领域,它使计算机系统能够基于数据自动改进性能。深度学习,一种特定类型的机器学习,通过模拟人脑的神经网络结构来学习数据特征。自然语言处理使机器能够理解和生成人类语言。计算机视觉让机器能够看”并理解视觉信息。\n应用场景:从自动驾驶汽车到智能家居系统,人工智能的应用几乎遍及所有技 术领域。医疗诊断中,AI可以帮助分析影像资料,提高疾病诊断的准确性。在金融服务领域,AI用于风险管理、交易算法和个性化金融服务。\n技术挑战:如何使AI系统更加透明和可解释,以便用户可以理解其决策过程。确保AI系统的决策是公正的,避免偏见和歧视。随着AI技术的普及,隐私保护成为了一个重要的议题,特别是在数据处理和监控系统中。\n未来趋势:未来的AI将更加注重与人类智能的协同工作,而不是替代人类。随着技术的发展,伦理和法律框架也需要不断更新,以适应AI带来的新情况。投资于AI教育和培训,为未来的劳动力市场培养必要的技能。\n人工智能处理大规模数据集通常涉及以下几个步骤:\n数据收集与预处理:首先需要从各种来源收集大量数', 'icon': 'https://sfile.chatglm.cn/searchImage/blog_csdn_net_icon_new.jpg', 'link': 'https://blog.csdn.net/blog_programb/article/details/143121595', 'media': 'CSDN博客', 'publish_date': '2024-10-23', 'refer': 'ref_9', 'title': '人工智能(Artificial Intelligence,简称AI)是计算机科学的一个分支,它试图理解和构建智能的实体(发布时间:2024-10-23 23:45:00)'}, {'content': "artificial intelligence的读音:英 [t'fl n'teldns],美 [rt'fl n'teldns] ,一、详细释义:1、n.智力;理解力;聪颖例句:He didn't respect her intelligence.他对她的智力持大不敬的看法。例句:He was too proud of the primacy of his intelligence to listen.他太自负,以其智力过人而不好好听。2、情报;情报工作;情报机关,情报机构例句:Our intelligence shows that the enemy is advancing.我们的情报显示敌人正在向前推进。例句:She first moved into the intelligence services 22 years ago.22年前她初次进入情报部门。二、artificial词语用法adj. (形容词)1、artificial指非自然环境所产生,在某种意义上为人类所创造的东西;也用于与自然物相对照的人工物;形容人时则指其言谈举止做作或拘谨。2、artificial接介词to意为在某人看来是虚假的,不自然的”。3、artificial作人工的;人造的”虚假的;不真挚的”解时不用于比较等级。三、intelligence词语用法n. (名词)intelligence作情报人员”解时,是集合名词,用作主语时,其谓语动词可用单数形式,也可用复数形式。\n扩展资料:词义辨析:mind,intellect,intelligence,brains,w", 'icon': 'https://sfile.chatglm.cn/searchImage/wenwen_sogou_com_icon_new.jpg', 'link': 'https://wenwen.sogou.com/z/q761530884.htm', 'media': '搜狗问问', 'publish_date': '', 'refer': 'ref_10', 'title': '外文名artificial intelligence怎么读'}])
具体的处理可以看智谱官方给的例子:https://docs.bigmodel.cn/cn/best-practice/case/ai-search-engine
工具调用:内置的知识库检索工具
https://docs.bigmodel.cn/cn/guide/tools/knowledge/retrieval
因为本篇不涉及知识库构建部分,所以就先不写了,如果以后有需要了再更新。
工具调用:自定义函数
from zai import ZhipuAiClient
import json
# 定义函数
def get_weather(location, date=None):
"""获取天气信息"""
# 模拟天气 API 调用
return {
"location": location,
"date": date or "今天",
"weather": "晴天",
"temperature": "25°C",
"humidity": "60%"
}
def get_stock_price(symbol):
"""获取股票价格"""
# 模拟股票 API 调用
return {
"symbol": symbol,
"price": 150.25,
"change": "+2.5%"
}
# 函数描述
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定地点的天气信息",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "地点名称"
},
"date": {
"type": "string",
"description": "日期,格式为 YYYY-MM-DD"
}
},
"required": ["location"]
}
}
},
{
"type": "function",
"function": {
"name": "get_stock_price",
"description": "获取股票当前价格",
"parameters": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "股票代码"
}
},
"required": ["symbol"]
}
}
}
]
# 使用函数调用
client = ZhipuAiClient(api_key=chatglm_api_key)
response = client.chat.completions.create(
model='glm-4.7',
messages=[
{'role': 'user', 'content': '北京今天天气怎么样?'}
],
tools=tools,
tool_choice="auto"
)
# 处理函数调用
if response.choices[0].message.tool_calls:
for tool_call in response.choices[0].message.tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
if function_name == "get_weather":
result = get_weather(**function_args)
print(f"天气信息:{result}")
elif function_name == "get_stock_price":
result = get_stock_price(**function_args)
print(f"股票信息:{result}")
else:
print(response.choices[0].message.content)
输出是:
天气信息:{'location': '北京', 'date': '今天', 'weather': '晴天', 'temperature': '25°C', 'humidity': '60%'}
response.choices[0].message的格式是:
CompletionMessage(content='我来帮您查询北京今天的天气情况。', role='assistant', reasoning_content='用户询问北京今天的天气情况。我需要使用get_weather函数来获取北京的天气信息。\n\n参数分析:\n- location: "北京" (必需参数)\n- date: 用户说的是"今天",但函数描述中date是可选参数,而且没有提供具体日期格式YYYY-MM-DD。我可以先不传date参数,看看能否获取到今天的信息。\n\n让我调用get_weather函数。', tool_calls=[CompletionMessageToolCall(id='call_-8036878591775381622', function=Function(arguments='{"location":"北京"}', name='get_weather'), type='function', index=0)])
错误处理
from zai import ZhipuAiClient
import zai
def robust_chat(message):
client = ZhipuAiClient(api_key="your-api-key")
try:
response = client.chat.completions.create(
model="glm-4.7",
messages=[{"role": "user", "content": message}]
)
return response.choices[0].message.content
except zai.core.APIStatusError as err:
return f"API 状态错误: {err}"
except zai.core.APITimeoutError as err:
return f"请求超时: {err}"
except Exception as err:
return f"其他错误: {err}"
# 使用示例
result = robust_chat("你好")
print(result)
高级配置
这个高级配置用于自定义 HTTP 客户端行为,主要包括:
-
httpx.Limits- 连接池管理:-
max_keepalive_connections=20:最大保持活跃连接数 -
max_connections=100:最大总连接数
-
-
timeout- 超时设置:httpx.Timeout(timeout=300.0, connect=8.0):总超时 300 秒,连接超时 8 秒
-
max_retries=3- 请求失败时最多重试 3 次 -
base_url- 自定义 API 地址 -
http_client- 传入自定义的 httpx 客户端实例
这些配置适用于需要高并发、长时间请求或网络不稳定的场景,可以优化连接复用和错误恢复能力。
import httpx
from zai import ZhipuAiClient
# 自定义 HTTP 客户端
httpx_client = httpx.Client(
limits=httpx.Limits(
max_keepalive_connections=20,
max_connections=100
),
timeout=30.0
)
# 创建带自定义配置的客户端
client = ZhipuAiClient(
api_key="your-api-key",
base_url="https://open.bigmodel.cn/api/paas/v4/",
timeout=httpx.Timeout(timeout=300.0, connect=8.0),
max_retries=3,
http_client=httpx_client
)
2.3 使用OpenAI SDK
https://docs.bigmodel.cn/cn/guide/develop/openai/introduction
OpenAI SDK 版本不能低于 1.0.0
pip install --upgrade 'openai>=1.0'
常用参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| model | string | 必填 | 要使用的模型名称 |
| messages | array | 必填 | 对话消息列表 |
| temperature | float | 0.6 | 控制输出的随机性 (0-1) |
| top_p | float | 0.95 | 核采样参数 (0-1) |
| max_tokens | integer | - | 最大输出 token 数 |
| stream | boolean | FALSE | 是否使用流式输出 |
| stop | string/array | - | 停止生成的标记 |
使用OpenAI SDK的具体教程可以参考我写的另一篇博文:https://zhuanlan.zhihu.com/p/637220292
文本→文本
单轮对话:
from openai import OpenAI
client = OpenAI(
api_key="your-zhipuai-api-key",
base_url="https://open.bigmodel.cn/api/paas/v4/"
)
completion = client.chat.completions.create(
model="glm-4.7",
messages=[
{"role": "system", "content": "你是一个聪明且富有创造力的小说作家"},
{"role": "user", "content": "请你作为童话故事大王,写一篇短篇童话故事"}
],
top_p=0.7,
temperature=0.9
)
print(completion.choices[0].message.content)
推理内容还是放在reasoning_content里
多轮对话:
class ChatBot:
def __init__(self, api_key: str):
self.client = OpenAI(
api_key=api_key,
base_url="https://open.bigmodel.cn/api/paas/v4/"
)
self.conversation = [
{"role": "system", "content": "你是一个有用的 AI 助手"}
]
def chat(self, user_input: str) -> str:
# 添加用户消息
self.conversation.append({"role": "user", "content": user_input})
# 调用 API
response = self.client.chat.completions.create(
model="glm-4.7",
messages=self.conversation,
temperature=1.0
)
# 获取 AI 回复
ai_response = response.choices[0].message.content
# 添加到对话历史
self.conversation.append({"role": "assistant", "content": ai_response})
return ai_response
def clear_history(self):
"""清除对话历史,保留系统提示"""
self.conversation = self.conversation[:1]
# 使用示例
bot = ChatBot("your-api-key")
print(bot.chat("你好,请介绍一下自己"))
print(bot.chat("你能帮我写代码吗?"))
print(bot.chat("写一个 Python 的快速排序算法"))
文本→文本(流式生成)
stream = client.chat.completions.create(
model="glm-4.7",
messages=[
{"role": "user", "content": "写一首关于人工智能的诗"}
],
stream=True,
temperature=0.8
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)
print() # 换行
图片(base64格式)→文本
import base64
from PIL import Image
import io
def encode_image(image_path: str) -> str:
"""将图像编码为 base64 字符串"""
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# 图像理解示例
image_base64 = encode_image("path/to/your/image.jpg")
response = client.chat.completions.create(
model="glm-4.6v",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "请描述这张图片的内容"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_base64}"
}
}
]
}
],
temperature=0.7
)
print(response.choices[0].message.content)
工具调用
import json
def get_weather(location: str) -> str:
"""获取指定地点的天气信息"""
# 这里应该调用真实的天气 API
return f"{location} 的天气:晴天,温度 25°C"
# 定义函数描述
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定地点的天气信息",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "地点名称,例如:北京、上海"
}
},
"required": ["location"]
}
}
}
]
# 调用带函数的对话
response = client.chat.completions.create(
model="glm-4.7",
messages=[
{"role": "user", "content": "北京今天天气怎么样?"}
],
tools=tools,
tool_choice="auto"
)
# 处理函数调用
message = response.choices[0].message
if message.tool_calls:
for tool_call in message.tool_calls:
if tool_call.function.name == "get_weather":
args = json.loads(tool_call.function.arguments)
result = get_weather(args["location"])
print(f"函数调用结果: {result}")
2.4 使用LangChain
https://docs.bigmodel.cn/cn/guide/develop/langchain/introduction
基本上就是跟LangChain用OpenAI系API的逻辑差不多,我就不写了,以后有需要的话再更新。
3. 请求报错处理
详情请见https://docs.bigmodel.cn/cn/faq/api-code

更多推荐

所有评论(0)