【第二周】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 的抽象,我们可以轻松地在不同模型之间切换。

相关推荐
眼泪划过的星空4 小时前
基于 LangChain 框架构建本地化 RAG 系统:无需调用云端 API 的完整实践
人工智能·langchain
小鸟你好啊5 小时前
基于阿里云RDS SQL Server + 函数计算 + 通义AI构建智能销售分析平台Demo
人工智能·阿里云·云计算
YUS云生6 小时前
大模型学习·第41天:LangChain进阶——提示词模板与Chain链式调用
学习·langchain·c#
Akamai中国6 小时前
为何弹性系统设计对云可靠性至关重要
人工智能·云计算·云服务
机器学习是魔鬼7 小时前
TRL微调实战教程
云计算·矩池云
行业研究员8 小时前
腾讯云数据库:团队知识统一检索实践
数据库·云计算·腾讯云·腾讯云数据库·团队知识
Juicedata10 小时前
腾讯云 x JuiceFS:基于 FoundationDB 的企业级统一存储实践
数据库·人工智能·科技·云计算·腾讯云
国际云,接待11 小时前
AWS RDS 备份与 PITR 恢复演练:从保留期、恢复命令到应用切换验证
运维·云计算·aws·灾难恢复·数据库备份·rds
国科安芯12 小时前
ASC0101S自动双向电平转换原理深剖
单片机·嵌入式硬件·fpga开发·云计算·信息与通信