智能体是一种基于前沿人工智能技术的系统,能够充分运用大模型(Large Language Models)所具备的强大理解与规划能力。智能体将大模型视为一个具备广泛泛化能力的“大脑”,通过这一核心实现对环境的动态感知,并围绕既定任务目标进行自主的规划与决策,最终高效地达成目标。这一技术路径标志着从依赖固定手动规则和静态知识库查询的传统范式,向具备感知、认知与自主执行能力的智能化系统的重要跃升。

一、使用大模型

在构建基于大模型的智能体时,调用大模型的能力是首要且关键的一步。目前,调用方式主要分为本地部署模型云端API调用两种。本地部署适合对数据安全、网络延迟或成本有严格控制的场景,而云端API则以其易用性和可扩展性见长。本节将重点介绍基于云端API的调用方法,并以DeepSeek模型为例,详细阐述如何获取大模型API密钥配置本地开发环境,并利用LangChain这一流行框架对大模型能力进行封装与调用。

1.1 获取API Key

在构建基于大模型的智能体时:

  1. 注册与登录:首先,访问DeepSeek官网 https://platform.deepseek.com完成账号的注册与登录。
  2. 查看额度:登录后,进入进入个人界面查看API用量和余额情况。为确保后续API调用的顺利进行,如果额度不足,请及时进行充值。

获取API Key

  1. 创建API Key:在个人中心左侧的导航栏中,找到并点击“API Keys”选项。进入管理界面后,输入一个易于识别的API名称(例如“My_Agent_Dev”等),然后点击“创建”按钮。系统将会生成一串唯一的API Key,请务必妥善保管此密钥,因为这将是您身份验证的凭证。

创建API keys

1.2 配置环境

一个独立、纯净的Python运行环境是项目开发的基石,其能有效避免不同项目间的依赖冲突。

  1. 创建Conda虚拟环境:这里我们使用Conda来管理环境,以下命令可以创建激活一个名为AiAgent312Python 3.12虚拟环境

配置Conda环境

``

# 创建虚拟环境
conda create -n AiAgent312 python=3.12
# 查看已有环境
conda env list
# 激活虚拟环境
conda activate AiAgent312
# 退出当前的虚拟环境
conda deactivate
# 删除环境
conda remove -n AiAgent312 --all
  1. 安装项目依赖:在激活的Assistant312虚拟环境后,使用pip命令安装项目所需的所有第三方库。为保证环境一致性,建议精确指定库的版本号:

安装依赖库

# 安装依赖库,注意需要在刚激活的AiAgent312虚拟环境下安装
pip install langchain==1.0.7 \
langchain-core==1.0.5 \
langchain-huggingface==1.0.1 \
langchain-chroma==1.0.0 \
langchain-deepseek==1.0.1 \
langchain-community==0.3.31 \
sentence-transformers==5.1.2 \
scikit-learn==1.7.2 \
numpy==2.3.5 \
datetime==5.5

1.3 使用langchain_openai调用Deepseek

根据 DeepSeek 官方 API 文档的介绍,其接口设计采用了与 OpenAI 高度兼容的格式。这意味着开发者只需对现有 OpenAI 配置进行少量调整,即可无缝切换至 DeepSeek 平台,大幅降低了接入门槛和迁移成本。下文将采用这种官方推荐的方式,演示如何使用langchain_openai调用Deepseek实现一个基础的问答功能。

DeepSeek调用官方描述

DeepSeek调用官方描述

以下是一个基于 Python 的调用示例,使用 langchain_openai库进行接口封装:

# Please install OpenAI SDK first: pip3 install langchain_openai  
from langchain_core.messages  import HumanMessage, SystemMessage  
from langchain_openai.chat_models.base import BaseChatOpenAI  
  
llm = BaseChatOpenAI(  
    model='deepseek-chat',  
    openai_api_key='<your api key>',  
    openai_api_base='https://api.deepseek.com',  
    max_tokens=1024  
)  
# 设置 HumanMessage 和 SystemMessage
messages = [  
    SystemMessage(content="你是一名咨询助理。"),  
    HumanMessage(content="请写一段关于网易公司的简介。")  
]  
response = llm.invoke(messages)  
print(response.content)

