【MCP教程系列】LangChain + Qwen3-Max智能体开发实战:构建商品详情页应用并集成自定义 MCP

简介: 本文介绍如何结合LangChain框架与通义千问qwen3-max大模型,快速搭建可自动生成专业商品详情页的智能体应用,并支持集成MCP工具,实现高效、可扩展的AI工作流。

image.png 本文将介绍如何利用 LangChain 框架与阿里巴巴最新推出的通义千问大模型 qwen3-max 相结合,通过代码创建出类似阿里云百炼的智能体应用,快速搭建一个可以根据用户输入自动生成专业级商品详情页面的智能助手。

文章最后:领取完整案例代码

项目背景与目标

本项目的目的是开发一款能够自动解析商品信息(例如图片、卖点等)并据此创作出富有吸引力的商品描述文本的应用程序。这不仅节省了人工撰写时间,还能保证文案质量的一致性和专业度,实现高代码搭建智能体应用,智能体调用工具,智能体调用MCP。

技术栈概览

  • 核心框架: LangChain
  • 语言模型: 通义千问系列中的 qwen3-max
  • 编程语言: Python
  • 其他依赖库:
  • langgraph: 用于状态管理和对话流程控制。
  • dataclasses: 定义数据结构。
  • 自定义工具模块 toolUtils.py
  • 集成MCP

一、什么是LangChain?,为什么要使用?

LangChain官网

https://www.langchain.com/

什么是 LangChain?

LangChain 是一个开源框架,旨在简化和加速基于大型语言模型(LLM)的应用程序开发。它提供了一套工具、组件和模式,帮助开发者更轻松地将 LLM 集成到各种应用中。

可以将 LangChain 想象成一个“连接器”和“工作流引擎”。它不仅仅是一个调用语言模型的简单接口,而是一个完整的生态系统,用于:

  • 链接组件 (Chaining):将多个步骤(如提示工程、模型调用、数据检索、后处理等)串联起来,形成复杂的处理流程。
  • 集成外部数据:轻松地将 LLM 与数据库、API、文档、网页等外部信息源连接,让模型能获取最新或特定领域的知识(即“检索增强生成 RAG”)。
  • 管理上下文:处理对话历史、记忆存储,使应用能进行多轮、有上下文的交互。
  • 工具扩展:允许 LLM 调用外部工具(如MCP,自定义工具,计算器、搜索 API、代码执行环境),从而超越其静态知识库的限制,执行实际操作。

为什么要使用 LangChain?

  1. 简化复杂流程: 构建一个实用的 LLM 应用通常需要多个步骤(例如:先从数据库查找信息,再根据信息生成回答)。LangChain 提供了 ChainAgent 等高级抽象,让你可以用声明式的方式组合这些步骤,无需手动编写大量胶水代码。
  2. 实现检索增强生成 (RAG): LLM 的知识是静态的,且可能不包含你的私有或最新数据。LangChain 可以方便地集成向量数据库,实现 RAG——在生成回答前,先从你的文档库中检索相关信息,再交给 LLM 基于这些信息生成准确、相关的回答。这对于构建企业知识库问答系统至关重要。
  3. 支持智能代理 (Agents): LangChain 的 Agent 模式允许 LLM “思考”并决定下一步行动。比如,用户问“今天北京天气如何?”,Agent 可以决定先调用天气查询工具,拿到结果后再组织语言回答。这使得应用具备了动态决策和调用工具的能力。
  4. 模块化与可复用性: LangChain 将功能分解为独立的模块(如 PromptTemplate, LLM, Memory, Retriever)。这些模块高度解耦,易于测试、替换和复用,提高了开发效率和代码质量。
  5. 丰富的集成生态: LangChain 支持众多主流 LLM(如 OpenAI, Anthropic, 百川, 通义千问等)、向量数据库(如 Chroma, Pinecone, Milvus)、文档加载器和工具。这让你可以灵活选择技术栈,避免被单一供应商锁定。
  6. 工具调用: LangChain支持多种工具调用,可以快速集成MCP工具到智能体当中。

总结来说,如果你只是想偶尔调用一下大模型API,LangChain 可能显得“杀鸡用牛刀”。但如果你想构建一个功能丰富、能访问外部知识、具备记忆和决策能力、可维护性强的 LLM 应用(如智能客服、数据分析助手、自动化工作流等),LangChain 就是一个极其强大的工具,能显著降低开发难度,提升开发效率。

