必须借助LangChain框架完成模型能力的结构化封装与流程编排,具体路径包括:一、配置API密钥与依赖;二、选择Tongyi或ChatTongyi初始化模型;三、用ConversationBufferMemory构建带记忆对话链;四、接入DashScopeEmbeddings+FAISS实现RAG知识增强;五、启用ChatTongyi.stream流式响应并配置LangSmith追踪。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望将通义千问大语言模型接入实际业务系统,构建具备对话记忆、工具调用或知识检索能力的AI应用,则必须借助LangChain框架完成模型能力的结构化封装与流程编排。以下是实现该目标的具体路径:
一、配置通义千问API密钥与基础依赖
LangChain本身不提供模型服务,需通过环境变量或代码显式注入通义千问的访问凭证,同时安装对应社区集成模块以支持模型调用。缺少任一环节均会导致初始化失败或401认证错误。
1、在终端执行命令安装核心依赖:
pip install langchain langchain-community dashscope
2、获取DASHSCOPE_API_KEY:登录阿里云百炼控制台,在「API密钥管理」中创建新密钥,并复制完整字符串
3、设置环境变量(推荐用于生产):
export DASHSCOPE_API_KEY="sk-xxx"
4、验证密钥可用性:运行Python脚本并尝试调用llm.invoke("测试"),若返回非空字符串则配置成功
二、选择模型类型并初始化LLM实例
LangChain将通义千问封装为两类接口:面向单轮文本生成的Tongyi类,以及支持多轮消息对象的ChatTongyi类。二者底层调用同一API,但输入格式、历史管理机制和流式响应处理方式存在本质差异。
1、使用Tongyi初始化文本生成模型:
from langchain_community.llms import Tongyi
llm = Tongyi(dashscope_api_key=os.getenv("DASHSCOPE_API_KEY"), model="qwen-max")
2、使用ChatTongyi初始化聊天模型:
from langchain_community.chat_models.tongyi import ChatTongyi
from langchain_core.messages import HumanMessage, SystemMessage
chat_model = ChatTongyi(model="qwen3-turbo", temperature=0.5)
3、关键区别提示:
Tongyi仅接受字符串输入;ChatTongyi必须传入HumanMessage/SystemMessage等消息对象列表
三、构建带记忆的对话链(Memory)
默认情况下,每次调用模型均为无状态操作。要实现“用户问旗舰产品后,再问它优势时能正确指代”,必须引入Memory模块持久化对话上下文。LangChain提供多种内存策略,其中ConversationBufferMemory最适配通义千问的中文语境。
1、导入并初始化内存组件:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
2、构造带记忆的链式调用:
from langchain.chains import LLMChain
from langchain.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([("system", "你是一家科技公司的AI助手,请用中文专业回答。"), ("human", "{input}")])
chain = LLMChain(llm=chat_model, prompt=prompt, memory=memory)
3、执行连续问答:
chain.invoke({"input": "我们的旗舰产品是什么?"})
chain.invoke({"input": "它有什么优势?"})
4、重要约束:
memory.return_messages必须设为True,否则ChatTongyi无法解析历史消息格式
四、接入向量数据库实现知识增强
当用户提问超出预设提示词范围时,需从企业文档库中检索相关片段作为上下文注入模型。LangChain通过Embeddings + VectorStore双模块实现该能力,而通义千问的text-embedding-v3向量模型可直接替代OpenAIEmbeddings。
1、初始化通义向量模型:
from langchain_community.embeddings import DashScopeEmbeddings
embeddings = DashScopeEmbeddings(model="text-embedding-v3")
2、加载本地PDF并切分文本:
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("product_manual.pdf")
docs = loader.load_and_split()
3、构建向量索引:
from langchain_community.vectorstores import FAISS
vectorstore = FAISS.from_documents(docs, embeddings)
4、绑定检索器至链路:
retriever = vectorstore.as_retriever(search_kwargs={"k": 3"})
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
5、强制启用中文分词兼容:
DashScopeEmbeddings初始化时需添加参数chunk_size=500,避免长文本截断
五、部署流式响应与可观测性追踪
面向终端用户的AI应用必须提供实时打字效果以提升交互体验,同时需记录完整调用链用于问题回溯。LangChain原生支持stream方法输出,并可通过LangSmith自动捕获所有中间步骤。
1、启用流式输出(ChatTongyi专属):
messages = [HumanMessage(content="请解释Transformer架构")]
for chunk in chat_model.stream(messages):
print(chunk.content, end="", flush=True)
2、开启LangSmith追踪:
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
os.environ["LANGCHAIN_API_KEY"] = "lsk-xxx"
os.environ["LANGCHAIN_PROJECT"] = "qwen-production"
3、关键校验点:
流式调用仅对ChatTongyi有效;Tongyi类调用.stream()会抛出AttributeError

