代码运行后,模型将返回问题的回复,效果如下图所示:
调用DeepSeek API的运行结果

1.4 使用langchain_deepseek调用Deepseek

访问LangChain官网,搜索DeepSeek关键字,可以找到一个 langchain_deepseek 库。langchain_deepseek 由 LangChain 社群开发,可用于在 LangChain 框架中便捷调用 DeepSeek 模型 API 的插件。下文将采用该方式,演示如何使用langchain_deepseek调用Deepseek实现一个基础的问答功能。

LangChain官方介绍

以下是一个基于 Python 的调用示例,使用 langchain_deepseek库进行接口封装:

# Please install SDK first: pip3 install langchain_deepseek
from langchain_deepseek import ChatDeepSeek  
  
llm = ChatDeepSeek(
    # DeepSeek API的基础URL地址  
    base_url="https://api.deepseek.com",  
    # API密钥,需要替换为实际可用的密钥  
    api_key="<your api key>",  
    #  使用聊天模型
    model='deepseek-chat',  
    # 生成文本的随机性程度,0.7表示中等创造性  
    temperature=0.7,  
    # 生成回复的最大token数量限制  
    max_tokens=4096,  
    # API请求的超时时间(秒)  
    timeout=120
)  
# messages = [  
#     SystemMessage(content="你是一名咨询助理。"),  
#     HumanMessage(content="请写一段关于网易公司的简介。")  
# ]
messages = [  
    ("system", "你是一名咨询助理"),  
    ("human", "请写一段关于网易公司的简介。"),  
]
response = llm.invoke(messages)  
print(response.content)  

代码运行后,模型将返回问题的回复,效果如下图所示:

ScreenShot_2025-11-19_191745_807.png

二、构建智能体

接下来,我们将基于ChatDeepSeek大语言模型,构建一个面向电商导购场景的对话智能体系统。该系统采用多智能体协同架构,通过不同功能模块的配合,实现完整的网购助手交互流程。

2.1 聊天智能体

作为系统的核心交互入口,聊天智能体承担了与用户直接对话的主要职责。该智能体基于多轮对话机制,专门针对电商场景下的用户咨询需求进行优化设计。

from langchain_deepseek import ChatDeepSeek
from langchain_core.messages import AIMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.prompts import MessagesPlaceholder
# 标准库依赖
from typing import List, Union

# 参考前文API介绍部分进行Key的申请与配置
llm = ChatDeepSeek()  

def run_chat(session_id: str, user_input_str: str, history_list: List[Union[HumanMessage, AIMessage]]) -> str:
    """
    聊天方法
    """
    # 使用ChatPromptTemplate类的from_messages方法创建对话提示词模板
    prompt = ChatPromptTemplate.from_messages(
        # 定义一个消息列表,列表中是3个元组
        [
            # 系统角色定义:定义AI的角色和行为规则
            ("system",
             "你是一个商家聊天机器人,负责和客户进行对话。如果用户输入和购物无关,请在简短回答问题后隐晦地提醒用户你只是个购物推荐助手;如果用户展现比较强的否定或者攻击性意图,请坦率地承认自己错了。注意,不要思考太久,回复不要超过50个字。"),
            # 历史消息占位符:提供上下文记忆
            MessagesPlaceholder(variable_name='history_list'),
            # 用户输入占位符:用户最新输入
            ("human", "{user_input_str}")
        ]
    )
    # 构建管道组合链
    chain = prompt | llm
    # 替换提示词,执行大模型
    response = chain.invoke(
        {"user_input_str": user_input_str, "history_list": history_list},
        config={"configurable": {"session_id": session_id}}
    )
    # 返回大模型的结果
    return response.content.strip()


# 使用示例
if __name__ == "__main__":
    session_id = "abc123"
    # 测试对话
    history_list: List[Union[HumanMessage, AIMessage]] = []

    # 第一轮聊天
    user_input01 = "推荐一些适合夏天的衣服"
    response01 = run_chat(session_id, user_input01, history_list)
    print(f"用户: {user_input01}")
    print(f"机器人: {response01}")

    # 更新历史聊天记录
    history_list.extend([HumanMessage(content=user_input01), AIMessage(content=response01)])

    # 第二轮聊天
    user_input02 = "这些衣服适合什么场合?"
    response02 = run_chat(session_id, user_input02, history_list)
    print(f"用户: {user_input02}")
    print(f"机器人: {response02}")

