成功调用智谱清言API需完成身份认证、环境配置和请求构造三步:先在开放平台获取API Key并存入.env文件,再安装zhipuai SDK,最后构造含role/content的messages列表并设置stream、max_tokens等参数。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Python项目中成功调用智谱清言API并让大模型返回有效响应,必须先完成身份认证、环境配置和请求构造三个不可跳过的环节,漏掉任一环都会导致ConnectionError或AuthenticationError。
获取并安全存储API Key
登录智谱AI开放平台(https://open.bigmodel.cn/),完成实名认证后进入「API Keys」页面,点击「添加新的API Key」生成密钥。系统会生成一串以sk-开头的32位字符串,这就是你的访问凭证。
【切勿将API Key明文写死在代码里】,否则一旦上传GitHub等公开平台,密钥立即失效且账户可能被恶意调用。推荐使用环境变量方式加载:在项目根目录新建.env文件,写入ZHIPU_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,再通过python-dotenv读取。
安装SDK并验证基础连通性
执行命令安装官方SDK:pip install zhipuai -i https://mirrors.aliyun.com/pypi/simple/。阿里源比默认源更稳定,清华源在此场景下存在偶发超时问题。
新建test_api.py,粘贴以下最小可运行代码:
from zhipuai import ZhipuAI
import os
from dotenv import load_dotenv
load_dotenv()
client = ZhipuAI(api_key=os.getenv("ZHIPU_API_KEY"))
response = client.chat.completions.create(
model="glm-4-flash",
messages=[{"role": "user", "content": "测试连接"}]
)
print(response.choices[0].message.content)
运行该脚本——若终端输出“测试连接”相关回复,说明网络、密钥、SDK三者已全部就绪;若报错Invalid API Key,请检查.env文件路径是否在脚本同级目录,或确认密钥末尾无空格。
构造合规的对话请求体
智谱清言要求所有chat接口必须传入messages数组,且至少包含一个user角色消息。系统提示词(system prompt)为可选,但加入后能显著提升回答一致性。
方法一:单轮问答(适合工具类指令)
直接构造含用户输入的列表:[{"role":"user","content":"把'hello world'翻译成中文"}]
方法二:多轮上下文(适合聊天机器人)
按时间顺序追加历史记录:[{"role":"user","content":"Python中如何删除列表最后一个元素?"},{"role":"assistant","content":"用list.pop()方法"},{"role":"user","content":"如果不想修改原列表呢?"}]
注意:messages中不能出现null或空字符串content,否则触发400 Bad Request。每个message对象必须严格包含role和content两个键。
控制响应行为的关键参数
第一步:决定输出模式
需要完整答案→设置stream=False(默认值);需要打字机效果→显式传stream=True。不写此参数时SDK自动按非流式处理,无需额外配置。
第二步:限制生成长度
通过max_tokens控制最大输出token数,建议设为512起步。设得太小(如64)会导致回答被粗暴截断,设得太大(如4096)则增加延迟且未必提升质量。
第三步:调节生成风格
降低temperature(如0.3)让回答更确定、更保守;提高(如0.9)则增强创造性,但可能编造事实。日常使用0.7是较稳妥的平衡点。
第四步:启用高级能力
需调用GLM-4V等多模态模型时,messages中content必须为列表结构,包含text和image_url对象;调用AutoGLM沉思模式需在请求体中加入"strategy":"think"字段,且prompt末尾附加[THINK]标记。


















