在构建 RAG(检索增强生成)和 Agent(智能体)系统时,我们面临着"模型选择困难症"。市面上大模型层出不穷,每家厂商的 API
调用方式又各不相同。如果每换一个模型就要重写一套代码,开发效率将极其低下。
LangChain 的出现解决了这个问题。它提供了一个精简的统一接口 ,屏蔽了底层不同模型的差异。无论后端是 OpenAI、阿里云通义千问,还是本地部署的 Llama,在 LangChain 中都可以用相似的代码逻辑进行调用。 本文将深入解析LangChain 支持的三大类模型,并实战演示如何使用 LangChain 调用**阿里云通义千问(Tongyi)**系列的大语言模型。
🧩 LangChain 的三大模型组件
LangChain 目前主要支持三种类型的模型组件,理解它们的区别对于正确选型至关重要:
| 模型类型 | 英文标识 | 核心定义 | 典型应用场景 |
|---|---|---|---|
| 大语言模型 | LLMs | 技术范畴的统称。基于 Transformer 架构,核心能力是理解和生成自然语言。输入是字符串,输出也是字符串。 | 文本生成、摘要、翻译、代码补全等非对话式任务。 |
| 聊天模型 | Chat Models | 应用范畴的细分。专为对话场景优化的 LLMs。核心能力是模拟人类对话的轮次交互。输入是消息列表(Messages),输出是消息对象。 | 智能客服、角色扮演、多轮对话助手、Agent 决策。 |
| 嵌入模型 | Embeddings Models | 将文本转换为向量(一串数字)的模型。用于计算文本之间的语义相似度。 | RAG 中的知识库检索、语义搜索、聚类分析。 |
💡 关键区别:
- LLMs 更像是一个"文本补全引擎",适合处理单次任务。
- Chat Models 拥有"记忆"和"角色"概念,适合处理复杂的交互逻辑。
- Embeddings 不生成文本,只生成向量,是 RAG 检索环节的基石。
在本系列教程中,我们将主要使用阿里云的通义千问系列。需要注意的是,阿里云的模型命名中:
qwen-max/qwen-plus:通常对应 LLM 接口(文本生成)。qwen-turbo/qwen-max(部分语境):也可作为 Chat Model 使用。- 注:具体分类需参考 LangChain 的具体实现封装。本案例中我们使用
Tongyi类,它主要封装了文本生成能力。
🛠️ 实战:使用 LangChain 调用通义千问
我们将使用 langchain_community 包中提供的 Tongyi 类来调用阿里云的大模型。
1. 环境准备
首先,确保你已经安装了必要的库:
bash
pip install langchain langchain-community dashscope
注意 :调用阿里云模型需要安装
dashscopeSDK,并且需要配置环境变量DASHSCOPE_API_KEY。
2. 代码实现
以下是完整的调用代码。我们选择 qwen-max 模型,因为它是一个强大的通用大语言模型。
python
import os
from langchain_community.llms.tongyi import Tongyi
# 【重要】确保在环境变量中配置了 DASHSCOPE_API_KEY
# 或者在代码中直接指定 api_key="sk-..." (不推荐硬编码)
# os.environ["DASHSCOPE_API_KEY"] = "你的API_KEY"
# 1. 初始化模型
# 注意:这里使用 qwen-max。
# 为什么不选 qwen3-max?因为在 LangChain 的某些封装版本或特定语境下,
# qwen-max 被视为标准的文本生成 LLM,而带 'chat' 或特定版本的模型可能更适合 ChatModel 接口。
# Tongyi 类主要面向 LLM (文本补全) 风格的调用。
model = Tongyi(model_name="qwen-max")
# 2. 调用 invoke 方法向模型提问
# invoke 是 LangChain 的标准调用方法,输入字符串,返回字符串
question = "你是谁呀?能做什么?"
print(f"🤖 正在提问:{question}...\n")
try:
res = model.invoke(question)
print("✅ 模型回答:")
print(res)
except Exception as e:
print(f"❌ 调用出错:{e}")
3. 代码解析
-
from langchain_community.llms.tongyi import Tongyi:从社区包中导入通义千问的 LLM 封装类。这意味着该模型被归类为 LLMs (大语言模型) 而非 Chat Models。
-
model = Tongyi(model_name="qwen-max"):实例化模型对象。
model_name参数决定了使用阿里云的哪一个具体模型版本。qwen-max是通义千问系列中性能较强的版本,适合复杂任务。 -
model.invoke("..."):这是 LangChain Runnable 接口的核心方法。
- 输入:一个字符串(Prompt)。
- 输出 :一个字符串(生成的文本)。
这种简单的"输入->输出"模式非常适合做文本处理、抽取、分类等任务。
运行结果示例
运行上述代码,你将看到类似以下的输出:

📝 总结
本节课我们完成了以下目标:
- 理论认知 :理解了 LangChain 中 LLMs 、Chat Models 和 Embeddings 三大组件的区别。
- 环境搭建 :掌握了调用阿里云模型所需的库 (
langchain-community,dashscope)。 - 代码实战 :学会了使用
Tongyi类和invoke方法,以统一的接口调用通义千问大模型。
通过 LangChain 的抽象,我们可以轻松地在不同模型之间切换。