You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置医疗诊断聊天机器人的条件参数及意图触发逻辑?

实现方案:在症状收集阶段随时响应'end'终止会话

嘿,这个需求我刚好在搭建医疗问诊Bot时处理过,核心是要让'end'指令能全局打断当前的参数收集流程,下面给你分步骤拆解实现:

1. 确保'symptom-end'意图的触发优先级最高

不管用户当前处于哪个会话阶段(包括'symptom-input'的参数收集过程),只要输入包含'end',就优先触发'symptom-end':

  • 在你的Bot平台(比如Dialogflow、Rasa这类主流框架)中,找到意图优先级设置,把'symptom-end'的优先级调到高于'symptom-input'。
  • 给'symptom-end'配置明确的训练短语:比如end、结束、停止问诊等,确保能精准匹配用户的终止指令,避免漏判。

2. 给'symptom-input'意图添加中断判断逻辑

在收集symptom参数的每一步,都要嵌入对'end'指令的检查,避免陷入死循环的参数收集:

  • 如果用的是Dialogflow CX:在'symptom-input'的参数收集页面,给每个参数的"填充提示"后添加一个"条件分支"——判断用户输入是否匹配'symptom-end'意图,如果是,直接跳转到'symptom-end'的处理流程,终止当前参数收集。
  • 如果用的是Dialogflow ES或Rasa:在参数收集的自定义webhook/动作代码里,每次接收用户输入后先做判断,示例代码(Rasa)如下:
    class ActionCollectSymptoms(Action):
        def name(self) -> Text:
            return "action_collect_symptoms"
    
        def run(self, dispatcher: CollectingDispatcher,
                tracker: Tracker,
                domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
            # 检查用户当前输入是否包含终止指令
            latest_input = tracker.latest_message.get('text', '').lower()
            if 'end' in latest_input:
                # 直接触发symptom-end意图,终止收集流程
                return [FollowupAction("symptom_end")]
            # 正常的症状收集逻辑...
    

3. 清理会话上下文,避免残留状态

当触发'symptom-end'时,一定要清除当前'symptom-input'相关的会话状态,防止后续会话出现混乱:

  • 在'symptom-end'意图的处理逻辑中,添加"清除上下文"的操作:比如Dialogflow里把相关输出上下文的过期时间设为0,Rasa里用ResetSlot动作清空symptom相关槽位。
  • 给用户返回明确的终止提示,比如:问诊已终止,感谢使用!

额外注意点

  • 要确保'symptom'实体的识别不会和'end'冲突:在实体训练时排除这类终止词汇,避免把'end'误识别为症状实体。
  • 覆盖所有测试场景:比如用户输入1个症状后输'end'、输入2个后输'end',以及直接在会话开始时输'end',确保每个场景都能正确触发终止流程。

内容的提问来源于stack exchange,提问作者doctopus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:05:50