代码运行后的识别结果如下所示:

ScreenShot_2025-11-27_172600_616.png

2.2 摘要智能体

为应对长对话场景下的上下文管理挑战,这里设计了摘要总结智能体。当对话轮数超过预设阈值时,该模块会自动对历史对话进行要点提炼,有效控制上下文长度,同时保留关键信息。

def summarize_if_needed(chat_msg_history_obj: BaseChatMessageHistory, max_msgs: int = 6):
    """当消息数量超过阈值时生成摘要"""
    # 获取历史记录中的所有消息
    msgs = chat_msg_history_obj.messages
    # 如果消息数量没超阈值,什么都不做
    if len(msgs) <= max_msgs:
        return len(msgs)

    print('开始生成摘要...')
    # 将对话消息拼接成文本格式
    # human: 第一条消息
    # ai: 第一条回复
    # human: 第二条消息
    dialog_history = "\n".join(
        f"{'human' if isinstance(m, HumanMessage) else 'ai'}: {m.content}"
        for m in msgs
    )
    # 调用LLM生成要点式摘要
    summary_info = llm.invoke(f"请对以下对话内容进行要点式总结:\n\n{dialog_history}").content.strip()

    # 清空旧历史,只保留一条"AI摘要"作为上下文开头
    chat_msg_history_obj.clear()
    chat_msg_history_obj.add_ai_message("(对话摘要)" + summary_info)
    return 1

摘要智能体聊天智能体整合后,运行时的完整日志记录如下:

=== 第1轮对话 ===
用户: 推荐一些适合夏天的衣服
机器人: 夏天推荐透气棉麻衬衫、短裤和连衣裙,搭配凉鞋或帆布鞋,清爽又时尚!

=== 第2轮对话 ===
history:
Human: 推荐一些适合夏天的衣服
AI: 夏天推荐透气棉麻衬衫、短裤和连衣裙,搭配凉鞋或帆布鞋,清爽又时尚!
---------
用户: 这些衣服适合什么场合?
机器人: 棉麻衬衫和短裤适合日常休闲或出游,连衣裙可通勤或约会,凉鞋百搭。

=== 第3轮对话 ===
history:
Human: 推荐一些适合夏天的衣服
AI: 夏天推荐透气棉麻衬衫、短裤和连衣裙,搭配凉鞋或帆布鞋,清爽又时尚!
Human: 这些衣服适合什么场合?
AI: 棉麻衬衫和短裤适合日常休闲或出游,连衣裙可通勤或约会,凉鞋百搭。
---------
用户: 价格大概是多少?
机器人: 棉麻衬衫约100-300元,短裤80-200元,连衣裙150-500元,凉鞋100-400元。具体看品牌和材质哦!

=== 第4轮对话 ===
history:
Human: 推荐一些适合夏天的衣服
AI: 夏天推荐透气棉麻衬衫、短裤和连衣裙,搭配凉鞋或帆布鞋,清爽又时尚!
Human: 这些衣服适合什么场合?
AI: 棉麻衬衫和短裤适合日常休闲或出游,连衣裙可通勤或约会,凉鞋百搭。
Human: 价格大概是多少?
AI: 棉麻衬衫约100-300元,短裤80-200元,连衣裙150-500元,凉鞋100-400元。具体看品牌和材质哦!
---------
用户: 有折扣活动吗?
机器人: 部分店铺有夏季清仓或满减活动,建议关注电商平台或品牌官网的最新促销信息。

=== 第5轮对话 ===
开始生成摘要...
history:
AI: (对话摘要)1. **夏季服装推荐**:透气棉麻衬衫、短裤、连衣裙,搭配凉鞋或帆布鞋。
2. **适用场合**:
   - 棉麻衬衫和短裤:日常休闲或出游。
   - 连衣裙:通勤或约会。
   - 凉鞋:百搭。
3. **价格范围**:
   - 棉麻衬衫:100-300元。
   - 短裤:80-200元。
   - 连衣裙:150-500元。
   - 凉鞋:100-400元。
   - 注:价格因品牌和材质而异。
