LangChain教程:调用阿里千问聊天模型chat model(使用序列封装角色) 作者:马育民 • 2026-02-24 15:41 • 阅读:10003 # 说明 在 [LangChain教程:调用阿里千问聊天模型chat model(使用Message类)](https://www.malaoshi.top/show_1GW2praxl83S.html "LangChain教程:调用阿里千问聊天模型chat model(使用Message类)") 案例中,使用类封装角色: - SystemMessage:系统角色 - HumanMessage:用户角色 - AIMessage:AI角色 还有一种简化的写法,使用序列简化上面的 `Message` 类 # 案例 简化 [LangChain教程:调用阿里千问聊天模型chat model(使用Message类)](https://www.malaoshi.top/show_1GW2praxl83S.html "LangChain教程:调用阿里千问聊天模型chat model(使用Message类)") 案例 ##### 系统角色 ``` ("system", "你是一个温柔的小学数学老师,回答问题时用“亲”、“小朋友”,并且简短回答问题,回答问题不要用markdown格式"), ``` ##### 用户角色 ``` ("human", user_input) ``` ##### AI角色 ``` ("ai", res_txt) ``` ### 完整代码 ``` from langchain_community.chat_models.tongyi import ChatTongyi # 初始化模型 chat = ChatTongyi(model="qwen3-max", api_key="填你的阿里前文api key") # 准备消息list messages = [ # 设置系统角色 ("system", "你是一个温柔的小学数学老师,回答问题时用“亲”、“小朋友”,并且简短回答问题,回答问题不要用markdown格式"), ] """ 第一次提问:3x+5=20,x 等于多少? 第二次提问:把x=6代入公式,等于多少 """ def printMessages(messages): """ 打印消息列表 :param messages: :return: """ print("------messages内容:") for item in messages: print(item[0], ":", item[1]) print("------messages内容结束") print("===== 小学数学老师对话助手 =====\n") while True: # 4. 用户角色:获取当前轮次的用户提问(变量输入) user_input = input("请提问:") # 设置用户角色 user_msg = ("human", user_input) # 将用户提问加入对话历史 messages.append(user_msg) printMessages(messages) # 5. 通过 stream() 流式调用,调用模型生成回答(AI角色的「实时回答」)。 res = chat.stream(messages) # 将回答的内容拼装到该字符串 res_txt = "" # 输出AI回答 print("\n\nAI老师的回答:") # 流式输出 for chunk in res: print(chunk.content, end="", flush=True) res_txt = res_txt + chunk.content print("\n回答完毕!\n") # 删除上次用户的提问 messages.pop() # 6. 设置AI角色 ai_msg = ("ai", res_txt) # 将本次回答加入历史(核心!作为下一轮的上下文) messages.append(ai_msg) ``` ### 代码解释1 ``` messages = [ # 设置系统角色 ("system", "你是一个温柔的小学数学老师,回答问题时用“亲”、“小朋友”,并且简短回答问题,回答问题不要用markdown格式"), ] ``` 将系统角色放入到元组或list列表中: - 第一个元素是 `systen`,表示系统角色 - 第二个元素:内容 ### 代码解释2 ``` user_msg = ("human", user_input) messages.append(user_msg) ``` 将用户角色放入到元组或list列表中: - 第一个元素是 `human`,表示用户角色 - 第二个元素:内容 ### 代码解释3 ``` ai_msg = ("ai", res_txt) messages.append(ai_msg) ``` 将ai角色放入到元组或list列表中: - 第一个元素是 `ai`,表示用户角色 - 第二个元素:内容 原文出处:http://malaoshi.top/show_1GW2pzaQGhxd.html