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

相关推荐
陈皮糖..2 小时前
docker-compose实验案例之基于docker容器化部署下 Flask+Redis 访问计数功能的实现与调优
linux·运维·redis·docker·微服务·flask·云计算
小超同学你好4 小时前
OpenClaw 中的 Skills 机制与复现
人工智能·语言模型·langchain
玄微云12 小时前
2026年通用软件难适配,垂直店务系统反而更省心
大数据·云计算·软件需求
萧曵 丶12 小时前
LangChain Model IO 提示词模版(Python版)
开发语言·python·langchain
qq_54702617912 小时前
RAG 相似度计算
langchain
矩阵科学18 小时前
Langchain.js 实战二:会话消息
langchain
学习是生活的调味剂21 小时前
大模型应用之使用LangChain实现RAG(二)智能客服
服务器·数据库·langchain
大模型真好玩1 天前
一文详解2026年技术圈最火概念——Agent Engineering智能体工程
人工智能·langchain·agent