【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接口,再与前端联动,搭建一个带有可视化页面的专属智能体助手。

相关文章
|
24天前
|
人工智能
实训Agent创客:一键生成电商场景Agent
在阿里云百炼一键生成电商场景Agent,轻松帮您搞定商品展示图片、视频。快来参与活动任务吧!
289 2
|
25天前
|
人工智能 开发框架 安全
浅谈 Agent 开发工具链演进历程
模型带来了意识和自主性,但在输出结果的确定性和一致性上降低了。无论是基础大模型厂商,还是提供开发工具链和运行保障的厂家,本质都是希望提升输出的可靠性,只是不同的团队基因和行业判断,提供了不同的实现路径。本文按四个阶段,通过串联一些知名的开发工具,来回顾 Agent 开发工具链的演进历程。
317 41
|
25天前
|
人工智能 监控 Java
构建定时 Agent,基于 Spring AI Alibaba 实现自主运行的人机协同智能 Agent
借助 Spring AI Alibaba 框架,开发者可快速实现定制化自动定时运行的 Agent,构建数据采集、智能分析到人工参与决策的全流程AI业务应用。
538 39
|
24天前
|
人工智能 运维 Cloud Native
直播|均降 40% 的 GPU 成本,大规模 Agent 部署和运维的捷径是什么?
10月28日19:30,阿里云云原生AgentRun与你《极客有约》。
179 29
|
1月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
1419 52
|
29天前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
383 29
|
29天前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
327 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
18天前
|
人工智能 缓存 安全
LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
LangChain v1.0 引入中间件机制,系统化解决上下文管理难题。通过模块化中间件,实现输入预处理、敏感信息过滤、工具权限控制等,提升Agent在生产环境的稳定性与可维护性。
335 5
LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
|
30天前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
363 41