总而言之我们可以通过LangChain搭建自己的高代码智能体应用或者工作流应用。

二、构建项目,编写案例代码

1、创建Python项目

您可以参考langchain官方文档构建项目:https://docs.langchain.com/oss/python/langchain/quickstart

1.1 命令行当中安装uv

什么是uv:uv是一款使用Rust语言构建的高性能Python包管理工具,目标是取代传统的工具链(例如pip、venv、pip-tools等)。 在使用前,请确保您的电脑已安装Python,这里建议选择Python 3.10版本进行安装。

pip install uv

如果uv安装失败请参考官方文档:https://docs.astral.sh/uv/

1.2 项目搭建

在您的电脑上创建并打开任意一个文件夹。 如果您使用的是 Windows 系统,可以在文件夹路径的地址栏中直接输入 cmd,即可快速打开命令行窗口。

1)创建Python项目文件
cd bailian-langchain-agent
2)创建虚拟环境并安装所需的包

在命令行中,使用“uv venv”命令创建虚拟环境,然后激活对应的虚拟环境,并安装所需的依赖项。

uv init --package --python 3.10 bailian-langchain-agent
3)创建虚拟环境
uv venv
4)在MacOs/Linux当中激活虚拟环境
source .venv/bin/activate
5)在Windows当中激活虚拟环境
.venv\Scripts\activate
6)安装依赖库langchain相关依赖
uv add langchain
uv add langchain-openai
uv add langchain-anthropic

2、初始化聊天模型

首先配置好我们想要使用的 LLM —— 通义千问 qwen3-max。这里通过指定基础 URL 及 API 密钥来连接到阿里云 DashScope 平台上的兼容模式接口

from langchain.chat_models import init_chat_model
model = init_chat_model(
    model="qwen3-max",
    model_provider="openai",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key="YOUR_API_KEY_HERE"
)

注意替换 "YOUR_API_KEY_HERE" 为你自己的密钥值。

在阿里云百炼平台领取密钥值:https://bailian.console.aliyun.com/?tab=app#/api-key

3、定义系统提示词

为了让 AI 更加专注于特定任务,在此设置了详细的系统角色设定及技能要求。这部分内容作为上下文传给模型,指导其行为规范。

SYSTEM_PROMPT = """
# 角色
你是一位专业的商品详情页生成器,负责根据用户提供的商品图片和卖点信息,生成高质量的商品详情介绍。你的任务是通过详细的描述和吸引人的语言,帮助用户更好地展示他们的商品。
## 技能
### 技能 1:理解商品信息
- 深入理解用户提供的商品图片和卖点信息。
- 如果需要更多信息或有不清楚的地方,可以向用户提问以获取更多细节。
### 技能 2:撰写商品详情
- 根据商品的图片和卖点信息,撰写详细且吸引人的商品详情介绍。
- 描述商品的特点、优势、使用场景等,使潜在买家能够全面了解商品。
- 使用清晰、简洁且具有吸引力的语言,确保商品详情页易于阅读且具有说服力。
### 技能 3:优化商品详情
- 确保商品详情页的结构合理,包括标题、副标题、段落和列表等。
- 使用关键词和短语来提高商品详情页的可读性和搜索引擎优化(SEO)。
- 添加适当的呼吁行动(CTA),鼓励潜在买家采取下一步行动,如购买或了解更多。
## 限制
- 所有的商品详情介绍必须基于用户提供的商品图片和卖点信息。
- 不得添加未经用户确认的信息或虚假内容。
- 保持语言的专业性和准确性,避免使用过于复杂或难以理解的术语。
- 确保所有输出的内容符合电商平台的规定和标准。
"""

4、创建辅助工具

为了增强交互体验,还集成了两个实用的小工具:

  • 获取当前城市天气情况
  • 查询用户的地理位置信息

这些工具被注册为可执行的操作项供 Agent 调用。

@tool
def get_weather_for_location(city: str) -> str:
    ...
@tool
def get_user_location(runtime: ToolRuntime[Context]) -> str:

5、组装 Agent 应用

最后一步是把前面准备好的组件整合起来形成最终的智能代理服务。其中包括内存管理机制以支持持续对话跟踪。

agent = create_agent(
    model=model,
    system_prompt=SYSTEM_PROMPT,
    tools=[get_user_location, get_weather_for_location],
    context_schema=Context,
    response_format=ResponseFormat,
    checkpointer=InMemorySaver()
)

