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

如何通过Python Lambda函数同时调用Amazon Lex机器人的多个意图?

实现Amazon Lex单次交互触发多意图的方案

Amazon Lex默认只会返回置信度最高的单个意图,要在一次交互中触发多个意图,需要通过Lambda函数主动识别并执行多个意图的处理逻辑,具体方案如下:

核心思路

  1. 获取用户输入文本与当前Lex匹配的意图
  2. 在Lambda内主动判断输入是否满足多个意图的触发条件(关键词、实体等)
  3. 分别执行每个意图对应的业务逻辑
  4. 合并多个意图的响应结果后返回给Lex

具体代码实现

假设你已经有处理两个意图的独立函数,Lambda函数可以这样写:

import json

def handle_intent_a():
    # 此处编写IntentA的业务逻辑,比如查询数据、生成回复
    return "IntentA的处理结果:XXX"

def handle_intent_b():
    # 此处编写IntentB的业务逻辑
    return "IntentB的处理结果:YYY"

def lambda_handler(event, context):
    user_input = event['inputTranscript']
    current_intent = event['currentIntent']['name']
    
    response_list = []
    
    # 判断是否触发IntentA
    if "IntentA触发关键词" in user_input or current_intent == "IntentA":
        response_list.append(handle_intent_a())
    
    # 判断是否触发IntentB
    if "IntentB触发关键词" in user_input or current_intent == "IntentB":
        response_list.append(handle_intent_b())
    
    # 合并所有响应内容
    final_response = "\n".join(response_list)
    
    return {
        "dialogAction": {
            "type": "Close",
            "fulfillmentState": "Fulfilled",
            "message": {
                "contentType": "PlainText",
                "content": final_response
            }
        }
    }

关键注意事项

  • 不要依赖Lex自动匹配多意图,必须在Lambda中主动判断触发条件,可结合用户输入的关键词、实体或当前匹配的意图来判断
  • 如果意图需要提取实体,可从event['currentIntent']['slots']中获取,或手动从用户输入中解析
  • 合并响应时注意格式清晰,让用户能区分不同意图的处理结果
  • 测试时覆盖三种场景:仅触发IntentA、仅触发IntentB、同时触发两者

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:52:11