避免 Amazon Lex“冷启动”

问题描述 投票:0回答:1

我正在使用 Amazon Connect 构建语音助手。助手使用了一堆 Lex 机器人。 我的助手已经基本完成了,但想要解决一个导致用户体验不佳的“错误”。

我第一次执行语音助手(进行验证呼叫)时,Amazon Lex 的机器人的响应有很长的延迟。仅在第一次执行 Amazon Lex 的机器人时发生(如果助手开始第二次对话,则不会发生延迟)。

查资料,发现了这个:

Amazon Lex's Cold Start solution

然后我尝试开发一个 Lambda 函数来应用这个 Bot Lex 预热。这是 lambda_handler() 上的代码:

lex_client = boto3.client('lexv2-runtime')

# Itero sobre cada uno de los Bots asignados en el diccionario anterior
for idBot, caracteristicasBot in dictBotsLex.items():
    
    try:

        response = lex_client.recognize_text(
                botAliasId= caracteristicasBot['botAlias'],  # Reemplaza con el alias ID de tu bot
                botId=idBot,
                localeId= 'es_ES',  # Reemplaza con el código de idioma de tu bot si es diferente
                sessionId= caracteristicasBot['userId'],  # Puedes usar un ID de usuario único aquí
                text= caracteristicasBot['inputText']  # Un mensaje de prueba para activar el bot
            )

        print('El bot {} se ha ejecutado correctamente'.format(idBot))
        
        
        
    except Exception as e:
        
        print("Error al llamar al Bot {} de Lex. Causa del error ==> {} .".format(idBot, e))

return {
    'statusCode': 200,
    'body': 'Llamadas a los bots de Lex realizadas con éxito'
}

代码没有产生错误,但我的机器人的冷启动并没有消失。

python amazon-web-services amazon-lex
1个回答
0
投票

我也有同样的问题。我曾尝试使用 cron 执行 Lambda 函数,该 cron 每小时执行一次 Lambda。冷启动并没有消失。但是,如果我使用测试证明执行 Lambda,然后进行证明调用,冷启动就会消失。

lex_client = boto3.client('lexv2-runtime')


for clave, valor in dictBotsLex.items():
    
    
    try:


        lex_request = {
            'botId': clave,
            'botAliasId': valor['botAlias'],
            'localeId': 'es_ES',
            'sessionId': valor['userId'],
            'text': valor['inputText']
        }
        
        
        lex_response = lex_client.recognize_text(**lex_request)
        
        time.sleep(5)  # Añado un retraso para permitir que el bot cargue 
se active
        
        print('Lex V2 bot {} warmed up successfully'.format(clave))
        
    except Exception as e:
        
        print(f'Ha ocurrido un error el ejecutar el bot {clave} ==>', e)
        
        
    
return {
    'statusCode': 200,
    'body': 'Lex V2 bots warmed up successfully.'
    }

我认为实施的延迟允许 Lex 机器人激活。然而,cron 每小时执行一次 Lambda,并没有效果。

© www.soinside.com 2019 - 2024. All rights reserved.