要实现智谱清言api的上下文记忆,需用list存储含role和content的消息,首条为system消息定义角色,动态追加user与assistant消息,调用时指定model、传入messages列表、设stream=false,并从response.choices[0].message.content提取回复。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

让智谱清言API记住上一句你问了什么、下一句能接着聊,而不是每次提问都当成全新对话,这是构建真实聊天体验的核心需求。不传上下文,模型就真“失忆”,哪怕你刚说“帮我写Python爬虫”,下一句问“加上异常处理”,它也会当你是第一次开口。
准备带记忆的对话结构
第一步:用列表变量存储全部历史消息,每轮交互后追加新条目;【必须用 list 类型,不能用 dict 或 tuple】第二步:确保每条消息包含 role("user" 或 "assistant")和 content 两个键;第三步:首条 system 消息放在最前面,定义助手身份——这句不显示给用户,但极大影响后续回答风格。
构造 messages 列表的两种写法
方法一:手动拼接(适合调试或固定流程)
messages = [
{"role": "system", "content": "你是一个严谨的Python工程师,只回答技术问题,不闲聊"},
{"role": "user", "content": "怎么用 requests 下载网页?"},
{"role": "assistant", "content": "用 get() 方法获取响应,再用 .text 或 .content 读取内容"},
{"role": "user", "content": "加上超时和异常捕获"}
]
方法二:动态累积(推荐用于真实聊天循环)
初始化空列表:messages = [{"role": "system", "content": "请用中文回答,简洁准确"}]
用户输入后追加:messages.append({"role": "user", "content": user_input})
收到回复后立即追加:messages.append({"role": "assistant", "content": ai_response})
【追加顺序不能颠倒,否则模型会混淆谁说了什么】
调用时的关键参数设置
第一步:明确指定 model,例如 "glm-4-flash" 或 "glm-4",不要留空或写错别字;
第二步:将完整 messages 列表传入 messages 参数,不是单条字符串;
第三步:关闭流式输出——【必须设置 stream=False,否则 response 对象无法直接取 .choices[0].message.content】;
第四步:控制长度,max_tokens 建议设为 2048,太小会截断长回复,太大可能触发风控限频。
提取并保存 AI 回复的正确姿势
调用完成后,response 是一个 ChatCompletion 对象,不是字符串。
直接取值:ai_reply = response.choices[0].message.content
这一步操作起来很简单,但若漏掉 .choices[0] 就会报 AttributeError;
拿到 reply 后,立刻执行 messages.append({"role": "assistant", "content": ai_reply}),完成闭环。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











