nav-img
Evolution

Подключение ИИ к nocode Telegram-боту на базе Evolution Foundation Models и Evolution Container Apps

В этой лабораторной работе вы запустите приложение n8n в Container Apps и на базе этого приложения создадите Telegram-бота, который будет интегрирован с сервисом Evolution Foundation Models. С помощью Foundation Models вы сможете отправлять запросы в различные AI-модели и обрабатывать пользовательские запросы. В рамках лабораторной работы мы будем оценивать эмоциональный окрас сообщения пользователя.

Для запуска приложения вы используете:

  • Artifact Registry — сервис для хранения, совместного использования и управления Docker-образами и Helm-чартами.

  • Container Apps — сервис для запуска контейнерных приложений в облаке. Не требует знания Kubernetes и создания виртуальных машин.

  • n8n — платформа с открытым исходным кодом для автоматизации рабочих процессов и интеграции сервисов. Подходит для экспериментов и пет-проектов.

  • Object Storage — сервис для хранения данных любого типа и объема. Будет использоваться в качестве хранилища для контейнера.

  • Foundation Models — сервис для доступа к API популярных фундаментальных моделей машинного обучения с открытым исходным кодом.

Шаги:

  1. Подготовьте среду.

  2. Создайте Telegram-бота с помощью n8n и Container Apps.

  3. Удалите шаг отправки сообщения пользователю.

  4. Добавьте ключи доступа к Foundation Models.

  5. Пройдите аутентификацию в API облака Cloud.ru Evolution.

  6. Добавьте действие отправки сообщения пользователя в Evolution Foundation Models.

  7. Преобразуйте ответ от LLM в JSON.

  8. Отправьте ответ модели в Telegram-бот.

  9. Проверьте работу бота.

Перед началом работы

1. Подготовьте среду

  1. Подготовьте среду, если не сделали этого ранее.

  2. Убедитесь, что у вас есть доступ к Evolution Foundation Models.

2. Создайте Telegram-бота с помощью n8n и Container Apps

Выполните лабораторную работу Создание Telegram-бота без написания кода с помощью n8n и Container Apps.

3. Удалите шаг отправки сообщения пользователю

Бот будет отправлять ответ от LLM-модели. Поэтому отправка ботом пользователю его же сообщения больше не нужна. Удалите последний шаг SEND A TEXT MESSAGE в созданном рабочем процессе.

4. Добавьте ключи доступа к Foundation Models

В n8n добавьте сгенерированные на этапе подготовки среды ключи доступа в параметры триггера:

  1. Справа от действия Send a chat action нажмите +.

  2. На вкладке справа выберите Data transformation.

  3. В списке выберите Edit Fields (Set).

  4. В окне свойств действия нажмите Add field.

  5. В поле name введите key.

  6. В поле value введите значение ключа Key ID.

  7. Нажмите Add field.

  8. В поле name введите secretKey.

  9. В поле value введите значение ключа Key Secret.

  10. Нажмите Add field.

  11. В поле name введите project_id.

  12. В поле value введите идентификатор вашего проекта.

  13. Сверху наведите курсор на наименование действия — Edit Fields. Появится иконка карандаша. Чтобы редактировать название действия, нажмите ее. Введите название Ключи доступа |foundation-models| и нажмите Rename.

  14. Сверху нажмите Test step.

  15. Нажмите Back to canvas.

5. Пройдите аутентификацию в API облака Cloud.ru Evolution

Добавьте новое действие для триггера Telegram:

  1. Справа от действия, добавленного на шаге 4, нажмите +.

  2. На вкладке справа в поле поиска введите http и выберите HTTP Request в результатах поиска.

  3. В окне свойств действия переименуйте его в Получение Access Token для |foundation-models|.

  4. В списке Method выберите метод POST.

  5. В поле URL укажите адрес для аутентификации в API Cloud.ru Evolution — https://iam.api.cloud.ru/api/v1/auth/token.

  6. Нажмите Send Body.

  7. В меню Specify Body выберите Using JSON.

  8. В поле JSON вставьте следующий код:

    {
    "keyId": "{{ $json.key }}",
    "secret": "{{ $json.secretKey }}"
    }
  9. Сверху нажмите Test step. В разделе Output должны отобразиться access_token и id_token.

  10. Нажмите Back to canvas.

6. Добавьте действие отправки сообщения пользователя в Evolution Foundation Models

