news 2026/8/24 13:36:37

提示工程架构师实战:用Rasa+LangChain构建智能家居Agentic AI对话系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
提示工程架构师实战:用Rasa+LangChain构建智能家居Agentic AI对话系统

提示工程架构师实战:用Rasa+LangChain构建智能家居Agentic AI对话系统

一、引言 (Introduction)

钩子 (The Hook)

想象一下这样的场景:你刚下班回家,手里拎着外卖,对着智能音箱说:“我到家了,帮我打开客厅的灯,把空调调到25度,再播放我喜欢的音乐。”
如果是传统智能音箱,可能会逐个处理请求——先开灯,再调空调,最后放音乐,甚至可能漏掉其中一个;如果是Agentic AI对话系统,它会瞬间理解你的整体需求,自主调用灯、空调、音乐播放器的控制接口,一次性完成所有任务,还会回复:“欢迎回家!客厅灯已打开,空调调到25度,正在播放你喜欢的《加州旅馆》。”

是不是更智能、更贴心?这就是Agentic AI(代理型AI)的魅力——它像人类助手一样,能理解复杂需求、自主决策、调用工具,彻底解决传统对话系统“笨手笨脚”的痛点。

定义问题/阐述背景 (The “Why”)

传统智能家居对话系统的三大痛点:

  1. 单一意图限制:只能处理“打开灯”“调空调”等简单请求,无法理解组合需求(如“到家场景”);
  2. 上下文缺失:无法关联历史对话,比如你说“把它关掉”,它不知道“它”指的是灯还是空调;
  3. 无自主决策:需要手动触发每一步操作,无法根据外部信息(如天气)自动调整(如“下雨了,自动关闭窗户”)。

Agentic AI的出现解决了这些问题。它具备三大核心能力:

  • 目标导向:能理解用户的最终需求(如“我要睡觉了”=“设置夜间场景”);
  • 工具调用:能自主调用外部工具(如家电控制API、天气接口);
  • 上下文记忆:能记住对话历史,处理多轮交互(如“关掉灯”→“哪个房间的?”→“卧室”)。

亮明观点/文章目标 (The “What” & “How”)

本文将带你从0到1构建一个智能家居Agentic AI对话系统,核心工具是:

  • Rasa:开源对话AI框架,负责意图识别、实体提取、对话管理(前端交互);
  • LangChain:工具链框架,负责连接LLM、调用外部工具、自主决策(后端代理)。

读完本文,你将学会:

  1. 用Rasa定义智能家居领域的意图和实体;
  2. 用LangChain构建能调用工具的Agent;
  3. 整合Rasa与LangChain,实现端到端的智能对话;
  4. 优化系统性能,避免常见陷阱。

二、基础知识/背景铺垫 (Foundational Concepts)

在开始实战前,需要明确几个核心概念:

1. Agentic AI(代理型AI)

Agentic AI是一种能自主完成任务的AI系统,核心逻辑是:

  • 感知:接收用户输入(文本、语音等);
  • 决策:根据输入和上下文,决定下一步动作(调用工具/直接回复);
  • 执行:调用工具(如API)或生成自然语言回复;
  • 反馈:根据执行结果调整后续决策。

相比传统对话系统(规则/简单ML),Agentic AI更像“有思维的助手”。

2. Rasa:对话管理的“大脑”

Rasa是开源对话AI框架的“天花板”,主要功能包括:

  • 意图识别(Intent Classification):判断用户输入的目的(如“打开灯”→turn_on_device);
  • 实体提取(Entity Extraction):从输入中提取关键信息(如“客厅的灯”→device_type=lightlocation=living_room);
  • 对话管理(Dialogue Management):通过stories(对话流程)和rules(规则)控制对话逻辑(如缺少实体时,自动询问用户)。

3. LangChain:工具调用的“桥梁”

LangChain是连接LLM与外部工具的“中间层”,主要功能包括:

  • 工具封装(Tool Wrapping):将外部API(如家电控制、天气查询)封装成可调用的工具;
  • 代理逻辑(Agent Logic):通过Prompt引导LLM自主决策(如“是否需要调用工具?调用哪个?”);
  • 结果整合(Result Synthesis):将工具返回的结果整理成自然语言回复。

4. 技术分工:Rasa vs LangChain

