【第二周】RAG与Agent实战09:LangChain访问阿里云通义大模型

在构建 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

注意 :调用阿里云模型需要安装 dashscope SDK,并且需要配置环境变量 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)。
    • 输出 :一个字符串(生成的文本)。
      这种简单的"输入->输出"模式非常适合做文本处理、抽取、分类等任务。

运行结果示例

运行上述代码,你将看到类似以下的输出:

📝 总结

本节课我们完成了以下目标:

  1. 理论认知 :理解了 LangChain 中 LLMsChat ModelsEmbeddings 三大组件的区别。
  2. 环境搭建 :掌握了调用阿里云模型所需的库 (langchain-community, dashscope)。
  3. 代码实战 :学会了使用 Tongyi 类和 invoke 方法,以统一的接口调用通义千问大模型。

通过 LangChain 的抽象,我们可以轻松地在不同模型之间切换。

相关推荐
Lim小刘18 小时前
AWS IAM Identity Center 实战操作:从启用、用户、权限集到 SSO 登录
云计算·aws·云安全·sso
腾讯云大数据18 小时前
腾讯云ES AI搜索最佳实践:基于ES与Dify的企业级RAG应用方案
大数据·人工智能·elasticsearch·云计算·腾讯云
new Object ~1 天前
LangChain的短期记忆存储实现
python·langchain
liu****1 天前
LangChain-AI应用开发框架(六)
人工智能·python·langchain·大模型应用·本地部署大模型
运维行者_1 天前
使用 Applications Manager 实现 AWS 云监控:保障业务应用高效运行
大数据·运维·服务器·网络·数据库·云计算·aws
明天…ling1 天前
Xshell远程连接阿里云ECS超详细教程
阿里云·云计算
java资料站1 天前
第07章:LangChain使用之Agents
langchain
云布道师1 天前
【云故事探索】NO.24 | 让教育因云而无界:易康思科技如何用阿里云打破“算力孤岛”?
科技·阿里云·云计算
小驴程序源1 天前
【OpenClaw 完整安装实施教程(Windows + Ollama 本地模型)】
gpt·langchain·aigc·embedding·ai编程·llama·gpu算力
Trouvaille ~1 天前
零基础入门 LangChain 与 LangGraph(三):环境搭建、包安装与第一个 LangChain 程序
python·ai·chatgpt·langchain·大模型·openai·langgraph