Как можно интегрировать Watson Assistant с Watson Discovery с помощью node-RED

Я хочу создать чат-бота с помощью Watson Assistant и Watson Discovery с помощью Node-RED. На картинке мой поток. Идея состоит в том, что пользователь вводит сообщение в чат-бота через приложение Telegram. Если чат-бот не распознает вводимые пользователем данные, он переходит к поиску Уотсона в источник сбора данных, который я заполнил документами, а затем возвращает запросы обратно пользователю. Как это может быть сделано?

Я следовал этому руководству, но в нем ничего не говорится об интеграции Discovery: https://developer.ibm.com/recipes/tutorials/how-to-create-a-watson-chatbot-on-nodered/

Вспомогательная часть работает, я протестировал ее в приложении Telegram.

Текущий узел-красный поток

1 ответ

Я понял из вышеописанного потока, что вы успешно протестировали индивидуально узлы как в Watson Assistant, так и в Watson Discovery (возможно, с помощью набора узлов ввода для ввода строки, подключенного к обоим узлам Watson, и с выходом, подключенным к узлу отладки, чтобы просмотреть вывод JSON?).

Обычно вы можете использовать один из двух способов, чтобы подключить Watson Assistant к обнаружению. Во-первых, отправьте входное сообщение одновременно в Watson Assistant и discovery, получите ответ от обоих, а затем примите решение о том, какой ответ использовать, в зависимости от коэффициента достоверности вашего ответа от помощника. Преимущество этого процесса состоит в том, что система имеет меньшую задержку между вводом сообщения и ответом. Недостатком является то, что вы платите за два вызова API (один для помощника, другой для обнаружения). Альтернатива, как показано выше, заключается в том, что вы вызываете функцию обнаружения после помощника, что означает, что вам может потребоваться оплатить только один вызов API, но с более длительной задержкой, если вам действительно нужно вызвать функцию обнаружения. Второй вариант, который у вас есть, является самым популярным, так как задержка невелика.

Что касается того, как вы это делаете, вам сначала нужно добавить в диалоговое окно помощника флаг, который используется, чтобы указать, когда вызывать обнаружение. Это флаг для выходной полезной нагрузки json помощника. Одним из примеров, где можно добавить этот флаг, является последний диалоговый узел "что-нибудь еще" вашего разговора. т.е.

{ 
  "output": { 
    "text": { 
      "values": [ 
        "Sorry, I haven't been taught enough information to be able to answer your question."      ],    
    "selection_policy": "sequential" 
    }, 
    "Call_discovery": true 
  } 
 } 

Преимущество этого флага заключается в том, что вы можете затем сказать системе, чтобы она вызывала вызов из любой части вашего диалога, то есть из любого диалогового узла.

Затем вам нужно добавить в ваш поток NodeRED вычислительный узел, который будет проверять вывод json узла Assistant, и, если он обнаружит, флаг обнаружения вызывает discovery. Он также может сделать то же самое, если обнаружит, что значение достоверности намерения ниже определенного значения. Это также в выводе JSON. В противном случае открытие не называется. Таким образом, вам может потребоваться добавить несколько дополнительных узлов в вышеупомянутый поток, чтобы разделить поток в зависимости от полезной нагрузки сообщения (обнаружение / не обнаружение) и, возможно, собрать вместе, чтобы затем вернуть окончательный результат обратно вызывающему пользователю.

Другие вопросы по тегам