模块Rasa职责LangChain职责
前端交互处理用户输入,识别意图/实体
对话流程控制多轮对话(如询问缺失的实体)
后端决策决定是否调用工具,调用哪个工具
工具调用封装并调用外部API
结果返回将LangChain的结果发给用户生成自然语言回复

三、核心内容/实战演练 (The Core - “How-To”)

接下来进入实战环节,我们将构建一个**能处理“控制家电”“设置场景”“查询状态”**的智能家居Agent。

准备工作:环境搭建

  1. 安装依赖
    pipinstallrasa langchain openai requests python-dotenv
  2. 创建Rasa项目
    rasa init --no-prompt# 快速初始化项目,无需交互
  3. 设置API密钥
    创建.env文件,添加OpenAI API密钥(用于LangChain调用LLM):
    OPENAI_API_KEY=your-openai-api-key

步骤一:用Rasa定义智能家居领域模型

领域模型(Domain)是Rasa的核心,定义了意图、实体、对话流程等内容。我们需要先明确:

  • 意图(Intents):用户的需求类型(如turn_on_device=打开设备、set_scene=设置场景);
  • 实体(Entities):需求中的关键信息(如device_type=设备类型、location=位置);
  • Slots:存储对话中的临时信息(如用户提到的“卧室灯”,slots会保存device_type=lightlocation=bedroom);
  • Responses:系统的回复模板(如缺少实体时,回复“你想控制什么设备?”)。
1. 修改domain.yml(核心配置文件)

打开rasa/domain.yml,替换为以下内容:

# 意图:用户的需求类型intents:-turn_on_device:# 打开设备use_entities:[device_type,location]# 需要提取的实体-turn_off_device:# 关闭设备use_entities:[device_type,location]-check_device_status:# 查询设备状态use_entities:[device_type,location]-set_scene:# 设置场景use_entities:[scene_type]-inform:# 用户提供信息(如“卧室的灯”)use_entities:[device_type,location,scene_type]# 实体:需求中的关键信息entities:-device_type# 设备类型(light/air_conditioner/tv)-location# 位置(bedroom/living_room/kitchen)-scene_type# 场景类型(morning/night/party)# Slots:存储对话临时信息(影响对话流程)slots:device_type
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 23:01:22

【Matlab】 CRC-8 计算数组Checknum

function crc crc8(data) % data: uint8 数组 poly uint8(hex2dec(07)); % 多项式 crc uint8(0); % 初始值for byte datacrc bitxor(crc, byte); % 与输入异或for i 1:8if bitand(crc, 128) % 检查最高位crc bitxor(bitshift(crc, 1), poly);elsecrc bitshift(crc, 1);…

作者头像 李华
网站建设 2026/8/19 19:38:55

UVM-build_phase/run_phase的执行顺序及仿真调度

build_phase build_phase的执行顺序在整个层次上看遵循从上到下,但在一个组件内中的build_phase是顺序顺序执行。create的本质就是创建对象,本质是调用new函数。所以在build_phase中呈现的顺序会出现跳转现象。当在build_phase中执行到create函数时,它会去执行所要创建的组件…

作者头像 李华
网站建设 2026/8/17 16:37:34

stm32h743单片机驱动dac8568失效问题分析

背景 我现在使用的stm32h743单片机SPI驱动dac8568,出现一个问题就是我在spi通信线上接了逻辑分析仪,就可以通信成功,如果没有接,就会导致spi通信失败,采用的线缆连接,大概30cm长,没有带屏蔽。 问…

作者头像 李华
网站建设 2026/8/22 19:32:01

人工智能应用-机器视觉:绘画大师 05.还原毕加索的隐藏画

在艺术史上,一些大画家也曾经历过艰难时刻。例如,毕加索在 1901—1904 年间经历了极度的经济困境。 为了节省开支,他不得不在已经使用过的画布上创作新作品。如图 26.7所示,通过 X 射线扫描,人们发现毕加索在这一时期…

作者头像 李华
网站建设 2026/8/17 14:30:38

‌如何测试AI的“长上下文记忆”?

长上下文记忆测试的本质是“信息持久性验证”‌ AI的“长上下文记忆”并非真正记忆,而是模型在单次推理中对输入序列的‌上下文窗口内信息的保持与推理能力‌。测试目标不是验证“记住”,而是验证‌关键信息在超长对话链中是否可被准确召回、正确引用、…

作者头像 李华