本文使用
langchain_community+ChatTongyi实现多轮对话 + 流式输出,手把手带你跑通阿里云通义千问大模型。
一、场景说明
- 使用 LangChain 对接阿里云 通义千问
- 使用
ChatTongyi聊天模型(适合对话场景) - 支持:系统提示 + 多轮历史消息 + 流式输出(打字机效果)
- 模型:
qwen3-max(通义千问3.0 最强模型)
二、环境安装
pip install langchain langchain_community
三、完整可运行代码
import os
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
# 设置 DashScope API Key
os.environ["DASHSCOPE_API_KEY"] = "你的通义千问API_KEY"
# 初始化聊天模型
model = ChatTongyi(
model="qwen3-max" # 可替换:qwen3-turbo、qwen-plus、qwen-max 等
)
# 构造多轮对话消息列表
messages = [
# 系统角色:设定AI身份
SystemMessage(content="你是一个Python编程专家,同时非常幽默有趣,能帮我解决Python问题。"),
# 用户第一轮提问
HumanMessage(content="你是谁?"),
# AI第一轮回答
AIMessage(content="我是一个Python编程专家,你有什么问题尽管问!"),
# 用户第二轮提问
HumanMessage(content="你能干什么?")
]
# 流式调用(stream)
response = model.stream(input=messages)
# 逐字打印输出(打字机效果)
for chunk in response:
#打印出消息内容,通过.content获取到内容
print(chunk.content, end="", flush=True)
四、代码逐行讲解
1. 导入模块
import os
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
ChatTongyi:LangChain 封装的通义千问聊天模型SystemMessage:系统提示词,设定AI角色HumanMessage:用户消息AIMessage:AI历史回复
2. 设置 API Key
os.environ["DASHSCOPE_API_KEY"] = "你的API_KEY"
在阿里云 DashScope 控制台获取:
dashscope.console.aliyun.com/
3. 初始化模型
model = ChatTongyi(model="qwen3-max")
常用模型:
qwen3-max:最强能力qwen3-turbo:速度快、性价比高qwen-plus:通用增强版
4. 构造多轮对话
方式一:
messages = [
SystemMessage(...),
HumanMessage(...),
AIMessage(...),
HumanMessage(...)
]
方式二:
messages = [
# 系统消息
("system", "你是一个Python编程的专家,可以帮助我解决Python编程中的问题,以及是个非常有趣的人"),
# 用户消息
("human", "你是谁"),
# 助理消息
("ai", "我是一个Python编程的专家,你要问什么?"),
# 用户消息
("human", "你能干什么?"),
]
这是 Chat Model 标准格式,可以无限追加历史对话。
5. 流式输出(核心)
response = model.stream(input=messages)
for chunk in response:
print(chunk.content, end="", flush=True)
stream():流式返回,不用等全部生成完chunk.content:每次返回一小段文本flush=True:实时打印,实现打字机效果
五、运行效果示例
我可以帮你做很多事情:
1. 解答Python基础语法、面向对象、异常处理等问题
2. 帮你写代码、改Bug、优化代码
3. 讲解爬虫、数据分析、自动化办公等实战项目
4. 还能陪你聊天、讲段子,非常有趣哦~
六、常见问题
- 报错:No module named 'langchain_community'
- 执行:
pip install langchain langchain_community
- 执行:
- API Key 无效
- 检查密钥是否正确
- 检查账号是否开通通义千问服务
- 模型名称错误
- 确保使用阿里云支持的模型名:
qwen3-max、qwen-plus等
- 确保使用阿里云支持的模型名:
七、扩展用法
1. 只使用一轮对话
messages = [
SystemMessage(content="你是Python专家"),
HumanMessage(content="怎么用Python读取Excel?")
]
2. 换成非流式(invoke)
response = model.invoke(messages)
print(response.content)