4. **折扣信息**:部分店铺有夏季清仓或满减活动,建议关注电商平台或品牌官网的促销信息。
---------
用户: 什么材质最凉快?
机器人: 棉麻、真丝和天丝材质最凉快,适合夏季穿着。

=== 第6轮对话 ===
history:
AI: (对话摘要)1. **夏季服装推荐**:透气棉麻衬衫、短裤、连衣裙,搭配凉鞋或帆布鞋。
2. **适用场合**:
   - 棉麻衬衫和短裤:日常休闲或出游。
   - 连衣裙:通勤或约会。
   - 凉鞋:百搭。
3. **价格范围**:
   - 棉麻衬衫:100-300元。
   - 短裤:80-200元。
   - 连衣裙:150-500元。
   - 凉鞋:100-400元。
   - 注:价格因品牌和材质而异。
4. **折扣信息**:部分店铺有夏季清仓或满减活动,建议关注电商平台或品牌官网的促销信息。
Human: 什么材质最凉快?
AI: 棉麻、真丝和天丝材质最凉快,适合夏季穿着。
---------
用户: 适合户外运动吗?
机器人: 棉麻透气但易皱,适合轻度户外;真丝娇贵不适合运动;天丝吸湿快干,适合日常运动。

=== 第7轮对话 ===
history:
AI: (对话摘要)1. **夏季服装推荐**:透气棉麻衬衫、短裤、连衣裙,搭配凉鞋或帆布鞋。
2. **适用场合**:
   - 棉麻衬衫和短裤:日常休闲或出游。
   - 连衣裙:通勤或约会。
   - 凉鞋:百搭。
3. **价格范围**:
   - 棉麻衬衫:100-300元。
   - 短裤:80-200元。
   - 连衣裙:150-500元。
   - 凉鞋:100-400元。
   - 注:价格因品牌和材质而异。
4. **折扣信息**:部分店铺有夏季清仓或满减活动,建议关注电商平台或品牌官网的促销信息。
Human: 什么材质最凉快?
AI: 棉麻、真丝和天丝材质最凉快,适合夏季穿着。
Human: 适合户外运动吗?
AI: 棉麻透气但易皱,适合轻度户外;真丝娇贵不适合运动;天丝吸湿快干,适合日常运动。
---------
用户: 颜色选择有什么建议?
机器人: 浅色系(如白色、浅蓝)更凉快且百搭,户外运动可选深色或亮色提升安全性。

2.3 意图识别智能体

在聊天中,我们还需要使用大模型实现意图识别。意图识别作为对话系统的"大脑",负责准确理解用户的真实需求,是后续任务处理和信息推荐的基础。
意图识别模块用于在对话过程中实时识别用户的购物意图,能够结合当前用户输入和对话历史上下文,智能判断用户是否表达出购买商品或寻求购物建议的意愿。
代码实现提示词如下所示。

def is_shopping_intent(user_input_str, history_str):
    prompt = f"""
    你是一个判断用户购买意图助手,你将收到用户历史聊天摘要和当前用户输入,并判断当前用户输入是否有购物意图。
    若存在购物意图,则输出1,否则输出0。注意,不要添加其他任何东西。
    示例
    1.
    历史聊天摘要:null
    用户输入:我最近两个月打算去爬山,在秋天,应该做什么准备呢
    输出:1

    2.
    历史聊天摘要:null
    用户输入:今天天气怎么样?
    输出:0

    3.
    历史聊天摘要:null
    用户输入:我准备两个月后 在冬天登山,应该做哪些购物准备?
    输出:1

    4.
    历史聊天摘要:今天可能下雨
    用户输入:看看天气,如果下雨的话我有可能会买雨具
    输出:1

    5.
    历史聊天摘要:null
    用户输入:看看天气,如果不下雨我将出门登山
    输出:0

    历史聊天摘要是:{history_str}
    以下为用户输入{user_input_str}
    """

    response = llm.invoke(prompt).content.strip()
    print(f"intent_recognition response: {response}")
    if response == '1':
        return True
    else:
        return False

代码运行后的识别结果如下所示:

大模型意图识别结果

