Работа с webhook¶
Вебхуки¶
Вебхуки в проекте WiseBot позволяют взаимодействовать с вашим Rasa проектом через HTTP-запросы. Ниже приведено описание доступных вебхуков:
-
Загрузить файл
Принимает HTTP POST запросы для загрузки файлов в проект WiseBot. Поддерживаемые типы файлов: аудио, изображения, модели NLU и диалоги из других источников. -
Перезапуск Rasa
Принимает HTTP POST запросы для перезапуска сервера Rasa. Полезно для применения изменений в настройках или конфигурации без полного перезапуска сервера. -
Удалить файл
Принимает HTTP DELETE запросы для удаления файлов из проекта WiseBot. Укажите путь к файлу в теле запроса. -
Развернуть проект
Принимает HTTP POST запросы для развертывания проекта WiseBot. Все внесенные изменения будут развернуты на сервере Rasa. -
Сообщить о сбое
Принимает HTTP POST запросы для отправки отчетов об ошибках из проекта WiseBot. Помогает отслеживать и устранять проблемы в процессе разработки. -
Посттренинг
Принимает HTTP POST запросы для запуска процесса обучения модели NLU и диалогов в проекте WiseBot. Обучение происходит на основе новых данных или изменений.
Каждый вебхук обеспечивает взаимодействие с проектом WiseBot через стандартные HTTP методы (POST и DELETE), обеспечивая гибкость в управлении файлами, развертывании проекта, отчетах об ошибках и обучении модели.
Работа с reCAPTCHA¶
Настройка Google reCAPTCHA¶
Для защиты вашего сайта от спама и злоупотреблений рекомендуется настроить Google reCAPTCHA. Следуйте следующим шагам:
Регистрация сайта в Google reCAPTCHA¶
- Перейдите на официальный сайт reCAPTCHA.
- Нажмите кнопку "Admin Console" в правом верхнем углу.
- Войдите в аккаунт Google или создайте новый.
- В форме регистрации нового сайта введите:
- Имя проекта: Название вашего проекта.
- Тип reCAPTCHA: Выберите reCAPTCHA v2.
- Домен: Укажите домен вашего сайта.
- Нажмите "Submit" для завершения регистрации.
- После регистрации вы получите Site Key и Secret Server Key.
Внедрение reCAPTCHA на сайт¶
- В админ-панели вашего сайта перейдите в раздел "Администрирование" > "Общие настройки" > "Безопасность".
- Вставьте полученные Site Key и Secret Server Key в соответствующие поля для настройки reCAPTCHA.
После выполнения этих шагов ваш сайт будет защищен от спама и злоупотреблений с помощью Google reCAPTCHA.
"Безопасность".
Приложения¶
Приложение 1. Пример файла основного .gitlab-ci.yml
¶
stages:
- build
- push
- test
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
Build base:
stage: build
tags:
- botya-runner
only:
variables:
- $BUILD_BASE == "true"
script:
- docker pull $CI_REGISTRY_IMAGE:base || true
- >
docker build
--pull
--cache-from $CI_REGISTRY_IMAGE:base
--tag $CI_REGISTRY_IMAGE:base
-f Dockerfile-base
.
- docker push $CI_REGISTRY_IMAGE:base
Build latest:
stage: build
tags:
- botya-runner
only:
variables:
- $BUILD_RELEASE == "false" && $BUILD_BRANCH_NAME != "" && $BUILD_BRANCH_NAME != "main"
before_script:
- nvidia-smi
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- export BUILD_VERSION=${BUILD_BRANCH_NAME}-$(date +%Y-%m-%d-%H%M)
script:
- echo "Building and pushing $BUILD_VERSION version for $BUILD_BRANCH_NAME branch"
- docker build --no-cache --tag $CI_REGISTRY_IMAGE:$BUILD_VERSION --build-arg BRANCH_NAME=$BUILD_BRANCH_NAME .
- docker push $CI_REGISTRY_IMAGE:$BUILD_VERSION
- docker rmi $CI_REGISTRY_IMAGE:$BUILD_VERSION
- echo BUILD_VERSION=$BUILD_VERSION >> build.env
artifacts:
reports:
dotenv: build.env
Push latest:
stage: push
tags:
- botya-runner
only:
variables:
- $BUILD_RELEASE == "false" && $BUILD_BRANCH_NAME != "" && $BUILD_BRANCH_NAME != "main"
variables:
GIT_STRATEGY: none
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- export LATEST_VERSION=${BUILD_BRANCH_NAME}-latest
script:
- echo "Pulling and pushing $LATEST_VERSION version for $BUILD_BRANCH_NAME branch"
- docker pull $CI_REGISTRY_IMAGE:$BUILD_VERSION
- docker tag $CI_REGISTRY_IMAGE:$BUILD_VERSION $CI_REGISTRY_IMAGE:$LATEST_VERSION
- docker push $CI_REGISTRY_IMAGE:$LATEST_VERSION
- docker rmi $CI_REGISTRY_IMAGE:$BUILD_VERSION $CI_REGISTRY_IMAGE:$LATEST_VERSION
Push release:
stage: push
tags:
- botya-runner
only:
variables:
- $BUILD_RELEASE == "true" && $BUILD_BRANCH_NAME != "" && $BUILD_BRANCH_NAME != "main"
variables:
GIT_STRATEGY: none
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- export LATEST_VERSION=${BUILD_BRANCH_NAME}-latest
- export RELEASE_VERSION=${BUILD_BRANCH_NAME}-release
script:
- echo "Creating release $LATEST_VERSION version for $BUILD_BRANCH_NAME branch"
- docker pull $CI_REGISTRY_IMAGE:$LATEST_VERSION
- docker tag $CI_REGISTRY_IMAGE:$LATEST_VERSION $CI_REGISTRY_IMAGE:$RELEASE_VERSION
- docker push $CI_REGISTRY_IMAGE:$LATEST_VERSION
- docker rmi $CI_REGISTRY_IMAGE:$RELEASE_VERSION $CI_REGISTRY_IMAGE:$LATEST_VERSION
Приложение 2. Пример файла .gitlab-ci.yml
для веток с обучающими данными¶
trigger_build_model:
stage: build
tags:
- botya-runner
variables:
GIT_STRATEGY: none
only:
variables:
- $CI_COMMIT_MESSAGE !~ /release/i && $CI_COMMIT_MESSAGE !~ /ci skip/i
script:
- |
curl -X POST --fail --form token=<token> --form ref=main \
--form 'variables[BUILD_RELEASE]=false' --form 'variables[BUILD_BRANCH_NAME]=<branch>' \
<trigger-url>
trigger_release:
stage: build
tags:
- botya-runner
variables:
GIT_STRATEGY: none
only:
variables:
- $CI_COMMIT_MESSAGE =~ /release/i && $CI_COMMIT_MESSAGE !~ /ci skip/i
script:
- |
curl -X POST --fail --form token=<token> --form ref=main \
--form "variables[BUILD_RELEASE]=true" --form "variables[BUILD_BRANCH_NAME]=<branch>" \
<trigger-url>
Приложение 3. Dockerfile
базового контейнера (под именем Dockerfile-base
)¶
FROM registry.digtlab.ru/kassistant/wisebot-datasets:cuda-10.1-cudnn7-runtime-ubuntu18.04
ENV WISEBOT_PATH=/app/wisebot
RUN mkdir -p $WISEBOT_PATH
RUN apt update && \
apt install -y software-properties-common git mc curl && \
add-apt-repository -y ppa:deadsnakes/ppa && \
apt update && \
apt install -y python3.8 python3.8-dev && \
update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10 && \
apt install -y python3-pip && \
python -m pip install --upgrade pip
RUN pip install git+https://github.com/botfront/rasa-for-botfront pypred sgqlc protobuf==3.20.*
RUN git clone --depth 1 https://github.com/botfront/rasa-for-botfront /app/rasa-for-botfront
RUN cp -R /app/rasa-for-botfront/rasa_addons /usr/local/lib/python3.8/dist-packages
RUN rm -r /app/rasa-for-botfront
RUN rasa telemetry disable
WORKDIR $WISEBOT_PATH
CMD ["/bin/bash"]
Приложение 4. Dockerfile
контейнера, используемого для обучения (под именем Dockerfile
)¶
# Train stage
FROM registry.digtlab.ru/kassistant/wisebot-datasets:base as train
ENV PYTHONPATH=/custom_components
RUN mkdir $PYTHONPATH
RUN git clone --depth 1 <rasa-custom-components-url> -b main $WISEBOT_PATH/rasa-custom-components
RUN cp -r $WISEBOT_PATH/rasa-custom-components/custom_components/. $PYTHONPATH/
RUN rm -r $WISEBOT_PATH/rasa-custom-components
RUN pip install python-Levenshtein
ARG BRANCH_NAME=marsu
RUN git clone --depth 1 <datasets-url>-b $BRANCH_NAME $WISEBOT_PATH
RUN rasa train --debug --fixed-model-name default 2>&1 | tee logs.txt
# Deploy stage
FROM flashspys/nginx-static
COPY --from=train /app/wisebot/models/default.tar.gz /static/default
COPY --from=train /app/wisebot/logs.txt /static/logs.txt
EXPOSE 80
STOPSIGNAL SIGTERM
CMD ["nginx", "-g", "daemon off;"]