6、运行实例测试

一切就绪后就可以启动这个智能客服机器人进行实际操作啦!比如请求它为一本儿童绘本书籍编写带语音解说的产品介绍页面。

response = agent.invoke(
    {"messages": [{"role": "user", "content": "能否为这款儿童绘本生成带语音解说的详情页?"}]},
    config={"configurable": {"thread_id": "1"}},
    context=Context(user_id="1")
)
print(response)

三、领取完整案例代码

1、创建toolUtils.py工具

from dataclasses import dataclass
from langchain.tools import tool, ToolRuntime
@tool
def get_weather_for_location(city: str) -> str:
    """Get weather for a given city."""
    return f"今天天气 { city } 多云 20/12℃ <3级"
@dataclass
class Context:
    """Custom runtime context schema."""
    user_id: str
@tool
def get_user_location(runtime: ToolRuntime[Context]) -> str:
    """Retrieve user information based on user ID."""
    user_id = runtime.context.user_id
    return "中国浙江杭州" if user_id == "1" else "SF"

2、创建智能体核心功能

from dataclasses import dataclass
from toolUtils import get_weather_for_location,get_user_location
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langgraph.checkpoint.memory import InMemorySaver
# Define system prompt
SYSTEM_PROMPT = """
# 角色
你是一位专业的商品详情页生成器,负责根据用户提供的商品图片和卖点信息,生成高质量的商品详情介绍。你的任务是通过详细的描述和吸引人的语言,帮助用户更好地展示他们的商品。
## 技能
### 技能 1:理解商品信息
- 深入理解用户提供的商品图片和卖点信息。
- 如果需要更多信息或有不清楚的地方,可以向用户提问以获取更多细节。
### 技能 2:撰写商品详情
- 根据商品的图片和卖点信息,撰写详细且吸引人的商品详情介绍。
- 描述商品的特点、优势、使用场景等,使潜在买家能够全面了解商品。
- 使用清晰、简洁且具有吸引力的语言,确保商品详情页易于阅读且具有说服力。
### 技能 3:优化商品详情
- 确保商品详情页的结构合理,包括标题、副标题、段落和列表等。
- 使用关键词和短语来提高商品详情页的可读性和搜索引擎优化(SEO)。
- 添加适当的呼吁行动(CTA),鼓励潜在买家采取下一步行动,如购买或了解更多。
## 限制
- 所有的商品详情介绍必须基于用户提供的商品图片和卖点信息。
- 不得添加未经用户确认的信息或虚假内容。
- 保持语言的专业性和准确性,避免使用过于复杂或难以理解的术语。
- 确保所有输出的内容符合电商平台的规定和标准。
"""
# Define context schema
@dataclass
class Context:
    """Custom runtime context schema."""
    user_id: str
# Configure model
model = init_chat_model(
    model="qwen3-max",
    model_provider="openai",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key="YOUR_API_KEY_HERE"
)
# Define response format
@dataclass
class ResponseFormat:
    """Response schema for the agent."""
    # A punny response (always required)
    punny_response: str
    # Any interesting information about the weather if available
    weather_conditions: str | None = None
# Set up memory
checkpointer = InMemorySaver()
# Create agent
agent = create_agent(
    model=model,
    system_prompt=SYSTEM_PROMPT,
    tools=[get_user_location, get_weather_for_location],
    context_schema=Context,
    response_format=ResponseFormat,
    checkpointer=checkpointer
)
# Run agent
# `thread_id` is a unique identifier for a given conversation.
config = {"configurable": {"thread_id": "1"}}
# Run the agent
response = agent.invoke(
    {"messages": [{"role": "user", "content": "能否为这款儿童绘本生成带语音解说的详情页?"}]},
    config=config,
    context=Context(user_id="1")
)
print(response)

运行结果

四、拓展LangChain智能体集成MCP

1、MCP服务

您可以参考此前的项目来创建自定义MCP,并在上述LangChain项目中按照以下代码进行MCP集成。

此前关于创建MCP的相关文章如下:

【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼

文档链接:https://developer.aliyun.com/article/1662946

MCP教程系列】使用Python在阿里云百炼创建基于UVX的MCP服务完整指南

文档链接:https://developer.aliyun.com/article/1664906

MCP教程系列】Node.js+TypeScript搭建NPX MCP服务并自定义部署至阿里云百炼