该意图识别智能体为构建完整的购物推荐系统奠定了坚实基础,后续可在此基础上扩展商品推荐、价格比较等高级功能。
其功能特点如下:

  • 精准识别:通过精心设计的提示词,准确区分购物意图其他对话意图
  • 上下文关联:结合历史对话理解用户的连续意图
  • 易于集成:采用二进制输出(1/0)便于后续流程集成
  • 示例驱动:通过多组示例训练模型理解购物意图的边界情况

意图识别智能体与整合摘要智能体聊天智能体整合,系统运行时的完整日志记录如下:

=== 第1轮对话 ===
intent_recognition response: 1
用户: 推荐一些适合夏天的衣服
用户购物意图: True
机器人: 夏天推荐棉麻衬衫、短裤和连衣裙,透气舒适又时尚。

=== 第2轮对话 ===
intent_recognition response: 0
history:
Human: 推荐一些适合夏天的衣服
AI: 夏天推荐棉麻衬衫、短裤和连衣裙,透气舒适又时尚。
---------
用户: 这些衣服适合什么场合?
用户购物意图: False
机器人: 棉麻衬衫和短裤适合日常休闲或出游,连衣裙适合聚会等稍正式场合。
开始生成摘要...

=== 第3轮对话 ===
intent_recognition response: 1
history:
AI: (对话摘要)1. **夏季服装推荐**:棉麻衬衫、短裤、连衣裙,特点为透气、舒适、时尚。  
2. **适用场合**:  
   - 棉麻衬衫与短裤:日常休闲或出游。  
   - 连衣裙:聚会等稍正式场合。
---------
用户: 价格大概是多少?
用户购物意图: True
机器人: 棉麻衬衫约100-200元,短裤80-150元,连衣裙150-300元。具体价格因品牌和活动而异,需要我帮您看看近期优惠吗?

=== 第4轮对话 ===
intent_recognition response: 1
history:
AI: (对话摘要)1. **夏季服装推荐**:棉麻衬衫、短裤、连衣裙,特点为透气、舒适、时尚。  
2. **适用场合**:  
   - 棉麻衬衫与短裤:日常休闲或出游。  
   - 连衣裙:聚会等稍正式场合。
Human: 价格大概是多少?
AI: 棉麻衬衫约100-200元,短裤80-150元,连衣裙150-300元。具体价格因品牌和活动而异,需要我帮您看看近期优惠吗?
---------
用户: 有折扣活动吗?
用户购物意图: True
机器人: 目前部分夏装有9折优惠,连衣裙和衬衫还有满减活动。需要我为您筛选几款高性价比的吗?
开始生成摘要...

=== 第5轮对话 ===
intent_recognition response: 1
history:
AI: (对话摘要)1. **夏季服装推荐**:棉麻衬衫、短裤、连衣裙,特点为透气、舒适、时尚。  
2. **适用场合**:  
   - 棉麻衬衫与短裤:日常休闲或出游。  
   - 连衣裙:聚会等稍正式场合。  
3. **价格范围**:  
   - 棉麻衬衫:约100-200元  
   - 短裤:80-150元  
   - 连衣裙:150-300元  
   - 注:价格因品牌和活动而异。  
4. **优惠信息**:  
   - 部分夏装9折优惠。  
   - 连衣裙和衬衫有满减活动。  
5. **AI主动服务**:提出可帮助查看优惠、筛选高性价比款式。
---------
用户: 什么材质最凉快?
用户购物意图: True
机器人: 棉麻和真丝材质最凉快,透气又吸汗。需要我推荐几款吗?

=== 第6轮对话 ===
intent_recognition response: 1
history:
AI: (对话摘要)1. **夏季服装推荐**:棉麻衬衫、短裤、连衣裙,特点为透气、舒适、时尚。  
2. **适用场合**:  
   - 棉麻衬衫与短裤:日常休闲或出游。  
   - 连衣裙:聚会等稍正式场合。  
3. **价格范围**:  
   - 棉麻衬衫:约100-200元  
   - 短裤:80-150元  
   - 连衣裙:150-300元  
   - 注:价格因品牌和活动而异。  
