Подключение ИИ к 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. Подготовьте среду
Подготовьте среду, если не сделали этого ранее.
Убедитесь, что у вас есть доступ к Evolution Foundation Models.
2. Создайте Telegram-бота с помощью n8n и Container Apps
Выполните лабораторную работу Создание Telegram-бота без написания кода с помощью n8n и Container Apps.
3. Удалите шаг отправки сообщения пользователю
Бот будет отправлять ответ от LLM-модели. Поэтому отправка ботом пользователю его же сообщения больше не нужна. Удалите последний шаг SEND A TEXT MESSAGE в созданном рабочем процессе.
4. Добавьте ключи доступа к Foundation Models
В n8n добавьте сгенерированные на этапе подготовки среды ключи доступа в параметры триггера:
Справа от действия Send a chat action нажмите +.
На вкладке справа выберите Data transformation.
В списке выберите Edit Fields (Set).
В окне свойств действия нажмите Add field.
В поле name введите key.
В поле value введите значение ключа Key ID.
Нажмите Add field.
В поле name введите secretKey.
В поле value введите значение ключа Key Secret.
Нажмите Add field.
В поле name введите project_id.
В поле value введите идентификатор вашего проекта.
Сверху наведите курсор на наименование действия — Edit Fields. Появится иконка карандаша. Чтобы редактировать название действия, нажмите ее. Введите название Ключи доступа |foundation-models| и нажмите Rename.
Сверху нажмите Test step.
Нажмите Back to canvas.
5. Пройдите аутентификацию в API облака Cloud.ru Evolution
Добавьте новое действие для триггера Telegram:
Справа от действия, добавленного на шаге 4, нажмите +.
На вкладке справа в поле поиска введите http и выберите HTTP Request в результатах поиска.
В окне свойств действия переименуйте его в Получение Access Token для |foundation-models|.
В списке Method выберите метод POST.
В поле URL укажите адрес для аутентификации в API Cloud.ru Evolution — https://iam.api.cloud.ru/api/v1/auth/token.
Нажмите Send Body.
В меню Specify Body выберите Using JSON.
В поле JSON вставьте следующий код:
{"keyId": "{{ $json.key }}","secret": "{{ $json.secretKey }}"}Сверху нажмите Test step. В разделе Output должны отобразиться access_token и id_token.
Нажмите Back to canvas.
6. Добавьте действие отправки сообщения пользователя в Evolution Foundation Models
Добавьте новое действие для стартового триггера Telegram:
Справа от действия, добавленного на шаге 5, нажмите +.
На вкладке справа в поле поиска введите http и выберите HTTP Request в результатах поиска.
В окне свойств действия измените наименование на Обращение к |foundation-models|.
В выпадающем списке Method выберите метод POST.
В поле URL укажите адрес API Evolution Foundation Models API Evolution Foundation Models — https://foundation-models.api.cloud.ru/api/gigacube/openai/v1/chat/completions
Нажмите Send Headers.
В разделе Header Parameters в поле Name введите Authorization.
В поле Value введите:
Bearer {{ $json.access_token }}Нажмите Add Parameter.
В поле Name введите X-Project-ID.
В поле Value введите:
{{ $('Ключи доступа Foundation Models').item.json.project_id }}Где Ключи доступа Foundation Models — название триггера, созданного на шаге 3.
Нажмите Send Body.
В меню Specify Body выберите Using JSON.
В поле 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 — объяснение оценки.
Нажмите Test step.
В секции Output должен отобразиться ответ от модели.
Нажмите Back to canvas.
7. Преобразуйте ответ от LLM в JSON
Модель возвращает ответ в формате JSON, но n8n видит его как строку. Эту строку нужно преобразовать в JSON.
Справа от действия, добавленного на шаге 6, нажмите +.
На вкладке справа выберите Data transformation.
В списке выберите Edit Fields (Set).
В окне свойств действия выберите режим JSON.
В поле JSON введите:
{{ $json.choices[0].message.content }}Нажмите Test step.
В поле Output должен появиться ответ LLM в формате JSON.
Нажмите Back to canvas.
8. Отправьте ответ модели в Telegram-бот
Добавьте новое действие для стартового триггера Telegram:
Справа от действия, добавленного на шаге 6, нажмите +.
На вкладке справа в поле поиска введите telegram и выберите Telegram.
В списке выберите Send a text message.
В окне свойств действия измените наименование действия на Отправляем ответ.
В поле Chat ID вставьте:
{{ $('Telegram Trigger').item.json.message.chat.id }}В поле Text вставьте:
Эмоциональный окрас сообщения --- {{ $json.result }}Объяснение решения --- {{ $json.explanation }}Нажмите Add Field и выберите Reply To Message ID.
Слева найдите раздел Telegram Trigger и перетащите оттуда параметр message | message_id в поле добавленного параметра Reply To Message ID.
Нажмите Test step.
Справа вы увидите тело отправленного сообщения, а в Telegram-бот должно прийти тестовое сообщение с ответом.
Нажмите Back to canvas.
9. Проверьте работу бота
Сверху проверьте, что переключатель переведен из состояния Inactive в состояние Active.
Перейдите в Telegram-бот и отправьте любой вопрос. Вы должны получить ответ от подключенной LLM.
Что дальше
В этой лабораторной работе при помощи n8n и Container Apps вы создали Telegram-бота, который интегрирован с сервисом Foundation Models и может отправлять запросы в различные AI-модели. Решение можно использовать для автоматического уведомления о новых комментариях на сайте и об их эмоциональном окрасе.
Узнавайте больше о работе с сервисами и получайте практические навыки управления облаком, выполняя лабораторные работы.
- Перед началом работы
- 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. Проверьте работу бота
- Что дальше