Skip to content

ru Connectors

dilyararimovna edited this page May 9, 2023 · 1 revision

Обзор

Коннекторы — это механизм, позволяющий интегрировать пользовательские компоненты в конвейер DeepPavlov Агент. Код коннекторов является частью контейнера Агента.

Типы разъемов

Соединители могут быть интегрированы в конвейер как класс Python или как служба HTTP. Хотя вы можете свободно использовать любой из них, мы настоятельно рекомендуем вам реализовать большие компоненты (особенно на основе нейронных сетей) в виде служб HTTP, потому что лучше поддерживать скорость, легкость и безошибочность контейнера агента. Эти соединители являются общими; вы можете использовать их для подключения ваших пользовательских компонентов к конвейеру DeepPavlov Agent.

На основе Python

Соединитель Python обычно представляет собой класс Python с методом send. Это может быть как модель, нейронная сеть или правила, так и реализация некоторых транспортных протоколов. Коннекторы Python блокируют операции других агентов, поэтому коннектор Python в качестве селектора навыков на основе правил является хорошим выбором, а коннектор Python в качестве аннотатора — нет.

На основе HTTP

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

Встроенные разъемы

В дополнение к универсальным соединителям мы предлагаем ряд соединителей для конкретных целей.

Конфиденцереспонсеселекторконнектор

Этот коннектор обеспечивает простую функциональность выбора ответа. Он выбирает наилучшую гипотезу на основе параметра «доверия». Чтобы использовать его, вы должны учитывать несколько вещей:

* You don't need to define a dialog formatter (if you use built-in state manager)
* You need to ensure, that all of your skills (or services with assighed ``add_hypothesis`` SM method) provides a ``confidence`` value somehow
* It returns a chosen hypothesis, so you don't need to define output formatter as well
* No special configuration parameters are needed

Итак, базовая конфигурация для него очень проста:

{"response_selector": {
    "connector": {
        "protocol": "python",
        "class_name": "ConfidenceResponseSelectorConnector"
    },
    "state_manager_method": "add_bot_utterance",
    "previous_services": ["place previous skill names here"]
}}

Предопределенный текстовый коннектор

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

* ``text`` parameter will be a body of a bot utterance
* Additionally, you can provide an ``annotations`` parameter, in case if you need to have a certain annotations for further dialog
* There is no need to configure a dialog and response formatters

Этот пример конфигурации представляет простую last chance service:

{"last_chance_service": {
    "connector": {
        "protocol": "python",
        "class_name": "PredefinedTextConnector",
        "response_text": "Sorry, something went wrong inside. Please tell me, what did you say."
        "annotations": {"ner": "place your annotations here"}
    },
    "state_manager_method": "add_bot_utterance_last_chance",
    "tags": ["last_chance"]
}}

Предопределенный выходной коннектор

Этот коннектор очень похож на PredefinedTextConnector. Он возвращает предопределенные значения, но вместо фиксированных ключей text и annotations его можно настроить для возврата любой произвольной структуры данных, совместимой с json. Основная цель этого класса коннектора — тестирование маршрутизации конвейера, форматирования или выходных данных. Вы можете сделать фиктивный сервис, который будет имитировать (по структуре) отклик желаемой модели. Этот коннектор имеет только один параметр инициализации:

* ``output`` - list or dict, which will be passed to agent's callback as payload

Этот пример конфигурации представляет собой фиктивный сервис, представляющий навык:

{"skill": {
    "connector": {
        "protocol": "python",
        "class_name": "PredefinedOutputConnector",
        "output": [{"text": "Hypotheses1", "confidence": 1}]
    },
    "dialog_formatter": "place your dialog formatter here",
    "response_formatter": "place your response formatter here",
    "state_manager_method": "add_hypothesis",
    "previous_services": ["list of the previous_services"]
}}

Но вы можете имитировать любой тип навыка с помощью этого коннектора.

Ссылки