python 避免亚马逊Lex的“冷启动”

chhkpiq4  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(141)

我正在使用Amazon Connect构建一个语音助手。该助手使用了一堆Lex机器人。我的助手几乎完成了,但想解决一个“错误”,使用户的不良体验。
我第一次执行语音助手(进行验证呼叫)时,Amazon Lex的机器人的响应会有很长的延迟。仅在第一次执行Amazon Lex的机器人时才会发生(如果助手开始第二次对话,则不会发生延迟)。
在寻找信息时,我发现了这个:
Amazon Lex's Cold Start solution
然后我尝试开发一个Lambda函数来应用这个Bot Lex预热。这是lambda_handler()上的代码:

  1. lex_client = boto3.client('lexv2-runtime')
  2. # Itero sobre cada uno de los Bots asignados en el diccionario anterior
  3. for idBot, caracteristicasBot in dictBotsLex.items():
  4. try:
  5. response = lex_client.recognize_text(
  6. botAliasId= caracteristicasBot['botAlias'], # Reemplaza con el alias ID de tu bot
  7. botId=idBot,
  8. localeId= 'es_ES', # Reemplaza con el código de idioma de tu bot si es diferente
  9. sessionId= caracteristicasBot['userId'], # Puedes usar un ID de usuario único aquí
  10. text= caracteristicasBot['inputText'] # Un mensaje de prueba para activar el bot
  11. )
  12. print('El bot {} se ha ejecutado correctamente'.format(idBot))
  13. except Exception as e:
  14. print("Error al llamar al Bot {} de Lex. Causa del error ==> {} .".format(idBot, e))
  15. return {
  16. 'statusCode': 200,
  17. 'body': 'Llamadas a los bots de Lex realizadas con éxito'
  18. }

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

ercv8c1e

ercv8c1e1#

我也遇到了同样的问题。我曾尝试用cron执行Lambda函数,它每小时执行一次Lambda。冷启动不会消失。但是,如果我用测试证明执行Lambda,然后我进行证明调用,冷启动会消失。

  1. lex_client = boto3.client('lexv2-runtime')
  2. for clave, valor in dictBotsLex.items():
  3. try:
  4. lex_request = {
  5. 'botId': clave,
  6. 'botAliasId': valor['botAlias'],
  7. 'localeId': 'es_ES',
  8. 'sessionId': valor['userId'],
  9. 'text': valor['inputText']
  10. }
  11. lex_response = lex_client.recognize_text(**lex_request)
  12. time.sleep(5) # Añado un retraso para permitir que el bot cargue
  13. se active
  14. print('Lex V2 bot {} warmed up successfully'.format(clave))
  15. except Exception as e:
  16. print(f'Ha ocurrido un error el ejecutar el bot {clave} ==>', e)
  17. return {
  18. 'statusCode': 200,
  19. 'body': 'Lex V2 bots warmed up successfully.'
  20. }

字符串
我认为,实施延迟允许莱克斯机器人激活,解决冷启动“错误”。
当尝试正常执行Lambda函数时,代码可以工作。但是,如果Lambda函数由Eventbridge cron执行,则不会产生任何效果。

展开查看全部

相关问题