Skip to content

SA 空间预约:Agent 设计方案 (Semantic/AI Layer)

NOTE

模块文档导航

  1. [入口] Agent 调度逻辑 (当前文档):负责 Slot Filling 与全链路编排。
  2. [逻辑] 时间处理流水线:负责 P1-P4 时间归一化与贪婪策略。
  3. [逻辑] 资源处理流水线:负责 Task B 空间检索与忙闲校验。
  4. [算法] 会议室推荐算法逻辑:定义排序权重与冲突处理算法。

文档目的:描述会议预约专家(Meeting Specialist)如何通过多轮对话完成时间、人数及偏好提取,并结合后端实时忙闲数据实现预约建议与确认。


整体流程

20260117121649

1. 槽位定义与验证逻辑 (Slot Filling & Validation)

1.1 槽位定义与提取规则 (Slots & Extraction)

Agent 需严格遵循以下 JSON 结构从用户输入中提取槽位(详见 提示词模板):

槽位名称类型说明示例
start_dateString"yyyyMMdd",未指定则为 null (由逻辑层补全)20260121
start_timeString用户数字时间 "hh:mm",未指定则为 null (由逻辑层补全)05:00
periodString明确词时为 "AM" 或 "PM",无则为 nullPM
capacityInteger精确人数, 未指定则为 null (由逻辑层补全)20
duration_hoursFloat时长(小时)或 null1.5
room_nameString用户指定的会议室精确名称或 null火星厅
topic_nameString会议主题。默认 "临时会议"研发周会

针对start_time举例

  • 如 用户输入 "下午5点",则 start_time 为 "5:00",period 为 "PM"
  • 如 用户输入 "5点",则 start_time 为 "5:00",periodnull
  • 如 用户没输入时间,结合当前时间,如果当前时间是14:00,则默认 start_time 为 "15:00",periodnull

1.3 提示词模板 (Prompt Template)

markdown
# 角色:Slot提取器
严格从用户输入提取会议室预订slot。仅输出JSON,无额外文本。当前时间:{{CURRENT_TIME}}。

# Slot规则
[参照 1.1 槽位表数据结构]

# 输出示例
用户:"我想订个下午5点会议室"
输出:{"start_date":"null","start_time":"05:00","period":"PM",...}

2. Dify 流程编排逻辑 (Dify Workflow Logic)

Agent 遵循以下核心编排逻辑完成预约闭环:

  1. 意图解析 (Slot Filling):从用户输入中提取槽位信息。若必填项缺失,直接追问。
  2. 时间流水线启动 (Time Pipeline):槽位初步完成后,直接调用 time pipeline 处理逻辑。
    • 注:流水线内部负责日期补全(如缺失则默认为当前下个整点)等兜底逻辑。
  3. 时间结果处理
    • 4.1 错误拦截:若返回非法日期(昨天)、Period 矛盾(上午 15 点)、过期时间或非工作时间,则 Agent 进一步追问引导用户修正。
    • 4.2 多候选确认:若返回多个可选时间(歧义),Agent 展示选项供用户进一步确认。
    • 4.3 唯一解析:若返回唯一合法时间,则直接锁定时间并自动进入下一步。
  4. 资源流水线启动 (Resource Pipeline):时间锁定后,调用物理资源检索逻辑。
  5. 资源结果处理
    • 5.1 有效推荐:返回可用会议室列表,Agent 直接发送前端展示组件。
    • 5.2 冲突后推荐:原会议室全忙但有建议方案,Agent 回复话术引导后发送前端展示组件。
    • 5.3 无房可用:返回全忙且无推荐,Agent 回复无法预订的话术。
  6. 用户最终决策:用户在前端组件(卡片)中完成最终的点击预约操作。

2.1 编排架构流程图


2.2 物理归一化逻辑 (Normalization)

Time Pipeline 内处理 时间归一化逻辑

  • Time Parsing: 结合 start_timeperiod 由逻辑层进行判断(如:下午5点 -> 17:00)。
  • Auto Date: 若 start_date 为空,逻辑层默认指向 Today,并支持贪婪策略
  • 等等逻辑 详见 time pipeline 执行逻辑文档。

2.3 澄清追问与边缘处理 (Clarification & Edge Cases)

为了提升对话的“智能体感”,Agent 需具备以下场景的针对性回复逻辑:

异常类型判定条件Agent 预期话术 (示例)
时间模糊返回 Status: AMBI"没问题,请问您是想订 上午 {X} 点 还是 下午 {X} 点?"
时间过期返回 Status: ERROR (已过去)"抱歉,您选择的时间点已经过去了,要不换成 今天下个整点?"
完全冲突available_list 为空且无平替"哎呀,今天下午这个时段的会议室都满了。建议您看看 明天上午 或者 切换到其他楼层?"
容量严重不足用户需求 > 空间 Max"305 只能坐 20 人,装不下 50 位哦。我为您推荐了 隔壁大礼堂,您看可以吗?"
任务中断多轮对话中途用户话题转移(保持上下文 5 分钟) 若用户问别的,回复完后主动兜底:"刚才的会议室还要订吗?"

2.4 终端交互与执行 (UI & Action)

当 Resource Pipeline 返回 SUCCESS 状态时,Agent 需组织前端组件完成闭环:

  1. 候选列表组件 (Meeting Room Card)
    • 内容:展示 Top 3 推荐会议室。
    • 元素:房间名、楼层、容纳人数、IoT 实时状态(如:“24℃ 舒适”)。
    • 交互:点击“立即预定”按钮。
  2. 最终预定触发 (Execution)
    • 用户点击组件后,Agent 调用后台执行逻辑(Task C)。
    • 接口分流:根据企业配置调用 飞书/钉钉/自有系统Create Event 接口。
  3. 执行反馈
    • 成功:展示“预定成功”状态卡片,并提供“查看详情”或“邀请参会人”的 AppLink (飞书客户端等) 跳转。
    • 失败:提示具体原因(如:“登录状态失效,请重新登录”或“该时段刚刚被其他同事抢占”),引导重新选择。

4. 相关设计参考

Released under the Private License.