本文将介绍如何利用 LangChain 框架与阿里巴巴最新推出的通义千问大模型 qwen3-max 相结合,通过代码创建出类似阿里云百炼的智能体应用,快速搭建一个可以根据用户输入自动生成专业级商品详情页面的智能助手。
文章最后:领取完整案例代码
项目背景与目标
本项目的目的是开发一款能够自动解析商品信息(例如图片、卖点等)并据此创作出富有吸引力的商品描述文本的应用程序。这不仅节省了人工撰写时间,还能保证文案质量的一致性和专业度,实现高代码搭建智能体应用,智能体调用工具,智能体调用MCP。
技术栈概览
- 核心框架: LangChain
- 语言模型: 通义千问系列中的 qwen3-max
- 编程语言: Python
- 其他依赖库:
- langgraph: 用于状态管理和对话流程控制。
- dataclasses: 定义数据结构。
- 自定义工具模块 toolUtils.py
- 集成MCP
一、什么是LangChain?,为什么要使用?
LangChain官网
什么是 LangChain?
LangChain 是一个开源框架,旨在简化和加速基于大型语言模型(LLM)的应用程序开发。它提供了一套工具、组件和模式,帮助开发者更轻松地将 LLM 集成到各种应用中。
可以将 LangChain 想象成一个“连接器”和“工作流引擎”。它不仅仅是一个调用语言模型的简单接口,而是一个完整的生态系统,用于:
- 链接组件 (Chaining):将多个步骤(如提示工程、模型调用、数据检索、后处理等)串联起来,形成复杂的处理流程。
- 集成外部数据:轻松地将 LLM 与数据库、API、文档、网页等外部信息源连接,让模型能获取最新或特定领域的知识(即“检索增强生成 RAG”)。
- 管理上下文:处理对话历史、记忆存储,使应用能进行多轮、有上下文的交互。
- 工具扩展:允许 LLM 调用外部工具(如MCP,自定义工具,计算器、搜索 API、代码执行环境),从而超越其静态知识库的限制,执行实际操作。
为什么要使用 LangChain?
- 简化复杂流程: 构建一个实用的 LLM 应用通常需要多个步骤(例如:先从数据库查找信息,再根据信息生成回答)。LangChain 提供了
Chain和Agent等高级抽象,让你可以用声明式的方式组合这些步骤,无需手动编写大量胶水代码。 - 实现检索增强生成 (RAG): LLM 的知识是静态的,且可能不包含你的私有或最新数据。LangChain 可以方便地集成向量数据库,实现 RAG——在生成回答前,先从你的文档库中检索相关信息,再交给 LLM 基于这些信息生成准确、相关的回答。这对于构建企业知识库问答系统至关重要。
- 支持智能代理 (Agents): LangChain 的 Agent 模式允许 LLM “思考”并决定下一步行动。比如,用户问“今天北京天气如何?”,Agent 可以决定先调用天气查询工具,拿到结果后再组织语言回答。这使得应用具备了动态决策和调用工具的能力。
- 模块化与可复用性: LangChain 将功能分解为独立的模块(如
PromptTemplate,LLM,Memory,Retriever)。这些模块高度解耦,易于测试、替换和复用,提高了开发效率和代码质量。 - 丰富的集成生态: LangChain 支持众多主流 LLM(如 OpenAI, Anthropic, 百川, 通义千问等)、向量数据库(如 Chroma, Pinecone, Milvus)、文档加载器和工具。这让你可以灵活选择技术栈,避免被单一供应商锁定。
- 工具调用: 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 调用。
def get_weather_for_location(city: str) -> str: ... 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 def get_weather_for_location(city: str) -> str: """Get weather for a given city.""" return f"今天天气 { city } 多云 20/12℃ <3级" class Context: """Custom runtime context schema.""" user_id: str 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 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 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接口,再与前端联动,搭建一个带有可视化页面的专属智能体助手。