☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
通义千问与langchain集成有五种方式:一、用chatopenai兼容接口;二、用langchain-community的chattongyi类;三、用tongyi类做文本生成;四、通过model i/o统一处理流式与非流式;五、封装为basetool嵌入agent。
如果您尝试在项目中调用通义千问大模型,但无法通过langchain框架完成初始化或执行推理,则可能是由于模型接口配置不匹配、依赖版本冲突或api密钥未正确注入。以下是结合通义千问与langchain框架的多种可行方式:
一、使用ChatOpenAI兼容接口初始化Qwen模型
通义千问官方提供OpenAI兼容模式,允许LangChain通过标准ChatOpenAI类接入,适用于qwen-plus、qwen-max等支持该协议的模型版本。此方式无需额外安装langchain-community专属模块,兼容性高且调试直观。
1、安装核心依赖:pip install langchain langchain-openai dashscope
2、设置环境变量或代码内传入DashScope API密钥:export DASHSCOPE_API_KEY="your-api-key-here"
3、初始化模型实例:from langchain_openai import ChatOpenAI; model = ChatOpenAI(model="qwen-plus", openai_api_key="your-api-key", openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1")
4、执行单次调用:response = model.invoke("你好,请介绍你自己")
二、使用langchain-community内置ChatTongyi类
langchain-community自0.2.x起集成原生ChatTongyi类,专为通义千问设计,支持系统提示、多轮消息结构及流式响应,适合构建对话型Agent。
1、安装扩展依赖:pip install langchain-community
2、导入并初始化:from langchain_community.chat_models.tongyi import ChatTongyi; model = ChatTongyi(model="qwen3-max", dashscope_api_key="your-api-key")
3、构造SystemMessage、HumanMessage、AIMessage消息列表
4、调用stream方法实现打字机效果:for chunk in model.stream(messages): print(chunk.content, end="", flush=True)
三、通过Tongyi LLM类进行基础文本生成
对于仅需简单文本补全(如Prompt Engineering、摘要生成)的场景,可直接使用langchain-community提供的Tongyi类,该类继承自LLM基类,适配invoke、generate等通用方法。
1、安装依赖:pip install langchain-community dashscope
2、初始化:from langchain_community.llms.tongyi import Tongyi; llm = Tongyi(dashscope_api_key="your-api-key", model_name="qwen-plus")
3、执行基础文本生成:result = llm.invoke("请将以下句子翻译成英文:今天天气很好。")
4、获取token消耗统计信息(如启用verbose):需在初始化时设置 verbose=True 并捕获回调日志
四、结合Model I/O模块实现流式与非流式统一处理
LangChain Model I/O抽象层可屏蔽底层模型差异,通过统一的输入输出协议管理通义千问的请求生命周期,适用于需同时支持同步响应与流式输出的混合业务逻辑。
1、定义输入schema与输出parser,例如使用StrOutputParser处理纯文本输出
2、构建链式调用:chain = model | StrOutputParser()
3、执行链式调用:output = chain.invoke({"input": "解释什么是LangChain"})
4、启用流式链:for chunk in chain.stream({"input": "列出LangChain五大核心模块"}): print(chunk)
五、基于自定义工具封装Qwen模型能力
当需要将通义千问作为内部工具嵌入Agent工作流时,可通过LangChain的BaseTool子类封装其调用逻辑,使模型具备“可被调度”的工具属性,用于结构化Agent或多步推理流程。
1、定义工具类:class QwenQueryTool(BaseTool): name="通义千问查询工具"; description="向通义千问模型发起自然语言查询"
2、在_run方法中调用已初始化的model实例:return self.model.invoke(tool_input)
3、将工具加入Agent工具列表:tools = [QwenQueryTool(model=model)]
4、构建structured-chat-agent并绑定memory与prompt:必须使用hwchase17/structured-chat-agent提示词模板