Добавьте новое действие для стартового триггера Telegram:

  1. Справа от действия, добавленного на шаге 5, нажмите +.

  2. На вкладке справа в поле поиска введите http и выберите HTTP Request в результатах поиска.

  3. В окне свойств действия измените наименование на Обращение к |foundation-models|.

  4. В выпадающем списке Method выберите метод POST.

  5. В поле URL укажите адрес API Evolution Foundation Models API Evolution Foundation Models — https://foundation-models.api.cloud.ru/api/gigacube/openai/v1/chat/completions

  6. Нажмите Send Headers.

  7. В разделе Header Parameters в поле Name введите Authorization.

  8. В поле Value введите:

    Bearer {{ $json.access_token }}
  9. Нажмите Add Parameter.

  10. В поле Name введите X-Project-ID.

  11. В поле Value введите:

    {{ $('Ключи доступа Foundation Models').item.json.project_id }}

    Где Ключи доступа Foundation Models — название триггера, созданного на шаге 3.

  12. Нажмите Send Body.

  13. В меню Specify Body выберите Using JSON.

  14. В поле JSON введите:

    {
    "model": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B",
    "messages": [
    {
    "role": "system",
    "content": "You are an expert in the text sentiment analyst. When solving a task, FIRST think step-by-step *in private* to reach your answer. Do NOT reveal these private thoughts. Instead, output ONLY a JSON object with three keys: 1. \"result\" – one of: \"positive\", \"negative\", \"neutral\" 2. \"confidence\" – number between 0 and 1 (e.g. 0.87). Calibrate it so the three classes are equally likely a priori. 3. \"explanation\" – a brief, public rationale (1-3 sentences) that cites the pivotal phrases.Use Russian language to provide explanation. Follow the format of the few-shot examples exactly: nothing before or after the JSON. Don't use ```json ``` braces. [ FEW-SHOT EXAMPLES ] ### Example 1 (positive) USER: I absolutely love this phone – the battery lasts forever! ASSISTANT: { \"result\": \"positive\", \"confidence\": 0.92, \"explanation\": \"Phrases like \u0027absolutely love\u0027 and praise about long battery life express strong approval.\" } ### Example 2 (negative) USER: This is the worst movie I have seen in years. Total waste of time. ASSISTANT: { \"result\": \"negative\", \"confidence\": 0.95, \"explanation\": \"Words such as \u0027worst\u0027 and \u0027waste of time\u0027 indicate clear dissatisfaction.\" } ### Example 3 (neutral) USER: The package arrived on Tuesday at 3 p.m. ASSISTANT: { \"result\": \"neutral\", \"confidence\": 0.88, \"explanation\": \"The sentence only states factual delivery information without emotional language.\" }"
    },
    {
    "role": "user",
    "content": "{{ $('Telegram Trigger').item.json.message.text }}"
    }
    ],
    "temperature": 0.1,
    "top_p": 0.1,
    "max_tokens": 300,
    "frequency_penalty": 0.5,
    "presence_penalty": 0.3
    }
    Примечание

    С помощью промта модель анализирует эмоциональный окрас сообщения и возвращает ответ в формате JSON. Он содержит три поля:

    • result — результат оценки эмоционального окраса сообщения: негативный, нейтральный или позитивный;

    • confidence — уверенность в оценке от 0 до 1;

    • explanation — объяснение оценки.

  15. Нажмите Test step.

В секции Output должен отобразиться ответ от модели.

  1. Нажмите Back to canvas.

7. Преобразуйте ответ от LLM в JSON

Модель возвращает ответ в формате JSON, но n8n видит его как строку. Эту строку нужно преобразовать в JSON.

  1. Справа от действия, добавленного на шаге 6, нажмите +.

  2. На вкладке справа выберите Data transformation.

  3. В списке выберите Edit Fields (Set).

  4. В окне свойств действия выберите режим JSON.

  5. В поле JSON введите:

    {{ $json.choices[0].message.content }}
  6. Нажмите Test step.

    В поле Output должен появиться ответ LLM в формате JSON.

  7. Нажмите Back to canvas.

8. Отправьте ответ модели в Telegram-бот

Добавьте новое действие для стартового триггера Telegram:

  1. Справа от действия, добавленного на шаге 6, нажмите +.

  2. На вкладке справа в поле поиска введите telegram и выберите Telegram.

  3. В списке выберите Send a text message.

  4. В окне свойств действия измените наименование действия на Отправляем ответ.

  5. В поле Chat ID вставьте:

    {{ $('Telegram Trigger').item.json.message.chat.id }}

    В поле Text вставьте:

    Эмоциональный окрас сообщения --- {{ $json.result }}
    Объяснение решения --- {{ $json.explanation }}
  6. Нажмите Add Field и выберите Reply To Message ID.

  7. Слева найдите раздел Telegram Trigger и перетащите оттуда параметр message | message_id в поле добавленного параметра Reply To Message ID.

  8. Нажмите Test step.

    Справа вы увидите тело отправленного сообщения, а в Telegram-бот должно прийти тестовое сообщение с ответом.

  9. Нажмите Back to canvas.

9. Проверьте работу бота

  1. Сверху проверьте, что переключатель переведен из состояния Inactive в состояние Active.

  2. Перейдите в Telegram-бот и отправьте любой вопрос. Вы должны получить ответ от подключенной LLM.

Что дальше

В этой лабораторной работе при помощи n8n и Container Apps вы создали Telegram-бота, который интегрирован с сервисом Foundation Models и может отправлять запросы в различные AI-модели. Решение можно использовать для автоматического уведомления о новых комментариях на сайте и об их эмоциональном окрасе.

Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.