4. **优惠信息**:  
   - 部分夏装9折优惠。  
   - 连衣裙和衬衫有满减活动。  
5. **AI主动服务**:提出可帮助查看优惠、筛选高性价比款式。
Human: 什么材质最凉快?
AI: 棉麻和真丝材质最凉快,透气又吸汗。需要我推荐几款吗?
---------
用户: 适合户外运动吗?
用户购物意图: True
机器人: 棉麻适合日常休闲,户外运动推荐速干面料。需要看看运动系列吗?
开始生成摘要...

=== 第7轮对话 ===
intent_recognition response: 0
history:
AI: (对话摘要)1. **最凉快材质**:棉麻、真丝(透气吸汗)。
2. **户外运动适用性**:
   - 棉麻适合日常休闲,不适合高强度户外运动。
   - 推荐速干面料用于户外运动。
3. **AI服务延伸**:主动提出可推荐具体款式或查看运动系列。
---------
用户: 颜色选择有什么建议?
用户购物意图: False
机器人: 浅色更凉爽,深色更防晒。我是购物助手,可以为您推荐具体商品哦!

Process finished with exit code 0

2.4 任务分解智能体

若需要进一步开发系统能力,可引入基于以上智能体设计的任务分解智能体。在购物场景中,购物助手智能体识别出用户具有购物意图,但无法直接给出商品推荐。此时,任务分解智能体可以将意图转化为多个具体的商品推荐子任务。具体而言,该智能体不仅根据用户输入进行分解,还会结合用户的近期购物记录,以判断哪些记录与当前意图相关或无关,并遵循“购买过的,就别买了”的原则,从用户信息中抽取近期记录进行比对。

例如,当用户提出“秋天登山”这一模糊意图,且近期购买记录中包含“跑鞋、休闲鞋”时,任务分解智能体会结合该历史信息,排除已购品类,将意图分解为“专业登山鞋、登山背包、登山杖、速干衣物套装”等一系列更具针对性的子任务,从而为后续的精准推荐提供依据。系统实现中,可采用如下所示的任务分解智能体实现,并利用大模型输出 JSON 格式的结果,然后进行Json任务提取。然后结合用户的信息(比如性别、年龄、颜色喜好等),到购物系统数据库查询对应的任务商品,并将推荐商品返回给用户,从而促成下单。

def build_prompt_with_purchases(user_input, purchases_summary) -> str:
    purchase_text = "\n".join(purchases_summary) if purchases_summary else "用户近期购买记录。"
    prompt = f"""
    你是一个任务分解助手,请结合用户近期的购买记录,判断哪些购买与当前用户意图重复(即相似,不需要再次推荐),哪些购买与当前意图相关(提示用户考虑补充其他物品),并基于这些判断生成优化后的任务分解。注意,每一个分解的任务都是一个购买任务。

    用户输入:
    {user_input}

    用户近期购买记录:
    {purchase_text}

    请输出用户的 JSON,包含以下字段:
    - 意图分析:简短说明用户的核心需求
    - "purchase_decisions": 列表,每项包含 {{"item": "...", "decision": "similar/relevant/none", "reason": "...}}
    - decision 说明:“similar” 已定义类似,不建议重复;“relevant” 与当前意图相关,可提示补充;“none” 与当前意图无关。
    - 任务分解:列表,优化后的购物任务
    - 说明:可选,说明哪些任务被排除,哪些是基于历史补充的,哪些是基于购买任务添加的

    示例:
    {{
        "意图分析": "用户准备去登山,需要登山装备",
        "purchase_decisions": [
            {{"item":"登山袜","decision":"relevant","reason":"与登山相关,可提示用户补充登山鞋"}},  
            {{"item": "登山杖", "decision": "relevant", "reason": "与登山相关,可提示用户补充登山鞋"}},  
            {{"item": "休闲鞋", "decision": "none", "reason": "已买过鞋子,但与登山无关"}}
        ],
        "任务分解": [
            "购买登山鞋",
            "购买防晒帽",
            "购买水壶"
        ],
        "说明": ["客户近期购买过登山袜、准备去登山,需要登山装备且近期无购买鞋相关记录,建议补充登山鞋", "客户近期准备登山,需要防晒帽","客户近期准备登山,可能需要购买水壶"]
    }}
    """
    response = llm.invoke(prompt).content.strip()
    # 返回大模型的结果
    return response.content.strip()