文档链接:https://developer.aliyun.com/article/1664924

【MCP系列教程】 Python 实现 FastMCP StreamableHTTP MCP:在通义灵码 IDE 开发并部署至阿里云百炼

文档链接:https://developer.aliyun.com/article/1679329

2、集成智能体应用到MCP服务

创建好MCP以后按照官方案例在LangChain搭建的智能体当中引入对应的MCP

pip install langchain-mcp-adapters
from langchain_mcp_adapters.client import MultiServerMCPClient  
from langchain.agents import create_agent
client = MultiServerMCPClient(  
    {
        "math": {
            "transport": "stdio",  # Local subprocess communication
            "command": "python",
            # Absolute path to your math_server.py file
            "args": ["/path/to/math_server.py"],
        },
        "weather": {
            "transport": "streamable_http",  # HTTP-based remote server
            # Ensure you start your weather server on port 8000
            "url": "http://localhost:8000/mcp",
        }
    }
)
tools = await client.get_tools()  
agent = create_agent(
    model=model,
    system_prompt=SYSTEM_PROMPT,
    tools  
)
math_response = await agent.ainvoke(
    {"messages": [{"role": "user", "content": "what's (3 + 5) x 12?"}]}
)
weather_response = await agent.ainvoke(
    {"messages": [{"role": "user", "content": "what is the weather in nyc?"}]}
)

最后

您可以将上述的LangChain代码与Python的FastAPI相结合,把智能体封装为API接口,再与前端联动,搭建一个带有可视化页面的专属智能体助手。

相关文章
|
5月前
|
人工智能
实训Agent创客:一键生成电商场景Agent
在阿里云百炼一键生成电商场景Agent,轻松帮您搞定商品展示图片、视频。快来参与活动任务吧!
660 2
|
6月前
|
人工智能 安全 数据库
构建可扩展的 AI 应用:LangChain 与 MCP 服务的集成模式
本文以LangChain和文件系统服务器为例,详细介绍了MCP的配置、工具创建及调用流程,展现了其“即插即用”的模块化优势,为构建复杂AI应用提供了强大支持。
|
存储 人工智能 OLAP
LangChain+通义千问+AnalyticDB向量引擎保姆级教程
本文以构建AIGC落地应用ChatBot和构建AI Agent为例,从代码级别详细分享AI框架LangChain、阿里云通义大模型和AnalyticDB向量引擎的开发经验和最佳实践,给大家快速落地AIGC应用提供参考。
132466 94
|
4月前
|
人工智能 缓存 安全
LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
LangChain v1.0 引入中间件机制,系统化解决上下文管理难题。通过模块化中间件,实现输入预处理、敏感信息过滤、工具权限控制等,提升Agent在生产环境的稳定性与可维护性。
1298 5
LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
|
2月前
|
数据采集 监控 数据可视化
快速上手:LangChain + AgentRun 浏览器沙箱极简集成指南
AgentRun Browser Sandbox 是基于云原生函数计算的浏览器沙箱服务,为 AI Agent 提供安全、免运维的浏览器环境。通过 Serverless 架构与 CDP 协议支持,实现网页抓取、自动化操作等能力,并结合 VNC 实时可视化,助力大模型“上网”交互。
698 43
|
6月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
1341 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
人工智能 Rust 开发者
【MCP教程系列】使用Python在阿里云百炼创建基于UVX的MCP服务完整指南
本文介绍如何使用基于uvx工具链的Python项目,结合阿里云百炼平台实现小红书文案审核助手的MCP服务开发与部署。首先通过安装uv工具初始化项目并配置虚拟环境,编写server.py文件调用qwen-plus模型完成内容审核功能。随后将项目打包上传至PyPI,供全球开发者访问。接着在阿里云百炼平台上配置并部署该MCP服务,解决可能的依赖问题。最后,在智能体应用中引入此MCP服务进行测试验证,确保其正常运行。
3759 0
|
缓存 人工智能 自然语言处理
阿里云百炼工作流新版功能介绍
阿里云百炼工作流全新升级,带来十大优化:对话与任务模板合并、UI界面焕新、画布性能提升、布局优化、新增流程输入输出节点、报错机制改进、聚合分组功能、参数提取节点、绘画变量记忆增强、失败重试机制。提升流程设计效率与稳定性,助力开发者高效构建AI应用。
860 1

热门文章

最新文章