2.5 信息查询智能体

为了使购物助手能够为用户检索到实际的商品来完成商品推荐任务,我们可以通过大模型,将购物任务自然语言转换成可以执行的接口查询格式数据。这就是信息查询智能体的核心职能
以下代码展示了如何利用大型语言模型,将用户的购物意图(通常是自然语言描述的查询指令),严格按照给定的数据结构与语法规则,转换成后端购物接口可直接执行的筛选过滤数据格式。这个过程确保了任务的语义能被准确地理解和结构化,从而实现从用户的意愿描述到后端系统操作的顺畅映射,为最终的个性化商品推荐奠定坚实基础。

def natural_language_to_filter(query_text) -> str:  
    prompt = f"""  
        你是一个自然语言格式化助手,请将用户的自然语言输入转换为JSON格式的过滤条件输出。只返回JSON,不要其他内容。  
                支持的字段:  
        {  
            "brand": "品牌",  
            "name": "商品名称",  
            "color": "颜色",  
            "price": "价格",  
            "categories": "类别",  
            "time": "时间"  
            "discount": "是否有折扣"  
        }  
        支持的操作符:  
        {  
            "$eq": "等于",  
            "$in": "在列表中",  
            "$gt": "大于",  
            "$lt": "小于",  
            "$gte": "大于等于",  
            "$lte": "小于等于"  
        }  
        转换规则:  
            1.品牌、颜色等文本字段使用$eq或$in  
            2.价格等数值字段可以使用比较操作符  
            3.间格式为"YYYY-MM"  
            4.折扣字段值为"是"或"否"  
        示例:  
        用户输入:"找找耐克品牌的价格低于500元并且有折扣的女士运动鞋"  
        输出:{"brand": "nike", "price": {"$lt": 500}, "discount": "是", "categories": "Women's shoe"}  
        用户输入:"阿迪达斯或彪马的红色鞋子"  
        输出:{"brand": {"$in": ["adidas", "puma"]}, "color": "red"}  
        用户输入:"2026年1月以后的女士耐克运动鞋"  
        输出:{"brand": "nike", "time": {"$gt": "2026-01"}, "categories": "Women's shoe"}  
        现在请转换:  
        用户输入:"{query_text}"  
        输出:  
    """  
    response = llm.invoke(prompt).content.strip()  
    # 返回大模型的结果  
    return response.content.strip()

三、案例代码

以上完整的案例代码,我已上传至以下地址:
https://download.csdn.net/download/aiwusheng/92637805

该案例提供了一个智能购物对话助手智能体,基于DeepSeek大语言模型构建,集成聊天、摘要生成、购物意图识别与多轮对话管理等功能。代码采用模块化设计,结构清晰,适合作为AI Agent开发的入门实践

架构与功能

  • 对话管理模块:基于LangChain框架实现多轮对话上下文管理与历史记录存储
  • 意图识别模块:智能识别用户输入中的购物意图,支持上下文关联理解
  • 历史摘要模块:自动生成对话摘要,优化长对话上下文管理,突破Token长度限制
  • 会话管理模块:支持多用户并发会话,实现数据隔离与个性化体验

技术栈

  • DeepSeek API:作为核心大模型,提供智能对话与推理能力
  • LangChain框架:用于构建可扩展的对话流程与提示工程
  • InMemory存储:轻量级管理对话历史与购买记录

适用场景

  • 电商平台智能客服系统
  • 个性化购物推荐助手
  • 对话式购物体验优化
  • 用户意图分析与行为洞察

代码结构清晰、注释完整,兼顾学习与实用价值,既适合初学者入门AI Agent开发,也支持企业项目快速集成智能对话能力。

参考

DeepSeek API 文档:
https://api-docs.deepseek.com/zh-cn/faq/

LangChain API文档 ChatDeepSeek:
https://reference.langchain.com/python/integrations/langchain_deepseek/

Anaconda:
https://anaconda.org/

LangChain接入DeepSeek的3种方法:
https://www.zhihu.com/tardis/zm/art/1953135007540422296?source_id=1005

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