# Коротко о главном

Из этой статьи вы узнаете, что такое Nocode Cloud, чем он может быть вам полезен и как им пользоваться

**Nocode Cloud** – это облачное решение, предоставляющее пользователям Smartbot Pro возможность разворачивать Open Source приложения за один клик

Услуга уже включена в ваш тарифный план! Количество доступных расширений и уровни расширения доступны в зависимости от вашего тарифного плана в Smartbot. Более подробная информация о тарифных планах будет доступна после официального релиза.

## Доступные приложения <a href="#dostupnye-prilozheniya" id="dostupnye-prilozheniya"></a>

* ​[n8n.io](https://n8n.io/)\
  Open Source аналог Make, Zapier и Albato\
  Доступно 400+ интеграций
* ​[NocoDB.com](https://nocodb.com/)\
  База данных на PostgreSQL, аналог AirTable, Notion и Google таблиц
* ​[Teable.io](https://teable.io/)\
  База данных на PostgreSQL, аналог NocoDB, AirTable и Notion с красивыми дашбордами
* ​[Supabase.com](https://supabase.com/) (доступно с продвинутого уровня)\
  База данных на PostgreSQL с векторным поиском. Аналог Firebase и Pinecone для AI-ботов и сложных сценариев.
* ​[cal.com](https://cal.com/) - скоро\
  Инструмент для удобной записи в календарь, аналог Calendly, YCLIENTS и функционала записи Bitrix24

Если вы хотите видеть другие инструменты в этом списке, то отправьте своё пожелание, заполнив [эту форму](https://docs.google.com/forms/d/e/1FAIpQLSfn2fTY7shGylaetGbyDvD9rPRhvNfne3t1YCmuvQLER3Pldg/viewform)

## Подключение

Подключить любой инструмент за пару минут вы можете по [инструкции](https://docs.nocodecloud.ru/start/about/nocode).

## Уровни Nocode Cloud <a href="#urovni-nocode-cloud" id="urovni-nocode-cloud"></a>

| Доступные приложения                       | n8n, NocoDB, Teable                                    | n8n, NocoDB, Teable, Supabase                          | n8n, NocoDB, Teable, Supabase |
| ------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ----------------------------- |
| Нагрузка                                   | до 20 запросов / сек для Teable – до 10 запросов / сек | до 80 запросов / сек для Teable – до 50 запросов / сек | от 80 запросов / сек          |
| Скачать резервную копию (backup)           | +                                                      | +                                                      | +                             |
| Надежность                                 | +                                                      | +                                                      | +                             |
| Отказо-устойчивость                        | -                                                      | +                                                      | +                             |
| Автоматические резервные копии (backup”ы ) | -                                                      | раз в 12 часов                                         | итеративные, каждую секунду   |
| Поддержка и помощь                         | доступна с 10 до 18 (время москва) в рабочие дни       | доступна с 9 до 21 (время москва) 7 дней в неделю      | индивидуальная                |
| Сделать свой домен                         | -                                                      | -                                                      | +                             |

С актуальными тарифами и доступным количеством приложений и уровней вы можете ознакомиться в [данном разделе](https://docs.smartbotpro.ru/dokumenty/podpiska-i-tarify/tarify-i-ceny#dostup-k-nocode-cloud)

### Комментарии по уровням

#### Нагрузка

Нагрузка - это количество запросов в секунду, которое может выдерживать приложение. Свыше указанного порога приложение может выдавать ошибки или выключаться.

#### Скачать резервную копию (backup)

Если вы захотите самостоятельно развернуть приложение, то сможете получить полный дамп базы данных PostgreSQL, с помощью которого можно восстановить состояние приложения

{% hint style="info" %}
*Инструкции, как развернуть приложения самостоятельно:*

<https://docs.n8n.io/hosting/>

<https://docs.nocodb.com/category/installation>

<https://help.teable.io/deployment/docker-compose>
{% endhint %}

#### Надежность

Приложения разворачиваются в кластере Kubernetes. Это означает, что если выйдет из строя какой-либо сервер в кластере, то приложение автоматически будет перенесено на другой сервер и продолжит работу без значительного простоя.

#### Отказоустойчивость

Приложения разворачиваются в кластере Kubernetes в нескольких экземплярах на разных серверах. Это означает, что если выйдет из строя какой-либо сервер, приложение продолжит работу без простоя, так как экземпляры на других серверах подхватят нагрузку

{% hint style="info" %}
*Рассмотрим пример:*

Приложение n8n развернуто в отказоустойчивом режиме на трех серверах: node1, node2, node3. Допустим, сервер node1 перестает работать. Нагрузка, которая обрабатывалась на сервере node1, автоматически перераспределится на node2 и node3, и приложение продолжит работать без простоя.
{% endhint %}

#### **Автоматические резервные копии (backup”ы )**

Если вы удалили важные данные и хотите восстановить их, в такой ситуации помогут резервные копии, из них можно восстановить удаленные части. В продвинутом тарифе данные можно восстановить с точностью до 12 часов; в нагруженном тарифе данные можно восстановить с точностью до 1 секунды.

#### Поддержка и помощь

Если у вас возникли вопросы по работе сервиса/приложений, то время обслуживания зависит от его конфигурации. В базовой конфигурации мы помогаем с 10 до 18 (МСК) в рабочие дни, в продвинутом – с 9 до 21 (МСК) 7 дней в неделю, в высоконагруженном – обговариваем индивидуально, допустима поддержка 24/7


# Как подключить Nocode инструмент

Из этой статьи вы узнаете, как развернуть Nocode приложения, доступные пользователям Smartbot Pro, за пару минут

1. Регистрируемся в сервисе [Smartbot Pro](https://smartbotpro.ru/?utm_source=pls\&utm_medium=team\&utm_campaign=NocodeCloud)
2. Открываем проект
3. Переходим в раздел **Nocode Cloud**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FoMqqHLqyT8K8vXeSHBn9%2Fimage.png?alt=media&amp;token=c4cbc274-8441-45fa-b63d-76d76711edea" alt=""><figcaption></figcaption></figure>
4. Нажимаем **Подключить**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FHunuv5rbPbNIb1Zye2XD%2Fimage.png?alt=media&amp;token=32eb840c-7a7b-40e2-b6d5-c37c3ff78dc2" alt=""><figcaption></figcaption></figure>
5. Запускаем бота

   <div><figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F3kInjDxDuzzEBqKcwb5K%2Fimage.png?alt=media&amp;token=5e31d6d9-6eed-423d-bf9b-72706a99b566" alt=""><figcaption></figcaption></figure> <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FCDrYrbqjRLtD14GEUDFE%2Fimage.jpeg?alt=media&amp;token=cf36f3f4-aabf-4f90-a458-25b8e53f3391" alt=""><figcaption></figcaption></figure></div>
6. Нажимаем команду **/create**
7. Выбираем нужное приложение
8. Выбираем нужный уровень нагрузки
9. Ждём три минуты
10. Приступаем к использованию приложения

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F1JWsQusF1w0cHHOze8SF%2Fimage.png?alt=media&amp;token=3626e5ad-46ee-4b9f-bd9a-7ec0056d0d2d" alt=""><figcaption></figcaption></figure>

Желаем вам приятного и продуктивного использования конструктора Smartbot Pro в комбинации с удобными и полезными Nocode инструментами!

\ <br>


# Обучение ИИ векторному методу

Эксперт: Юлия Голощапова

**Искусственный интеллект стал надёжным помощником** в решении множества повседневных и профессиональных задач — от написания текстов до анализа данных. Наибольшую популярность обрели **Генеративные модели ИИ** благодаря своей способности создавать новые данные, опираясь на информацию, использованную в процессе их обучения. Объясняя простым языком, они могут создавать тексты, изображения, музыку или другие типы контента, имитируя стиль и структуру исходных данных, при этом формируя уникальные и оригинальные варианты ответа, не являющиеся дословным повторением исходного материала.

Одна из проблем, с которой часто сталкиваются пользователи, которые используют **Генеративную модель ИИ** – получение ложной или искаженной информации. Искусственный интеллект может "уверенно" отвечать неправильно, если не ограничен контекстом или не знает, где искать достоверный источник. Данное явление называют **"галлюцинацией ИИ"**.

Такое поведение недопустимо, если мы работаем с технической, юридической документацией или другими материалами, где чрезвычайно важна точность ответа.

Решением становится **метод подбора** — подход, при котором ИИ не "выдумывает" ответ, а **выбирает наиболее релевантный фрагмент из заранее подготовленной базы знаний**.

В данной инструкции мы подробно рассмотрим процесс **обучения ИИ методу подбора**.

### Что такое метод подбора?

{% hint style="warning" %}
**Метод подбора** — это способ, с помощью которого искусственный интеллект **находит наиболее подходящий объект** из множества возможных, основываясь на определённой логике или метрике сходства. Такой подход позволяет извлекать наиболее релевантные данные из подготовленного набора, минимизируя риск ошибки.
{% endhint %}

### Для обучения нам понадобятся следующие платформы и сервисы:

* NocoDB
* n8n
* Pinecone
* OpenAI

## Формирование базы данных

В первую очередь нам необходимо подготовить данные для загрузки в **ИИ** и сформировать базу данных в формате **вопрос-ответ**. Сделать это можно на платформе **NocoDB**, однако быстрее и проще будет создать подходящий список в **Google Sheets**.

1. Открываем **Google Sheets** и создаем таблицу в нем:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FaWCuGjc0ZU8YNIvnxyvT%2Fimage.png?alt=media&amp;token=f384ce97-00f3-4d1b-960d-ec9bcd9e8f12" alt=""><figcaption></figcaption></figure>

   1. В созданной таблице создаем две колонки – **question** (вопрос) и **answer** (ответ).
2. Берем интересующий материал и перерабатываем его в виде вопросов и ответов на него.

   <figure><img src="https://cdn2.buildin.ai/s3/da5e416c-c9e6-40f2-97de-1d9a540f5ea4/image.png?time=1757568600&#x26;token=6e7876d601db70d0019f6eeda52df6c8&#x26;role=free" alt=""><figcaption></figcaption></figure>

   \
   **!Важно:** Чем больше будет синонимичных вопросов, тем более точно **ИИ** будет подбирать ответ. Лучше сделать минимум вопросов 10 на каждый ответ. **Один вопрос – одна строка.**

   Также советуем делать в **Google Sheet** не более **150 строчек** на каждом листе, чтобы в будущем при загрузке в базу **NocoDB** у нас не возникло проблем с импортированием.
3. После формирования базы вопросов и ответов скачиваем каждый лист в формате **CSV**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FVddYAveze43BpAF2YQaD%2Fimage.png?alt=media&amp;token=f0fa92b1-4c68-4ef2-8e4f-73ce6de2fdd8" alt=""><figcaption></figcaption></figure>
4. Открываем **NocoDB** и создаем в нем новую базу, для этого нажимаем на кнопочку **Create Base**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fu32UJhLmmUP9LknwJnqo%2Fimage.png?alt=media&amp;token=5ae77654-8016-4dcc-820d-f4caf5c7b982" alt=""><figcaption></figcaption></figure>
5. В открывшемся окошке даем наименование и еще раз жмем на кнопку **Create Base**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F2RYJGIKxyi0zoAwnyqRK%2Fimage.png?alt=media&amp;token=89b1afa6-7f70-4fb4-a70b-ef94c6918e1b" alt=""><figcaption></figcaption></figure>
6. Перед импортированием таблицы из **Google Sheet** мы создаем новую таблицу.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FW77T8fhCZ0uCFMQcNC01%2Fimage.png?alt=media&amp;token=778cdc98-fa32-4d40-8d24-c3f7f947c4b0" alt=""><figcaption></figcaption></figure>
7. Присваиваем ей наименование и жмем **Create Table**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FWckm14TFAXQMUEuUWUFn%2Fimage.png?alt=media&amp;token=8d7e5f87-6404-414c-bb73-e9afcc1cb45b" alt=""><figcaption></figcaption></figure>

   \
   У нас по умолчанию открывается вот такое поле:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fx1OB5A7bdeLf0JhE1Ui0%2Fimage.png?alt=media&amp;token=2d70bbb2-7270-480c-9d33-0fccf644169f" alt=""><figcaption></figcaption></figure>
8. Поскольку таблица у нас пустая, мы должны ее заполнить колонками и выбрать в них необходимый тип данных для записи. Для начала переименуем по умолчанию созданную колонку с названием **Title**. Сделать это можно, нажав на стрелочку вниз.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F4AEaapUrePj2lcteWNKu%2Fimage.png?alt=media&amp;token=2dfdfd5b-2450-490b-a000-c43bb148dc0d" alt=""><figcaption></figcaption></figure>
9. Данная кнопочка развернет параметры колонки. В раскрывшемся списке действий выбираем **Edit field**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FWaUnoe76JPBYqrN2eGBr%2Fimage.png?alt=media&amp;token=d4a37a4e-4b11-4a9f-90e5-f2be6eb01ba8" alt=""><figcaption></figcaption></figure>
10. После этого появится окошко редактирования названия столбца и типа данных.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FZkhQI92sJG3wKw1nDUmL%2Fimage.png?alt=media&amp;token=2baf9f6a-a309-4c13-aca6-b9363c6b2c51" alt=""><figcaption></figcaption></figure>

    \
    В нашем случае лучше выбрать **Long text**, чтобы было удобнее просматривать таблицу.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FTB26c9naHGo506Zu5EDw%2Fimage.png?alt=media&amp;token=c8bd338a-8c0f-4c04-bb49-b93003de987a" alt=""><figcaption></figcaption></figure>
11. Сохраняем название и тип данных по кнопке **Update Field**

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FBaYbIR2nFvkGg8KOHh6w%2Fimage.png?alt=media&amp;token=8cf8f146-6396-4e2d-bb5b-8e88d5710dbe" alt=""><figcaption></figcaption></figure>
12. Теперь нам нужно создать еще 4 колонки. Сделать это можно по кнопке "+"

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FArs52X8wvkGKO7vA2HBV%2Fimage.png?alt=media&amp;token=182b1f18-96fc-4023-8c9e-c86a3419ed2b" alt=""><figcaption></figcaption></figure>

    \
    Всего у нас должно получиться 5 колонок со следующим типом данных:

    1. **question**

       Field type – Long text
    2. **answer**

       Field type – Long text
    3. **emdedded**

       Field type – Checkbox
    4. **to\_embed**

       Field type – Checkbox

       А еще в значении **Defalut value** должна стоять галочка

       <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FCz5qfuq2ewttY8k43ldQ%2Fimage.png?alt=media&amp;token=2b586d13-ee24-45e6-95ed-4bc6bb0f3e19" alt=""><figcaption></figcaption></figure>
    5. **to\_delete**

       Field type – Checkbox

    В конечном итоге у нас должно это выглядеть так:

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F1Re4eqUOUdVswo9hpVaP%2Fimage.png?alt=media&amp;token=98e6a80c-1734-4dce-9c2a-a279f7277581" alt=""><figcaption></figcaption></figure>
13. Импортируем данные. Для того чтобы загрузить нашу имеющуюся таблицу с вопросами и ответами, нам необходимо нажать на три вертикальных строчки в верхней панели, затем **Upload → Upload CSV**

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FG6qAQTgqLubpANQ5ExCa%2Fimage.png?alt=media&amp;token=461b473f-fed5-43f8-b1d5-5ba59e69f4c2" alt=""><figcaption></figcaption></figure>
14. Перед нами откроется окошко загрузки файлов. Перетягиваем таблицу из загрузок, либо загружаем по кнопке из внутреннего хранилища компьютера.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fe08QVZ8vmxMm484T2pnd%2Fimage.png?alt=media&amp;token=ab1628f5-6487-450b-ba68-3ad06d1e2faf" alt=""><figcaption></figcaption></figure>
15. Нажимаем **Import**.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FOgp509fJK7RAqDJI3xSv%2Fimage.png?alt=media&amp;token=40e7e3f8-2403-4ef6-96cd-1dab9d8327ad" alt=""><figcaption></figcaption></figure>
16. **Важно: Названия колонок в обеих таблицах должны совпадать!** Либо необходимо вручную выбрать, какой столбец из **Google Sheets** соответствует столбцу в **NocoDB**. Нажимаем **Import** еще раз, если все верно.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FHsFmV2lzgcv6IGE8GIYq%2Fimage.png?alt=media&amp;token=20d5ef16-74d3-4bcf-b311-41c768ccc323" alt=""><figcaption></figcaption></figure>
17. При успешном импортировании должен получиться такой результат:

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FbhirII0PzlHt5Y99NSMD%2Fimage.png?alt=media&amp;token=063cbb2a-c697-4c49-852a-4cbb9dc21de0" alt=""><figcaption></figcaption></figure>

## Создание индексов в Pinecone

**Pinecone** — это облачная векторная база данных, которую мы будем использовать для работы с искусственным интеллектом.

Когда мы передаём в ИИ текст (например, вопрос или описание), он преобразует его в **вектор** – массив чисел, который отражает смысл и контекст данного текста. Эти векторы можно сравнивать между собой: чем они ближе друг к другу в многомерном пространстве, тем более **они схожи** с текстами, из которых были получены.

При работе с большим объёмом векторных данных важно **эффективно находить похожие объекты**. Для этого используется **индекс** – специальная структура данных, оптимизированная для быстрого поиска схожих векторов.

1. Откроем интерфейс **Pinecone** и нажмем кнопку **Create index**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FPfLqdyPHC0SulnNpY2ri%2Fimage.png?alt=media&amp;token=41949cc6-649c-4c6b-bb93-dc7b66914d4b" alt=""><figcaption></figcaption></figure>
2. После нажатия кнопки откроется окошко с настройками индекса. Здесь мы пишем название нашего индекса и ставим галочку на Custom settings.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fy8mHWadNWpvdLZGABUFG%2Fimage.png?alt=media&amp;token=f641c7de-0012-41e1-a870-41b0fbf66a29" alt=""><figcaption></figcaption></figure>
3. В разделе **Configuration** указываем размерность:\
   В поле **Dimension** вводим значение – 3072.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FN2HLy0Sb27Jy3AxsTxxf%2Fimage.png?alt=media&amp;token=c62cd6c2-8723-4e24-adcf-c7dc633369a7" alt=""><figcaption></figcaption></figure>
4. Затем нажимаем **Create index**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F5e1SNdrr8RBP5nc11AEd%2Fimage.png?alt=media&amp;token=e0b98b75-7c5a-457d-b040-d3ca72e727e0" alt=""><figcaption></figcaption></figure>
5. После создания индекс появится в списке. Скопируйте его ссылку – она потребуется в дальнейшем.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FSJc6s8ejXqOlpikLGClH%2Fimage.png?alt=media&amp;token=a0ba99a7-fe87-49f6-92ad-1350f2f1ec49" alt=""><figcaption></figcaption></figure>

## Обучение ИИ по базе знаний

1. Открываем **n8n** и создаем в нем новый **Workflow**
2. Наша цепочка будет выглядеть следующим образом:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FoksKaKXuKwbbBDXuajk6%2Fimage.png?alt=media&amp;token=c1a5c3ae-ae8e-494f-b0d0-24456bbb2574" alt=""><figcaption></figcaption></figure>

### Краткое описание узлов цепочки:

**Schedule Trigger** — запускает процесс по расписанию.

**NocoDB** — получает данные из таблицы NocoDB (вопросы и ответы).

**HTTP Request** — отправляет запрос к OpenAI для генерации эмбеддингов.

**Embeddings** — формирует массив векторов.

**50 Vectors** — подготавливает массив из 50 векторов для загрузки.

**Upsert** — загружает векторы в Pinecone.

**Mark as Embedded** — помечает обработанные строки в базе как embedded.

### Рассмотрим параметры каждого узла более детально:

#### **Schedule Trigger**

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

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FtlCHjtnP0drZ0MtHXkYX%2Fimage.png?alt=media&amp;token=7260319a-15c7-4713-8190-dc781d45715b" alt=""><figcaption></figcaption></figure>

#### **NocoDB1**

<div><figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FTJoJ9J09zV5SFgO3gudi%2Fimage.png?alt=media&amp;token=c080c1b3-44a1-4867-8959-8339ab5f5d8b" alt=""><figcaption></figcaption></figure> <figure><img src="https://cdn2.buildin.ai/s3/4c33529c-9733-4b8e-bbd3-0062fc5221dc/image.png?time=1757586600&#x26;token=9f452b6b1651499c81429e161301d8c0&#x26;role=free" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**!Важный момент.** В **n8n** у вас должны быть созданы **Credential** с **NocoDB** и **Pinecone**. При создании **Credential** для **NocoDB** требуется указать **Название** и **API Token** А при создании **Credential** для **Pinecone** требуется **Название**, **Ключ API**

**Это нужно для получения доступа к сервисам.**
{% endhint %}

В текущем узле мы выбираем нужный **Credential**, **Project Name** и **Table name** (пространство в NocoDB, база в NocoDB и таблица)

В разделе **Options** в поле **Fields** пишем - I**d,question,answer**. В поле **Filter by Formula** устанавливаем фильтр:

```json
(embedded,eq,false)~and(to_embed,eq,true)~and(question,neq,)~and(question,isnot,null)~and(answer,neq,)~and(answer,isnot,null)~and(to_delete,eq,false)
```

#### HTTP-request

В данном узле мы заполняем параметры для отправки запроса, выбираем метод, пишем адрес. В **Header Parameters** пишем название заголовка **Authorization** и значение **API-ключа**, используемого для доступа к **OpenAI** в формате **Bearar OPENAI\_KEY**.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FL9deBJPtnVr4pdyBXCzE%2Fimage.png?alt=media&amp;token=9b5d0830-4490-4ce5-8684-6e67f80dc00f" alt=""><figcaption></figcaption></figure>

В теле запроса в **Body Parameters** мы пишем:

**Name:** `input`

**Value:** `{{ $json.question }}`

Так мы передадим значение вопроса. Также необходимо передать данные о модели ИИ, которая нам нужна:

**Name:** `model`

**Value:** `text-embedding-3-large`

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FRC6PfdETbQIpnxzRsI9o%2Fimage.png?alt=media&amp;token=ef62588c-6df7-4bc7-8763-e4d67469f46a" alt=""><figcaption></figcaption></figure>

#### Embeddings

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FXKjXN0EROLb1odkXwxIO%2Fimage.png?alt=media&amp;token=5ef61465-bd09-4f34-8e4b-8b9bf8e76a56" alt=""><figcaption></figcaption></figure>

#### 50 vectors

В ноде **code** мы пишем код:

```json
const vectors = $input.all()

.map(i => i.json)

.map((vector,index) => {

return {

values: vector.data[0].embedding,

id: "Id-" + vector.Id.toString(),

metadata: {

question: vector.question,

answer: vector.answer

}

}

})

const mark_as_embedded = vectors.map(vector => ({Id: Number(vector.id.split('-')[1]), embedded: true}))

return [{vectors,mark_as_embedded}];
```

Данный код обрабатывает данные, полученные после создания эмбеддингов, и готовит их для загрузки в векторную базу **Pinecone**, а также для пометки в базе **NocoDB**, что эти строки уже были обработаны.

#### Upsert

Ранее мы создавали индекс в **Pinecone** и сохраняли ссылку. Ее мы вставляем в поле **URL** и дописываем в адресе **/vectors/upsert**, чтобы у нас получилось:

<mark style="color:red;">https\://\<cсылка\_на\_pinecone></mark>**/vectors/upsert**

Установим следующие параметры:

* **Method:** `POST`
* **URL:** <mark style="color:red;">https\://\<cсылка\_на\_pinecone></mark>**/vectors/upsert**
* **Authentication:** `Predefined`
* **Credential Type:** `PineconeApi`
* **PineconeApi:** Выбираем заранее сохранённый API-ключ **Pinecone** для авторизации.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F6NnbsLPQzvoDZmYjKvC2%2Fimage.png?alt=media&amp;token=806b5c2d-ffc4-486c-b5cf-23264ade80b1" alt=""><figcaption></figcaption></figure>

В **Header Parameters:**

**Name:** `accept`

**Value:** `application/json`

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F5qeYs4y3NxmOsFrEZju7%2Fimage.png?alt=media&amp;token=f25f50ff-0f40-4b91-b780-8bdd596883d2" alt=""><figcaption></figcaption></figure>

В **Body Parameters**:

**Name:** `vectors`

**Value:** `{{ $json.vectors }}`&#x20;

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FlLLgmVJS5x7CqxyOYU2G%2Fimage.png?alt=media&amp;token=e0108c0f-6d2b-41eb-9d37-ca033c2984e8" alt=""><figcaption></figcaption></figure>

#### **Mark as Embedded**

В заключительном узле цепочки обновляем данные таблицы **NocoDB**. Для этого в **URL** указываем адрес базы **NocoDB** со следующей структурой:

https\://<mark style="color:red;"><Адрес\_nocodb></mark>/api/v2/tables/<mark style="color:red;"><айди\_таблицы></mark>/records.

**Выбираем следующие значения:**

* **Method:** `PATCH`
* **URL:** https\://<mark style="color:red;"><Адрес\_nocodb></mark>/api/v2/tables/<mark style="color:red;"><айди\_таблицы></mark>/records.
* **Authentication:** `Predefined Credential type`
* **Credential Type**: `NocoDB API Token`

  &#x20;

  <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FUwHx6u7Qa764T8X7Pato%2Fimage.png?alt=media&amp;token=22181f1f-4b54-48a8-af72-ec9b26293bc3" alt=""><figcaption></figcaption></figure>
* &#x20;**NocoDB API Token:** (выбираем **Credential** нужной базы **NocoDB)**

В **Header Parameters** указываем:

**Name:** `accept`

**Value:** `application/json`

В **Body** пишем в поле **JSON**, меняя тип с **Fixed** на **Expression**:

```json
{{ JSON.stringify($('50 Vectors').first().json.mark_as_embedded) }}
```

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fl3CudrsfD8kfWfsc2OGM%2Fimage.png?alt=media&amp;token=d23eeb08-5078-4fe9-9ed0-87335b496390" alt=""><figcaption></figcaption></figure>

3. Сохраняем **Workflow** в **n8n**
4. Нажимаем на кнопочку запуска

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F92OYWlkEaGmrLeL28OMH%2Fimage.png?alt=media&amp;token=ec905612-24d8-4b32-b529-4fb44e011ca9" alt=""><figcaption></figcaption></figure>
5. После запуска цепочки в таблице появятся галочки в колонке **embedded**. Это значит, что данные вопросы и ответы были загружены в векторную базу **Pinecone**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FxLQghUGGcIzykEdYuHRj%2Fimage.png?alt=media&amp;token=ae8f3d59-5b0b-4b26-bcbe-7267e5acd2f6" alt=""><figcaption></figcaption></figure>

## Настройка сценария в Smartbot

1. Заходим в личный кабинет **Smartbot** и переходим в раздел **"Сценарии"**.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FmH5EJhu4zpGBxOP3Lkci%2Fimage.png?alt=media&amp;token=3988f19b-e833-49cb-82bc-7081ddd578d9" alt=""><figcaption></figcaption></figure>
2. Нажимаем на кнопку **"Создать сценарий"**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FmIVHcRUqGOyHZzFWiPDo%2Fimage.png?alt=media&amp;token=ad863576-3084-4dc6-9cc2-11b415a83b90" alt=""><figcaption></figcaption></figure>
3. В открывшемся окошке пишем название сценария, затем нажимаем **"Создать"**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F0chN1uPyGyGr1bzwb5kL%2Fimage.png?alt=media&amp;token=d1f35a21-4adb-4b4b-a625-0292b31016f4" alt=""><figcaption></figcaption></figure>
4. **Рассмотрим схематически, как должен выглядеть сценарий, и разберем каждый блок по отдельности:**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FRaFe1VqqmxtkB3MsYXV7%2Fimage.png?alt=media&amp;token=6dcd7fd4-cf3d-4e64-8d2b-623061989c30" alt=""><figcaption></figcaption></figure>

**Наш сценарий будет состоять из 7 блоков:**

1. Нет подходящего сценария
2. Выполнить SmartQuery
3. Выполнить SmartQuery
4. Отправить HTTP-запрос
5. Webhook
6. Выполнить SmartQuery
7. Отправить сообщение

#### Блок 1: Нет подходящего сценария

Реагирует на любое сообщение пользователя в боте. Он запускает всю цепочку сценария.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FMKjTOkdqPM4xBQxzVz0w%2Fimage.png?alt=media&amp;token=6cf24169-a80b-4e31-ad79-fe75b9ba35e9" alt=""><figcaption></figcaption></figure>

#### Блок 2: Выполнить SmartQuery

Выполняет функцию промежуточного блока. Не обрабатывает данные, но требуется для технической связки.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FfEnS2m4wAus3Z05V0vmi%2Fimage.png?alt=media&amp;token=5f7560ff-3ede-42b3-bbc7-7c07c7a94603" alt=""><figcaption></figcaption></figure>

#### Блок 3: Выполнить SmartQuery

В данном блоке мы подготавливаем данные, создаем URL и тело запроса.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FfP7BWO3e8VKSTG6sjrFM%2Fimage.png?alt=media&amp;token=7e207211-e97c-4103-b4af-a739f51818c8" alt=""><figcaption></figcaption></figure>

```json
%string_temp% = %n8n_url% + "/webhook/test_new_request"

%body% = {
    "question": %message_text%,
    "user_id": %user_id%
}

%response_data% = {}
%response_data_status% = 0
```

**Используемые переменные:**

`%string_temp%` — (тип: строка) итоговый **URL**.

`%body%` — (тип: словарь) передаём вопрос и **ID** пользователя.

`%n8n_url%` — (тип: строка) переменная со ссылкой на ваш сервер **n8n**.

**!Важно:** **URL** должен совпадать с **URL** вызова вебхука в **n8n.**

#### Блок 4: Отправить HTTP-запрос

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FgPNtwrEwtg4rQJcsbU4I%2Fimage.png?alt=media&amp;token=bef7ad8d-6642-49e8-b642-4319c1ccd169" alt=""><figcaption></figcaption></figure>

Устанавливаем следующие параметры:

* **Метод:** `POST`
* **URL:** `%string_temp%`
* **Тип тела:** `Текст`
* **Значение тела:** `{{ %body% | to_json }}`

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FG1bCSlGmzAcHIiq1Ckce%2Fimage.png?alt=media&amp;token=39dc7161-609b-4590-afa0-4b1811963356" alt=""><figcaption></figcaption></figure>

**В заголовках:**

* **Наименование:** content-type
* **Значение:** `application/json`&#x20;

#### &#x20;**Блок 5: Webhook**

Через этот блок мы получаем ответ из **n8n.** Чтобы он работал, мы должны создать **API-токен,** либо выбрать уже существующий.&#x20;

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fle1ZPCAU8w1RJqeYzSp3%2Fimage.png?alt=media&amp;token=0dc82b99-c1b1-46ab-b2de-ed7e6aba9eb0" alt=""><figcaption></figcaption></figure>

В **API-токены** выбираем **"Создать токен".**

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F6lnpTssTYTwGnQm2UQCu%2Fimage.png?alt=media&amp;token=b5dd756b-cceb-4c80-a4be-6810bfe70ea4" alt=""><figcaption></figcaption></figure>

В открывшемся окошке нажимаем на кнопку **"Cоздать токен".**

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FjAbXaji66UzEGYDkRHvR%2Fimage.png?alt=media&amp;token=126866fd-8122-44b6-8379-3fb9cca6963c" alt=""><figcaption></figcaption></figure>

Придумываем название и создаем токен.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FJQu5B8AZzChPNNhI2Mvp%2Fimage.png?alt=media&amp;token=203598ea-0ac0-479f-808d-fac5a63adc0c" alt=""><figcaption></figcaption></figure>

Выбираем созданный токен и канал.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FhOC5an1mNpycQ9wEr1zL%2Fimage.png?alt=media&amp;token=fad22609-93b9-4bb9-aa61-fd65a1d4c771" alt=""><figcaption></figcaption></figure>

Данные из **Webhook** нам понадобятся в дальнейшей настройке **Workflow** в **n8n.**

#### Блок 6: Выполнить SmartQuery

Извлекаем текст ответа из **Webhook** и сохраняем его в переменную `%bot_message%`.

```json
%bot_message% = %public_api_data%['answer']
```

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fg5EXwOUY9x67JYNUHg92%2Fimage.png?alt=media&amp;token=5c4639fe-4a52-4d5a-b483-52a3159306f5" alt=""><figcaption></figcaption></figure>

#### **Блок 7: Отправить сообщение**

Выводим значение переменной `%bot_message%`в блоке **"Отправить сообщение"**.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F3M40vfFxmNchs9c03NhS%2Fimage.png?alt=media&amp;token=12f2d4be-c885-426d-8b12-c2d8bf6ada73" alt=""><figcaption></figcaption></figure>

## **Отправка ответа из Pinecone в Smartbot**

В данной части инструкции мы по шагам разберём, **как настроить рабочий процесс в n8n**, который будет:

* принимать запрос от пользователя через **Smartbot**
* искать наиболее подходящий ответ через **Pinecone** (векторную БД)
* отправлять его обратно пользователю

**Создаём Workflow в n8n**

1. Открываем **n8n**. Создаем новый **workflow**.
2. Наша логика будет выглядеть следующим образом:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FV14I1m5sEq5JmgsB1QZJ%2Fimage.png?alt=media&amp;token=8318f8b2-5f02-4987-aed2-06fb89a8a229" alt=""><figcaption></figcaption></figure>

**Краткое описание узлов цепочки:**

**Webhook** — принимает запрос от Smartbot (вопрос пользователя).

**Get vectorized** — отправляет вопрос в OpenAi для получения вектора.

**Get the nearest reply** — ищет наиболее близкие к вопросу вектора (совпадения) в Pinecone.

**if** — проверяет, нашлось ли совпадение.

**Code (успех)** — формирует тело ответа из Pinecone.

**HTTP Request (успех)** — отправляет ответ пользователю в Smartbot.

**Code (неудача)** — формирует тело ответа в случае отсутствия совпадения.

**HTTP Request (неудача)** — отправляет ответ в Smartbot.

### Рассмотрим параметры каждого узла более детально:

#### Webhook

Данный узел запускает весь **workflow**. Через него мы принимаем данные из **Смартбота**, а именно, вопрос пользователя и его **ID**.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FfbEjD9uwrmwewdRaFnrJ%2Fimage.png?alt=media&amp;token=4ee4e256-912e-4c4b-8947-a812e24ecc0d" alt=""><figcaption></figcaption></figure>

**Параметры узла:**

* **Method:** `POST`
* **Path:** (часть **URL**, по которой по которой вызывается этот **Webhook**)
* **Respond:** `Immediately`

**!Важный момент:** **Path** должен быть идентичен тому, который мы указывали в **Смартботе** ранее.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fy8CICOFBbowuUqLpoS1w%2Fimage.png?alt=media&amp;token=fa97e43c-3698-4da9-bf5c-acf5e0dbd5b5" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FYeYjRt4rYe8MtqGZIrar%2Fimage.png?alt=media&amp;token=5351b8bf-36b0-42c6-996b-2a76b2796afe" alt=""><figcaption></figcaption></figure>

#### **Get vectorized**

Отправляет вопрос в OpenAI и получает его векторное представление.

**Параметры узла:**

* **Method**: `POST`
* **URL**: `https://api.openai.com/v1/embeddings`
* **Authentication**: `Predefined Credential Type`
* **Credential Type**: `OpenAi`
* **OpenAi:** (Выбираем нужный Credential OpenAi)
* **Model**: `text-embedding-3-large`

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FgA3FQvh54cSQ0TkmlueV%2Fimage.png?alt=media&amp;token=fdd534fb-d92d-46c0-a081-fe5367d91bfe" alt=""><figcaption></figcaption></figure>

В **Body Parameters:**

**Name:** `input`

**Value:** `{{ $json.question }}`

Передаем вопрос и данные модели ИИ.

**Name:** `model`

**Value:** `text-embedding-3-large`

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F9WkujmUfVGFsD2B1WOSF%2Fimage.png?alt=media&amp;token=071302a7-def9-41dc-b0e1-d8c02f09f638" alt=""><figcaption></figcaption></figure>

#### **Get the nearest reply**

Формируем запрос в векторную базу **Pinecone**, для поиска совпадений вектора вопроса с векторами из базы данных. Для этого заполняем следующие параметры:

* **Method:** `POST`
* **URL:** [https://наpinecone>/query](https://docs.nocodecloud.ru/ai/https:/наpinecone>/query)
* **Authentication:** `Predefined`
* **Credential Type:** `PineconeApi`
* **PineconeApi:** Выбираем заранее сохранённый API-ключ **Pinecone** для авторизации.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FyM2nYMeCG99LrmYsspSW%2Fimage.png?alt=media&amp;token=b9d9229a-18a4-4fb4-b7fc-79140ff36dba" alt=""><figcaption></figcaption></figure>

**Header Parameters:**

**Name:** `accept`

**Value:** `application/json`

**Body Parameters:**

**Name:** `vector`

**Value:** `{{ $json.data[0].embedding }}`

Векторное представление вопроса пользователя. Отправляем этот вектор, чтобы Pinecone сравнил его с уже сохранёнными векторами и нашёл наиболее подходящие.

**Name:** `topK`

**Value:** `10`

Указываем, сколько **самых близких векторов** (записей) мы хотим получить в ответ. В нашем случае - 10.

**Name:** `includeMetadata`

**Value:** `{{ true }}`

Указываем, что хотим получить из вектора **Pinecone** метаданные о вопросе и ответе.

#### **If**

**Проверяем, были ли найдены совпадения:**

```json
{{ $('Get the nearest reply').first().json.matches }}
```

**=** is not empty

#### **Code**

Создаем **тело (body)** для отправки данных в **Smartbot**.

```json
var data = {
  "answer": $('Get the nearest reply').first().json.matches[0].metadata.answer,//.replaceAll('"', '\"').replaceAll('\n', '\\n'),
  "score": $('Get the nearest reply').item.json.matches[0].score
}

/*Создаем переменную data, чтобы передать: ответ, найденный через Pinecone (answer) и оценку совпадения (score)
*/

var body = {
  "access_token": "d_RzF82z4TXML5_ZnMcrdJS2Y_K8kQNZNzkJZ-ORgI24v1STJEt55EgFXGEaILR6",
  "v": "0.0.1",
  "channel_id": "7779600502",
  "block_id": "6808dbe10aa22020da97a62f",
  "peer_id": $('Webhook').first().json.body.user_id,
  "data": data
}

return {
  body
}
```

В тело запроса добавляем тело вебхука из **Смартбота**:

<div><figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F3LsbMdtC75s1WvlE6LuH%2Fimage.png?alt=media&amp;token=05de1efb-b4c9-45cb-954c-09b4c80ef03c" alt=""><figcaption></figcaption></figure> <figure><img src="https://cdn2.buildin.ai/s3/6a5313e5-bfb2-4721-9144-b8120f88020a/image.png?time=1757586600&#x26;token=e0fef1b58a115333cc704b119f51817b&#x26;role=free" alt="" width="375"><figcaption></figcaption></figure></div>

#### **HTTP Request:**

Устанавливаем параметры для отправки подобранного ответа в **Smartbot**:

* **Method:** `POST`
* **URL:** `https://api.smartbotpro.ru/blocks/execute`
* **Authentication:** `None`
* **Body Content Type**: `JSON`
* **Body Parameters:**`{{ JSON.stringify($json.body) }}`

<div><figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FvsC5tjR3ikqoIDDX7fqW%2Fimage.png?alt=media&amp;token=31a71b39-af08-4330-9a3e-14033e5e7765" alt="" width="227"><figcaption></figcaption></figure> <figure><img src="https://cdn2.buildin.ai/s3/53f20050-11cd-49bb-b184-f44c8ae0fe8b/image.png?time=1757586600&#x26;token=9e1c2ace6ec3fd0b03fe2699f165a099&#x26;role=free" alt=""><figcaption></figcaption></figure></div>

#### **Code1 (совпадений не найдено)**

Отправляем ответ в случае отсутcтвия совпадений по векторам.

```json
var data = {
  "answer": 'Ответ не найден',
  "score": 0.00
}

var body = {
   "access_token": "d_RzF82z4TXML5_ZnMcrdJS2Y_K8kQNZNzkJZ-ORgI24v1STJEt55EgFXGEaILR6",
    "v": "0.0.1",
    "channel_id": "7779600502",
    "block_id": "6808dbe10aa22020da97a62f",
    "peer_id": $('Webhook').first().json.body.user_id,
    "data": data
}

return {
  body
}
```

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FDk8AecZ6Sv3lt0zRAvfK%2Fimage.png?alt=media&amp;token=d937f625-24bc-4d36-9668-728a8f0a0122" alt=""><figcaption></figcaption></figure>

#### **HTTP Request1 (совпадений не найдено)**

Устанавливаем параметры для отправки ответа в **Smartbot**:

* **Method:** `POST`
* **URL:** `https://api.smartbotpro.ru/blocks/execute`
* **Authentication:** `None`
* **Body Content Type**: `JSON`
* **Body Parameters:**`{{ JSON.stringify($json.body) }}`

<div><figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FDObkF92Uu4TXMcRAJ6xC%2Fimage.png?alt=media&amp;token=9b9cf0a8-0225-494b-ad9b-17724f462a46" alt="" width="227"><figcaption></figcaption></figure> <figure><img src="https://cdn2.buildin.ai/s3/3b34734d-eba3-4ab6-bea8-398d2f4a31b0/image.png?time=1757586600&#x26;token=781605da59584c082a3401a2aa21b155&#x26;role=free" alt=""><figcaption></figcaption></figure></div>


# Получение токенов GigaChat

{% hint style="info" %}
В API Гигачата несколько сервисов, есть платные и бесплатные.

Самый дешевый сервис - Эмбеддинги - 400 рублей за 10 000 000 токенов

<img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FLuFCKqCIVmvkrLVOv0zP%2Fimage.png?alt=media&amp;token=80da9c58-33ef-4782-baca-7f13e91a5f19" alt="" data-size="original">
{% endhint %}

### Пошаговая инструкция по получению токена API (он общий для сервисов)

1. Откройте сайт: <https://developers.sber.ru/portal/products/gigachat-api>

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FI6krhgLIChXZlfjblj9V%2Fimage.png?alt=media&amp;token=ef380538-4ba0-498a-8ef1-e5a6c83bd31c" alt=""><figcaption></figcaption></figure>
2. Выберите “Личный кабинет“

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FjKTpjzkjZvvrVoVE13PF%2Fimage.png?alt=media&amp;token=168a6ac9-85ee-4413-8cf9-40a9f458f3ff" alt=""><figcaption></figcaption></figure>
3. Войдите по Сбер ID или по телефону
   1. Если Сбер ID нет, регистрируйтесь по номеру телефона

      <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FNS5yZaJZr9R3fmYLau8I%2Fimage.png?alt=media&amp;token=711acc11-f0b4-4378-94f5-7f1132110a40" alt=""><figcaption></figcaption></figure>
4. После авторизации вы попадете в кабинет, который также называется Studio.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FnEDM2WVeNbhgPW2wtYni%2Fimage.png?alt=media&amp;token=e0bd5d14-de90-4f5d-bcaf-258786e3d91d" alt=""><figcaption></figcaption></figure>
5. Создайте проект Gigachat API

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FtsO7WKxiJqahTxsYe9Jn%2Fimage.png?alt=media&amp;token=c3f680d7-9abe-43b1-bcf3-d88694b12f12" alt=""><figcaption></figcaption></figure>
6. Нажмите кнопку “Получить доступ”

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FM2SX7vSc3ytcr1aqitS6%2Fimage.png?alt=media&amp;token=30be9f5d-13d2-4ca2-a9c8-a9d00db8f399" alt=""><figcaption></figcaption></figure>
7. Откроется раздел с настройкой API

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FPq9HZRuAYzdYXza7IDIT%2Fimage.png?alt=media&amp;token=0f3e14d6-5850-407c-8695-ebdac2a2ae87" alt=""><figcaption></figcaption></figure>
8. Нажмите синюю кнопку “Получить ключ“

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FqRNUE9uxWzvZvq90VJi3%2Fimage.png?alt=media&amp;token=5b24f0c4-9d19-453a-a506-8bb6470638a1" alt=""><figcaption></figcaption></figure>
9. Сохраните Authorization Key - это и есть токен
10. При запросах в API указывайте заголовок Authorization cо значением

    ```
    Bearer <Authorization Key>
    ```

    Например

    ```
    curl -X POST \
      https://api.sber.ru/gigachat/api/v1/embeddings \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -d '{
        "texts": ["Your text to embed goes here."],
        "model": "YOUR_EMBEDDING_MODEL_NAME"
      }'
    ```
11. В ответе вы можете получить ошибку, связанную с неоплаченным токеном
    1. Если токен платный, откройте биллинг

       <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FU0qHv76CRanwdG72lYl5%2Fimage.png?alt=media&amp;token=b138d1d1-3ae1-49da-9a85-cd5049960a88" alt=""><figcaption></figcaption></figure>
    2. Выберите нужный платный сервис, например, Эмбеддинги, и нажмите “Перейти к оплате“

       <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fdd6upYHdyO3ek0UtlIkJ%2Fimage.png?alt=media&amp;token=8e02fb9a-7612-4c2c-9717-98b093548b8c" alt=""><figcaption></figcaption></figure>
    3. И оплачивайте удобным вам способом

       <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F2oTm7iWu9yifjGZkWS2k%2Fimage.png?alt=media&amp;token=4bee9c42-4d84-4867-a7fd-c18423d1984f" alt=""><figcaption></figcaption></figure>
12. После оплаты ваши запросы начнут обрабатываться


# Идеальный промпт для ИИ Агента

Оптимальная длина промпта**Prompt (промпт)** для ИИ-агента — это **задание или инструкция**, которую мы формулируем для модели, чтобы она выдала нужный результат.

По сути, это язык общения человека с искусственным интеллектом.

\| Оптимальная длина промпта  | <p>500-1500 токенов (2000-6000 символов) - золотая середина для большинства задач <br>До 3000 токенов (12000 символов) - для сложных задач <br>Свыше 5000 токенов - высокий риск галлюцинаций<br></p><p>Пример: запрос на написание эссе по философии лучше сделать длиннее, чем запрос «сгенерируй шутку про кота».</p>                                                                                                                                                                                                                                                   |
\| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
\| Красные флаги              | <p></p><ul><li>Слишком общие инструкции → модель выдаст случайный или банальный ответ.</li><li>Противоречивые требования → результат будет непредсказуемым.</li><li>Множественные задачи в одном промпте → модель может «запутаться».</li><li>Отсутствие примеров → выше шанс, что ответ не совпадёт с ожиданиями.</li></ul><p>Пример плохого промпта: «Сделай сайт, но чтобы он был красивым и простым». Пример улучшенного: «Сделай одностраничный сайт-визитку на HTML с блоками: о компании, услуги, контакты. Используй минимализм (белый фон, синие заголовки)».</p> |
\| Оптимальный формат промпта | <p>Markdown помогает структурировать текст: заголовки, списки, выделения, кодовые блоки.<br>Это улучшает читаемость и точность интерпретации.</p>                                                                                                                                                                                                                                                                                                                                                                                                                          |

## Основные параметры

### Оптимальная длина промпта

500-1500 токенов (2000-6000 символов) - золотая середина для большинства задач\
До 3000 токенов (12000 символов) - для сложных задач\
Свыше 5000 токенов - высокий риск галлюцинаций

Пример: запрос на написание эссе по философии лучше сделать длиннее, чем запрос «сгенерируй шутку про кота».

### Красные флаги

* Слишком общие инструкции → модель выдаст случайный или банальный ответ.
* Противоречивые требования → результат будет непредсказуемым.
* Множественные задачи в одном промпте → модель может «запутаться».
* Отсутствие примеров → выше шанс, что ответ не совпадёт с ожиданиями.

Пример плохого промпта: «Сделай сайт, но чтобы он был красивым и простым». Пример улучшенного: «Сделай одностраничный сайт-визитку на HTML с блоками: о компании, услуги, контакты. Используй минимализм (белый фон, синие заголовки)».

### Оптимальный формат промпта

Markdown помогает структурировать текст: заголовки, списки, выделения, кодовые блоки.\
Это улучшает читаемость и точность интерпретации.

## Структура идеального промпта для ИИ-агента в n8n

<table><thead><tr><th width="232.76171875">Раздел</th><th>Описание / Что писать</th></tr></thead><tbody><tr><td>Заголовок задачи</td><td>Краткое название, чтобы сразу понять о чём речь</td></tr><tr><td>Роль</td><td>Кто выполняет задачу и для кого.<br>Пример: <em>«Ты технический писатель, который пишет инструкции для новичков в IT»</em></td></tr><tr><td>Контекст</td><td>Почему важна задача, цель или проблема.<br>Пример: <em>«Пользователь не умеет настраивать VPN, нужно объяснить простыми словами»</em></td></tr><tr><td>Задача</td><td>Что требуется сделать — максимально чётко, но кратко (1–2 предложения)</td></tr><tr><td>Входные данные</td><td><p>– [Переменная 1]</p><p>– [Переменная 2]</p><p> <em>(подставляются из n8n, напр. <code>{{$json["topic"]}}</code>)</em></p></td></tr><tr><td>Формат ответа</td><td>Markdown / JSON / Таблица / Чек-лист</td></tr><tr><td>Стиль</td><td>Дружелюбный, простой (без жаргона)или сухой, деловой — в зависимости от задачи</td></tr><tr><td>Требования</td><td><p>– Язык: русский / английский</p><p>– Добавить примеры кода / ссылки на документацию / best practices</p></td></tr><tr><td>Примеры плохого и хорошего ответа</td><td>Плохо: <em>«Просто подключите сервис»</em><br>Хорошо: <em>«1. Перейдите в настройки → 2. Введите токен → 3. Нажмите „Сохранить“»</em></td></tr><tr><td>Финальный чек-лист</td><td><p>– Все переменные и данные учтены?</p><p>– Примеры кода присутствуют?</p><p>– Оформлено в Markdown?</p></td></tr><tr><td>Запрещено</td><td>Что нельзя делать: придумывать факты, добавлять рекламу и т.п.</td></tr><tr><td>Дополнительные ресурсы</td><td>Ссылки на документацию, гайды, полезные материалы</td></tr><tr><td>Ошибки и их решения (опционально)</td><td>Частые проблемы и варианты их решения</td></tr></tbody></table>

## Создаём идеальный промпт с помощью ИИ

1. Находим доступную модель ИИ, в примере будем использовать [ChatGPT](https://chatgpt.com/)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FL3yU5V2n6Ytad7SMxcMC%2Fimage.png?alt=media&amp;token=6528e0b4-e435-4ebe-9f44-4abaf5479f01" alt=""><figcaption></figcaption></figure>
2. Описываем свой workflow в n8n. Для лучшего понимания загружаем скриншот/json файл нашего workflow (можно воспользоваться [инструкцией](https://docs.nocodecloud.ru/n8n/import-i-eksport-shablonov)).
3. Отправляем ему структуру идеального промпта.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FxYUfG48RrXctiIBvAZGp%2Fimage.png?alt=media&amp;token=ef495806-28fb-45fa-9148-a16dbecb5822" alt=""><figcaption></figcaption></figure>
4. Просим его помочь составить идеальный промпт. Пример:

   *<mark style="color:$info;">Помоги мне составить идеальный промпт для моего ИИ Агента в n8n.</mark>*

   *<mark style="color:$info;">Я пришлю тебе скриншот/файл рабочего процесса и скриншот/файл с примерами идеальных промптов для ИИ агентов в n8n, чтобы ты понял контекст и структуру задачи.</mark>*

   *<mark style="color:$info;">Твоя задача — задать мне несколько уточняющих вопросов, чтобы точно понять, какую задачу должен решать мой ИИ агент и как он должен работать.</mark>*

   *<mark style="color:$info;">После этого, используя свои знания и полученную информацию, подготовь для меня оптимальный промпт для ИИ агента.</mark>*

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F8Oh31zb2dr79PS3H9DqK%2Fimage.png?alt=media&amp;token=147c0616-8eee-42a3-957e-a00df1dd772c" alt=""><figcaption></figcaption></figure>
5. Он присылает следующий ответ:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FGztCJ1BM2ywnLhqz4FZ5%2Fimage.png?alt=media&amp;token=930b529a-e161-4682-893e-fce54bffbde3" alt=""><figcaption></figcaption></figure>
6. Отвечаем ему в следующем формате:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F47iB6L4jUUJEZR9YSg0k%2Fimage.png?alt=media&amp;token=06d4f7e7-3b7f-4a4f-bb66-db6d08e5bc10" alt=""><figcaption></figcaption></figure>
7. Получаем результат:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FKSip1OVTTV6qldFsdyLH%2Fimage.png?alt=media&amp;token=d460c022-fcb8-497d-bc0c-b4f620ade9f2" alt=""><figcaption></figcaption></figure>
8. Просим его перевести наш промпт на английский язык, чтобы модель ИИ могла точнее интерпретировать задачу.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F7Op62Kplpf3cr36LOufe%2Fimage.png?alt=media&amp;token=f5d6aca6-70e4-495f-844c-d952e8734b89" alt=""><figcaption></figcaption></figure>
9. Следующим шагом нам нужно будет занести наш промпт в ноду **AI Agent** в n8n.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FQUYNqcKhfkupFVMvdVVg%2Fimage.png?alt=media&amp;token=f2c44ab9-3b04-4af9-b75f-82d6dfa68abf" alt=""><figcaption></figcaption></figure>
10. Готово! Осталось сохранить и активировать наш workflow, и наш ИИ-ассистент готов.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FRabNBNEKBhNPJUn9rHvS%2Fimage.png?alt=media&amp;token=d8b00f40-2758-4765-834d-f70f9dfd1776" alt=""><figcaption></figcaption></figure>

## Процесс тестирования

**Результат:** С первого ответа становится понятно, что промпт настроен корректно - бот представляется и уточняет, что готов помочь в создании инструкции.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FefiCktma5spoYtoVeBuL%2Fimage.png?alt=media&amp;token=74d5a719-ed50-4eaf-b56a-dee5f0ee1e38" alt=""><figcaption></figcaption></figure>

**Просим написать инструкцию:**

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FDgcmmK7WzT5rxfXS6190%2Fimage.png?alt=media&amp;token=8a5fc2ef-a32b-4163-a035-956324cc0427" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FnCsJse2x0JGmhXm6Knuq%2Fimage.png?alt=media&amp;token=5e56c8f7-c93b-42cc-a6a6-4256624ce930" alt=""><figcaption></figcaption></figure>

Бот с обновлённым промптом успешно выполнил задачу: он подробно расписал пошаговые действия, добавил необходимые ссылки и в целом отлично справился с инструкцией.


# Для новичков


# Блоки в n8n (узлы/ноды)

Эксперт: Артём Снытко

### Что такое узел в n8n? <a href="#chto-takoe-uzel-v-n8n" id="chto-takoe-uzel-v-n8n"></a>

* **Узел** (или нода) — это элемент рабочего процесса, который выполняет конкретную задачу.
* Узлы могут делать разные вещи, например:
  * Получать данные из API.
  * Отправлять сообщения.
  * Обрабатывать файлы и изображения.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FgI8iRxpznarYlxDsKriH%2Fimage.png?alt=media&amp;token=5f7bd517-48b4-4b06-bca7-d61e7340d02b" alt=""><figcaption></figcaption></figure>
* **Типы узлов**: Есть много типов узлов, например:
  * **HTTP Request** — для отправки запросов к веб-сервисам.
  * **Set** — для изменения или добавления данных.
* **Соединение узлов**: Узлы соединяются между собой стрелками. Это позволяет передавать данные от одного узла к другому.\
  Также можно провести стрелки от одного блока к нескольким и от нескольких блоков к одному.

  <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FVgH7EvrpN140LaGvBQNK%2Fimage.png?alt=media&amp;token=627a0851-d737-4ae4-bcf4-878ab51094f8" alt="Пример соединенных узлов"><figcaption><p>Пример соединенных узлов</p></figcaption></figure>

Например, вы можете создать процесс, который:

* Получает данные из Google Sheets (узел).
* Обрабатывает их (другой узел).
* Отправляет результаты в Telegram (третий узел).

Таким образом, узлы в n8n помогают автоматизировать задачи и интегрировать разные сервисы без программирования


# Триггеры в n8n

Эксперт: Артём Снытко

Триггеры в n8n – это специальные компоненты, которые запускают выполнение сценария (workflow) при наступлении определённых условий или событий. Они служат стартовой точкой для автоматизации процессов, позволяя системе реагировать на внешние события.

## Примеры триггеров <a href="#primery-triggerov" id="primery-triggerov"></a>

1. **Webhook**: Этот триггер активируется, когда на него поступает HTTP-запрос из внешней системы. Например, вы можете настроить его для получения данных из формы на вашем сайте.
2. **Schedule**: Этот триггер позволяет запускать сценарий по расписанию, например, каждый день в определённое время.
3. **Интеграции с другими сервисами**: Триггеры могут отслеживать события в сторонних приложениях, таких как создание новой записи в Google Sheets или получение сообщения в Telegram.

Так выглядит в n8n триггер (узел, запускающий цепочку действий):

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FQxCqzMaFOQOncNgXH506%2Fimage.png?alt=media&amp;token=dc04b9b4-9d38-4fde-bb36-c794b4477865" alt=""><figcaption></figcaption></figure>

Обратите внимание, что триггер в n8n всегда сопровождается значком ⚡️


# Режимы работы

Эксперт: Артём Снытко

n8n предоставляет возможность тестировать настроенную логику в моменте и сохранять её для полноценного использования. Аналогичная система существует и в Smartbot Pro — вы можете настраивать и менять сценарии, тестировать их, и только после того, как будете уверены, что вы готовы открыть новый вид чат-бота для пользователей, опубликовать сценарий.

* Тестовый режим в n8n = неопубликованная версия сценария в Smartbot Pro
* Продовый режим в n8n = опубликованная версия сценария в Smartbot Pro

## Тестовый режим

Тестовый режим может вам пригодиться для тестирования и настройки вебхука непосредственно в workflow.

Процесс будет выполняться в реальном времени, прямо перед вашими глазами. Для этого:

1. Добавьте еще один узел.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FOKJ9m8SI3EH64x8BcjXA%2Fimage.png?alt=media&amp;token=827cf1f9-7065-4dd7-a64f-90049697c0f9" alt=""><figcaption></figcaption></figure>
2. Для примера можете найти узел “Edit Fields (Set)” и выбрать его.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F4ukrTIdw3IuIkboQA9xX%2Fimage.png?alt=media&amp;token=79e35601-ba01-4e01-8a15-de8ecdfc1cca" alt=""><figcaption></figcaption></figure>
3. Добавьте поле в настройке этого узла.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FYF10ly4xxBoS43Yxm1ld%2Fimage.png?alt=media&amp;token=c0e0feb5-e25d-4f3b-851d-a3f388c1337d" alt=""><figcaption></figcaption></figure>
4. Назовите поле — “success”, а значение поля установите — “true”.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F4zoSMxawPanAHIPHu6An%2Fimage.png?alt=media&amp;token=35f1d773-2ff1-4d9e-a9a2-4aaf704b5b43" alt=""><figcaption></figcaption></figure>
5. Запустите тест.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FGhNhRhVzu0aJlcy2Mh5Q%2Fimage.png?alt=media&amp;token=496c7d8c-a416-42c4-95c3-647cd0efa068" alt=""><figcaption></figcaption></figure>
6. Тестовый режим активирует ожидает запроса на вебхук. Откройте узел Webhook⚡️и скопируйте адрес запроса.

   Вы можете выполнить запрос в отдельной вкладке вашего браузера, если метод запроса GET. Если метод запроса другой, вы можете воспользоваться [Postman](https://www.postman.com) или [Curl](https://curl.se)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FSpBJaknK8SKEIIaZZnHO%2Fimage.png?alt=media&amp;token=43e83f63-4ecd-42c3-915a-581586571833" alt=""><figcaption></figcaption></figure>

   1. Если тест не запущен, адрес запроса также можно найти в настройке Webhook⚡️

      <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FKgN3V8buz9AVurB3HRGA%2Fimage.png?alt=media&amp;token=7645fed6-78f2-4f89-9044-2cefbcec863d" alt=""><figcaption></figcaption></figure>
7. Отправьте запрос к вебхуку.

   Если выполнить запрос во вкладке браузера, вы увидите ответ от n8n.

   В нашем примере n8n возвращает результат последнего узла в workflow.

   В данном случае — Edit Fields.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F31oWCTacEfe4N2BIa0ly%2Fimage.png?alt=media&amp;token=4196a727-a682-41d0-8999-5a85c2897af2" alt=""><figcaption></figcaption></figure>
8. Поменяйте значение поля.

   Так станет более понятно, как это работает.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FnDooUAca2PMBVsRmNFmz%2Fimage.png?alt=media&amp;token=ed41031b-e294-4388-961f-ce02cc75c844" alt=""><figcaption></figcaption></figure>
9. Запустите тест еще раз.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FoskZRhMnq3xnXxYXZGkY%2Fimage.png?alt=media&amp;token=1de38da8-95d7-47f9-b3d1-6bf8d5cd0a23" alt=""><figcaption></figcaption></figure>
10. Отправьте запрос на этот же адрес вебхука и получите уже новый ответ

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FYmvUnZDOTpUsifq3OL05%2Fimage.png?alt=media&amp;token=10f03d15-324f-471b-b2eb-000b0dc6129d" alt=""><figcaption></figcaption></figure>

## Рабочий режим (продовый, production)

Рабочий режим — это отправка вашего workflow в “свободное плавание”.

Вы больше не увидите течение процесса в реальном времени.

Чтобы понять, как проходит процесс, вам нужно будет открыть раздел “Executions” этого workflow.

В разделе “Executions” вы увидите список выполненных workflow (одно выполнение на один сработавший триггер в workflow) в левой части окна n8n.

Нам нужно, чтобы наш триггер сработал, чтобы увидеть его в Executions. Для этого нужно отпарвить запрос на Production URL Webhook⚡️.\\

1. Скопируйте Production URL в настройке вебхука

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FpHb50QKs8vTteJl6rwtT%2Fimage.png?alt=media&amp;token=10a36f17-b4b5-4556-b68d-433c1ef602a5" alt=""><figcaption></figcaption></figure>
2. Активируйте workflow, чтобы n8n принял его в работу.

   Если не активировать workflow — он не будет считаться рабочим, и триггеры не будут запускать процессы.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FnuejoizP58g7rsrdvRtR%2Fimage.png?alt=media&amp;token=82ee069b-fb73-4dee-ba36-8dea29e5a224" alt=""><figcaption></figcaption></figure>
3. При активации workflow  может вылезти окошко с информацией о том, что даёт его активация. В нем описывается, что:

   * Можно отправлять запросы на Production URL Webhook⚡️
   * Выполнение не будет видно, как в тестовом режиме, но можно увидеть результаты выполнений в “Executions”

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FS4Uq8rbVRu26wQ50ZVvY%2Fimage.png?alt=media&amp;token=11361066-f4ac-42d4-a81f-9118e2560945" alt=""><figcaption></figcaption></figure>

   <br>


# Как привязать Telegram бота к n8n

Эксперт: Валентин Литовченко

## Создание бота в Telegram

1. Переходим в бота [BotFather](https://t.me/BotFather)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F6NjrZQslmtPRHfIIq23O%2Fimage.png?alt=media&amp;token=f28801f1-6934-498c-806e-e47381973501" alt=""><figcaption></figcaption></figure>
2. Запускаем бота
3. Выбираем команду **/newbot**
   1. Выбираем имя для нашего бота (можно будет позже изменить)
   2. Выбираем username для нашего бота (позднее изменить будет нельзя!)
   3. Получаим токен, который нам понадобится в дальнейшем

      <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FoCsvW4N6LxLD2Jk9jHAU%2Fimage.png?alt=media&amp;token=52410fc8-a671-4dc2-8853-3b789e43e9ee" alt=""><figcaption></figcaption></figure>

## Привязка Telegram бота к n8n

1. Выбираем нужный блок из раздела **Telegram**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F2dTV6uhl1I9HSgWqTDN4%2Fimage.png?alt=media&amp;token=47a99778-1695-410e-9220-5be4cde5dc2c" alt=""><figcaption></figcaption></figure>
2. Создаем новый **Credential**
3. Вставляем токен, полученный от BotFather, в поле **Access Token**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FPYTGSlupQF3p9O0eWTrn%2Fimage.png?alt=media&amp;token=f8877a1e-e932-4900-8ec2-d023f4c76533" alt=""><figcaption></figcaption></figure>
4. Сохраняем измнения


# Как отключить подпись n8n в ответах Telegram

Эксперт: Валентин Литовченко

1. В ноде **Telegram (Send Message)** выбираем следующее:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FH2xTGQgbkEE2imZPYurM%2Fimage.png?alt=media&amp;token=4ca04fd1-71d7-4029-bdcc-4d0e5ec7b288" alt=""><figcaption></figcaption></figure>
2. Выключаем ползунок:

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FgUojrvln1s0zX0gHgLXB%2Fimage.png?alt=media&amp;token=a5f3160c-0b04-4f58-b50d-8d17d202e341" alt=""><figcaption></figcaption></figure>

Готово! Теперь бот не будет присылать сообщения с подписью :thumbsup:


# Имитация печати в Telegram

Эксперт: Валентин Литовченко

1. Добавляем ноду **Telegram (Send a chat action)**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FnJN8rhQDfRIpTxwPG3D3%2Fimage.png?alt=media&amp;token=50e364da-d020-461c-8b87-badaffc3988a" alt=""><figcaption></figcaption></figure>
2. Перетаскиваем `id` пользователя в поле **Сhat ID**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FJtDWEFmDkcT5Qf3d8VnZ%2Fimage.png?alt=media&amp;token=a4ead670-435c-419a-9cb9-f83e7b86a53f" alt=""><figcaption></figcaption></figure>
3. Теперь бот показывает статус “печатает” перед тем, как отправить ответ

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F8ijBholNA36MUqJW6k30%2Fimage.png?alt=media&amp;token=edfe1470-0d98-4c78-8f35-ac56561bb18b" alt=""><figcaption></figcaption></figure>

## Бот печатает, но ответ не поступает?

{% hint style="success" %}
Если после добавления новой ноды Telegram бот перестал отвечать — скорее всего, **сбились связи между нодами**.
{% endhint %}

1. Заходим в следующую ноду
2. Заново перетаскиваем блоки, из которых мы получали информацию (например, блок `text` для текстовых сообщений и блок `file_id` – для голосовых)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FLKoSLOeXonnLjlgHkQ6s%2Fimage.png?alt=media&amp;token=1a519189-926b-46c7-8519-047320f9bb2d" alt=""><figcaption></figcaption></figure>

Готово! 🙂


# Как привязать Open AI к n8n

1. Переходим по [ссылке](https://platform.openai.com/settings/organization/api-keys)
2. При необходимости регистрируемся в системе
3. Нажимаем кнопку **+ Create new secret key**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fjc8ac3LiIiawwFMmsm3Y%2Fimage.png?alt=media&amp;token=93c5de31-3d28-4c96-83d2-3bd40c0f8b36" alt=""><figcaption></figcaption></figure>
4. При желании присваиваем ему имя (удобно для дальнейшего использования)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FHLEUcrjtVVtnsIGNsABg%2Fimage.png?alt=media&amp;token=d7663d41-e11d-454c-9146-e9c8b6cf208d" alt=""><figcaption></figcaption></figure>
5. Копируем ключ и вставляем его в n8n

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fruh7euljuRDnTV8xB9su%2Fimage.png?alt=media&amp;token=7e6ff3fe-0c68-4f34-8657-ac82d122bf55" alt=""><figcaption></figcaption></figure>


# Тонкая настройка AI агентов

Эксперт: Валентин Литовченко

## Какую модель для каких задач выбрать?

| Задача/Use-case                             | Лучшая модель                                |
| ------------------------------------------- | -------------------------------------------- |
| Простые чат-боты, генерация текста          | OpenAI Chat Model, Mistral Cloud, Groq       |
| Генерация кода, документации                | DeepSeek, OpenAI Chat Model                  |
| Анализ больших текстов, длинных диалогов    | Anthropic Claude, XAI Grok                   |
| Креатив (слоганы, рекламные тексты)         | Mistral Cloud, OpenAI Chat Model             |
| Технические интеграции (Google, AWS, Azure) | Google Gemini, Vertex, AWS Bedrock, Azure AI |
| Корпоративная этика, безопасность           | Anthropic Claude, Azure OpenAI               |
| Быстрая генерация, экономия бюджета         | Groq, OpenRouter                             |
| Локальное, приватное тестирование           | Ollama, OpenRouter                           |

## Подробнее о моделях

| Модель                                            | Для чего подходит                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OpenAI Chat Model (GPT-3.5, GPT-4, GPT-4o и т.д.) | <p>Классическая генерация текста, ответов на вопросы, написание статей, создание резюме, генерация email, простые чат-боты.<br><br>Хорошо работает для обобщённых задач и творческих запросов, быстро реагирует, отлично справляется с диалогами.<br><br><em>Минусы:</em><br><br>Иногда даёт "размытые" или общие ответы, не всегда оптимален для сложных аналитических задач.</p>                  |
| Anthropic Chat Model (Claude)                     | <p>Если нужна высокая "безопасность" и "этичность" ответов (например, корпоративные боты, где важна фильтрация токсичных ответов).<br><br>Большие документы и анализ больших объёмов текста (например, резюме, отчёты, договора).<br><br>Сложные цепочки рассуждений.<br><br><em>Минусы:</em><br><br>Иногда отвечает слишком "обтекаемо".<br><br>Может быть медленнее некоторых других моделей.</p> |
| DeepSeek Chat Model                               | Для технических и исследовательских задач (генерация кода, техническая документация, поиск инсайтов).                                                                                                                                                                                                                                                                                               |
| Google Gemini/Vertex                              | Для интеграции с Google-сервисами и поиска, часто используют для анализа больших данных, поиска новостей и актуальных данных.                                                                                                                                                                                                                                                                       |
| Groq                                              | Для задач, где важна скорость ответа, или когда бюджет ограничен (Grog часто дешевле и быстрее).                                                                                                                                                                                                                                                                                                    |
| Mistral Cloud                                     | Для творческих задач, генерации креативного контента, рекламных идей, лёгких текстов.                                                                                                                                                                                                                                                                                                               |
| Ollama                                            | Если хочется протестировать open-source модели локально или через бесплатные API, иногда для платных решений.                                                                                                                                                                                                                                                                                       |
| XAI Grok                                          | Подходит для задач, связанных с анализом данных, где важна структурированность ответов и поддержка большого количества токенов.                                                                                                                                                                                                                                                                     |
| Azure OpenAI                                      | Для компаний, которые работают в Microsoft-экосистеме или хотят размещать свои данные в облаке Microsoft (безопасность, корпоративные решения).                                                                                                                                                                                                                                                     |
| AWS Bedrock                                       | Для интеграции с AWS, обработки данных и автоматизации в облачной инфраструктуре Amazon.                                                                                                                                                                                                                                                                                                            |
| OpenRouter Chat Model                             | Универсальный шлюз, который позволяет использовать разные модели через единую точку доступа (например, переключаться между разными провайдерами без смены логики бота).                                                                                                                                                                                                                             |

## Подходящие модели для бизнес-кейсов

| Пример                                 | Подходящие модели                                    |
| -------------------------------------- | ---------------------------------------------------- |
| Быстрый ЅММ-контент, рилсы, посты      | OpenAI 4o или Mistral (быстро, креативно)            |
| Анализ длинных диалогов или PDF        | Claude, Grok (обработка больших объёмов текста)      |
| Автоматические письма и ответы на FAQ  | OpenAI, Mistral (диалоговость, краткость)            |
| Кодовые ассистенты, DevOps             | Deepseek (генерация и анализ кода)                   |
| Риски и политика (корп. чат-бот)       | Claude, Azure OpenAI (этика, безопасность)           |
| Экономия бюджета на массовых рассылках | Grog, OpenRouter (минимум затрат, максимум скорости) |


# Как настроить AI в Telegram

Эксперт: Валентин Литовченко

## Что нам потребуется:

1. [Telegram бот](https://docs.nocodecloud.ru/n8n/tgbot)
2. [Искусственный интеллект (от OpenAI)](https://docs.nocodecloud.ru/n8n/openai)
3. n8n

## Настройка логики в n8n

1. Создаём новый Workflow
2. Создаём триггер для запуска.\
   Используем ноду **Telegram Trigger (on message)**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FQ3ssqNSjs1NdDO9e7ySA%2Fimage.png?alt=media&amp;token=fdb203ec-738e-4f4e-8861-326d5bd3f828" alt=""><figcaption></figcaption></figure>
3. Добавляем ноду **AI Agent**

   <div data-full-width="false"><figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FK7qOWnBBp2REyYAa5FX5%2Fimage.png?alt=media&amp;token=71d11a79-ae50-4273-93f4-f4143f587ada" alt=""><figcaption></figcaption></figure> <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FYYSiYakBkRYjQslfeAP5%2Fimage.png?alt=media&amp;token=6a5782e2-ffb8-4817-9856-59a6bb0592eb" alt=""><figcaption></figcaption></figure></div>
4. Выбираем нужную нам модель, в нашем случае — **OpenAI Chat Model**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FUqSahXx6xNCTWlX4aIeY%2Fimage.png?alt=media&amp;token=1daacd29-1fb9-4f59-8138-d30ab5b4e37b" alt=""><figcaption></figcaption></figure>
5. Запускаем наш **Workflow** и отправляем любое сообщение нашему боту
6. Выбираем **Prompt Source**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FnZgugIRe2Lbj2vQrH6Ry%2Fimage.png?alt=media&amp;token=761bed6e-5110-4739-92a3-4594cf765210" alt=""><figcaption></figcaption></figure>
7. Перетаскиваем блок `text`

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FNcSwhTkJWassFN9Svaku%2Fimage.png?alt=media&amp;token=181666c5-60f4-47a8-a2b7-f7a9db596be1" alt=""><figcaption></figcaption></figure>
8. Добавляем **promt** в поле **System Message**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FTBQtCgXdakPPp5MF92wG%2Fimage.png?alt=media&amp;token=c2e1feae-5e8b-4eca-a32c-75890b26679b" alt=""><figcaption></figcaption></figure>
9. Нажимаем **Test step/Execute step**
10. Добавляем ноду **Send Text Message**
11. Указываем **Chat\_id** и **Text**, перетаскивая данные из **AI Agent**. Их можно найти в колонке слева и перетащить в нужное поле, зажав левую кнопку мыши.

    <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FssI4wg7CHhFnYJ9qWZ8T%2Fimage.png?alt=media&amp;token=28efb629-d46d-4efe-aa82-ba96a2279972" alt=""><figcaption></figcaption></figure>

## Тестирование бота

1. Нажимаем **Test Step** и отправляем сообщение боту
2. Если всё сделано правильно — бот ответит сгенерированным текстом

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FIddT3XgUNVjqGRFdXvCp%2Fimage.png?alt=media&amp;token=20d1ec22-0fdd-4020-98cf-f167d0bba004" alt=""><figcaption></figcaption></figure>
3. Для того чтобы наш бот был активен, включаем ползунок

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FBWK0RDmiUbp5nqMzoEot%2Fimage.png?alt=media&amp;token=85ba0692-ac72-4f9d-9b73-e735b7e5d01b" alt=""><figcaption></figcaption></figure>

## Добавление памяти в AI Agent

1. Добавляем ноду **Window Buffer Memory**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FjqykLhVlAjzb8K9XCknn%2Fimage.png?alt=media&amp;token=5780a32a-ec82-4453-8a9b-0cf676945c69" alt=""><figcaption></figcaption></figure>
2. В параметрах ноды можно указать количество последних сообщений, которые будут сохраняться в памяти агента и учитываться при формировании ответа

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FWq2u73pD9BN9HCiAA16f%2Fimage.png?alt=media&amp;token=43690a17-f740-46ea-83c9-9e41470e7a62" alt=""><figcaption></figcaption></figure>

## Как ограничить доступ к боту только для себя

1. Добавляем ноду **If**, чтобы установить фильтр по пользователю

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FxIukJBhqamzQtk8zis4f%2Fimage.png?alt=media&amp;token=b774bc6a-9180-4f81-a4eb-03092cacec48" alt=""><figcaption></figcaption></figure>
2. Перетаскиваем блок `username` в поле **value1**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FGKuimpW6QHMZsUh2A25O%2Fimage.png?alt=media&amp;token=5cc3fa10-ea5e-4b22-9fac-8adf9b00db0b" alt=""><figcaption></figcaption></figure>
3. Вписываем **свой username** в значение поля **value2**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fh41mcVwzhTU16GEsj6GI%2Fimage.png?alt=media&amp;token=db920496-98de-4f05-8197-1db289e01268" alt=""><figcaption></figcaption></figure>

Теперь ответы бота доступны только вам! 🙂


# Как подключить сервисный аккаунт Google

Эксперт: Артём Снытко

Сервисный аккаунт Google имеет главное преимущество для интеграций в том, что с ним не нужно перепривязывать интеграцию несколько раз в неделю, чтобы она не слетала

{% hint style="info" %}
Если у вас ещё нет сервисного аккаунта Google или вы не помните, где найти свой ключ, [воспользуйтесь нашей инструкцией](https://docs.nocodecloud.ru/google/service-account)
{% endhint %}

1. Открываем n8n и создаем в нем новый credential

   <figure><img src="https://storage.mds.yandex.net/get-tfb/16486678/org100176324_attach_42495_1754286314320?ts=00063df49de2620c&#x26;content_type=image%2fpng&#x26;filename=%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202025-08-04%20%D0%B2%2009.44.38.png&#x26;disposition=inline&#x26;sign=6be4b31101f0d2f5270e69aed38b9347a7c08900e6d679d396d93ad63d2ff149" alt=""><figcaption></figcaption></figure>
2. Выбираем "Google Service Account API"

   <figure><img src="https://storage.mds.yandex.net/get-tfb/16398289/org100176324_attach_42496_1754286394348?ts=00063df49f3a6aee&#x26;content_type=image%2fpng&#x26;filename=%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202025-08-04%20%D0%B2%2009.45.58.png&#x26;disposition=inline&#x26;sign=868801d98a20835e75561bf028cdc73ebe2cc06ffca73b70c6c6a3b1d75dbc33" alt=""><figcaption></figcaption></figure>
3. В поле "Private Key" вставляем то, что мы скопировали из файла json при получении сервисного аккаунта Google

   <figure><img src="https://storage.mds.yandex.net/get-tfb/15430363/org100176324_attach_42497_1754286497335?ts=00063df4a048cf97&#x26;content_type=image%2fpng&#x26;filename=%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202025-08-04%20%D0%B2%2009.46.56.png&#x26;disposition=inline&#x26;sign=11425a7821f7d135fb43a0b84053be2e4349a4118612eb4bdd0608a1aec41fa5" alt=""><figcaption></figcaption></figure>
4. Возвращаемся в консоль Google - [  https://console.cloud.google.com/iam-admin/serviceaccounts](https://console.cloud.google.com/iam-admin/serviceaccounts)

   И копируем email сервисного аккаунта

   <figure><img src="https://storage.mds.yandex.net/get-tfb/14651783/org100176324_attach_42498_1754286611315?ts=00063df4a580cc05&#x26;content_type=image%2fpng&#x26;filename=%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202025-08-04%20%D0%B2%2009.49.50.png&#x26;disposition=inline&#x26;sign=0f3c89ca439d92ff13e16380834f13cc67896c9a0c0458b76910fc8db643c022" alt=""><figcaption></figcaption></figure>
5. Возвращаемся в n8n и вставляем его в поле "Service Account Email"

   <figure><img src="https://storage.mds.yandex.net/get-tfb/15230175/org100176324_attach_42499_1754286674123?ts=00063df4a6a615e1&#x26;content_type=image%2fpng&#x26;filename=%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202025-08-04%20%D0%B2%2009.51.01.png&#x26;disposition=inline&#x26;sign=87305945c623f9bd59dbce41effaa2cc5f4b6e68080760e963e7f83b8e88fce7" alt=""><figcaption></figcaption></figure>
6. Сохраняем

   <figure><img src="https://storage.mds.yandex.net/get-tfb/15436565/org100176324_attach_42500_1754286725039?ts=00063df4a7942fe5&#x26;content_type=image%2fpng&#x26;filename=%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202025-08-04%20%D0%B2%2009.51.39.png&#x26;disposition=inline&#x26;sign=cd248e7e489657412ca9e1a1ce97dea188877c6d872967e87cf1f7cbb04d2fbc" alt=""><figcaption></figcaption></figure>

Готово! Теперь можно использовать сервисный аккаунт Google в n8n :thumbsup:


# Импорт и экспорт шаблонов

Эксперт: Артём Снытко

## Импорт шаблона

1. Создаем workflow

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FfwSfM6hZJEqSddTs3Hdq%2Fimage.png?alt=media&amp;token=b415ad26-2afb-463a-ab1f-cb89efbedbce" alt=""><figcaption></figcaption></figure>
2. Нажимаем на три точки справа сверху

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FCV85x5xDjCWKizecPXaJ%2Fimage.png?alt=media&amp;token=3b2a79a8-b663-43de-8812-bfbb494a2c4e" alt=""><figcaption></figcaption></figure>
3. Выбираем **Import from File**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FpZuXX8odW7irdkFhjz7m%2Fimage.png?alt=media&amp;token=f0198d56-3741-4883-ab9b-a90cd2008dc1" alt=""><figcaption></figcaption></figure>
4. Выбираем файл с шаблоном

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fx5HMfjnBkVaLuz3FUN8j%2Fimage.png?alt=media&amp;token=e313374f-116f-4c7f-a5a3-18a0e003f310" alt=""><figcaption></figcaption></figure>
5. Шаблон импортирован

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FuQl27s3tFwObPpHSsCfw%2Fimage.png?alt=media&amp;token=67067088-37e9-40e6-9db8-b46ce7493c20" alt=""><figcaption></figcaption></figure>

## Экспорт шаблона

1. Нажимаем три точки справа сверху

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F2ljecRWRpyHn0zJsbUV8%2Fimage.png?alt=media&amp;token=9bef620d-192a-44b9-a2d0-4018917bcb2c" alt=""><figcaption></figcaption></figure>
2. Выбираем **Download**

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fqt9I8vIQ1bLKGkBHEgr2%2Fimage.png?alt=media&amp;token=3cb495e1-e317-47f2-9aac-383ac6b2cf39" alt=""><figcaption></figcaption></figure>
3. Шаблон загружен

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FPymNDetCd1WYzfuR06IN%2Fimage.png?alt=media&amp;token=e1239bdf-bdde-468f-8def-b95900da79d4" alt=""><figcaption></figcaption></figure>


# Что такое NocoDB

[NocoDB](https://nocodb.com) — это мощный инструмент, который позволяет пользователям без опыта программирования создавать базы данных и управлять ими в виде таблиц. Он работает по принципу "ноукод", что означает, что для работы с ним не требуется знание языков программирования. С помощью NocoDB можно легко интегрировать различные источники данных, такие как Google Sheets или MySQL, и превращать их в полноценные веб-приложения.

Использование NocoDB в рамках конструктора чат-ботов позволяет создавать интерактивные и адаптивные решения для общения с клиентами. Благодаря простому интерфейсу и возможности визуального моделирования пользователи могут легко настраивать логику взаимодействия бота, управлять данными и интегрировать различные API. Это значительно упрощает процесс разработки, позволяя сосредоточиться на функциональности и пользовательском опыте, а не на технических деталях. Таким образом, NocoDB становится незаменимым инструментом для создания современных чат-ботов без необходимости глубоких технических знаний.

Кроме того, значимое преимущество NocoDB поддерживает более 20 rps, что позволяет ему качественно работать даже в условиях высоких нагрузок.

Если вам нужно наладить процессы, которые требуют работы с базой данных и выходят за рамки переменных, вы можете использовать NocoDB и Smartbot Pro в мощной связке. А установить NocoDB вы можете буквально [за 3 минуты с помощью Nocode Cloud](https://docs.smartbotpro.ru/nocode-cloud/korotko-o-glavnom/kak-podklyuchit-nocode-instrument).


# Swagger


# Основы и авторизация

Swagger — это инструмент, который помогает разработчикам создавать, документировать и тестировать API (интерфейсы программирования приложений). Он автоматически генерирует описание для каждого ресурса в REST API, показывая доступные методы, параметры запросов и возвращаемые данные. Это делает документацию понятной как для людей, так и для машин, что упрощает взаимодействие между различными системами. Swagger позволяет разработчикам легко видеть структуру API и тестировать его методы прямо в браузере, что значительно ускоряет процесс разработки.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FksRaISb4s4JTYtiSUooQ%2Fimage.png?alt=media&amp;token=994de124-2582-4682-a79c-b9b09e43c621" alt=""><figcaption></figcaption></figure>

Основная ценность Swagger заключается в его интерактивности и удобстве. С помощью Swagger UI пользователи могут не только просматривать документацию, но и отправлять тестовые запросы к API, получая мгновенные ответы. Это позволяет быстро проверять работоспособность методов и проводить отладку. Благодаря своей популярности, Swagger стал стандартным инструментом для работы с API и используется разработчиками, тестировщиками и аналитиками для упрощения процессов создания и поддержки программных интерфейсов.

{% hint style="info" %}
Тестовые запросы к API выполняются не в тестовой среде, а в реально существующих таблицах.

Поэтому их также можно воспринимать как ручные манипуляции с данными.

Если в результате теста в ваших таблицах появятся ненужные данные, их также можно удалить или изменить обратно, используя тестовые запросы, либо прямо в интерфейсе NocoDB.
{% endhint %}

## Как открыть Swagger

Чтобы открыть Swagger в NocoDB, нужно в левой панели навести курсор мыши на любую базу, затем нажать на “…” и выбрать “Swagger: REST APIs”.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FyiCAP1znVKCP7XZ2eMYW%2Fimage.png?alt=media&amp;token=ad4c7845-6329-4d90-aa08-e4c775af6608" alt=""><figcaption></figcaption></figure>

## API Token и авторизация в Swagger

Чтобы делать запросы в Swagger и не только (например, [HTTP-запросы](https://docs.smartbotpro.ru/scenarii/integracii/http-zaprosy)), в заголовках нужно указывать данные авторизации.

1. В NocoDB в левой панели откройте раздел “Team & Settings”.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FkD0GfH8ZStyJK64alCWs%2Fimage.png?alt=media&amp;token=23e2c5b3-3aeb-4700-a03c-31e4ce8f3763" alt=""><figcaption></figcaption></figure>
2. В “Tokens” нажмите “Create new token”.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FybITfgs8a752hDFRKL9g%2Fimage.png?alt=media&amp;token=a7c892d8-494c-4cc3-aa19-7e03dbf51a2a" alt=""><figcaption></figcaption></figure>
3. Введите любое название токена и создайте его.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FrCm1JgiIIqv4aEfoaTwY%2Fimage.png?alt=media&amp;token=db155fce-0d5e-4cee-8cd4-70ee99c85840" alt=""><figcaption></figcaption></figure>
4. Скопируйте токен.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F3sV545C8tbZKBUZeGziT%2Fimage.png?alt=media&amp;token=d28feae9-723f-4fee-8232-7ff0ef8fe361" alt=""><figcaption></figcaption></figure>
5. Вернитесь в Swagger и нажмите “Authorize”.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FMCzB19FS9R9DhXDtVUUs%2Fimage.png?alt=media&amp;token=8c50bb6c-d60b-4df8-9fc1-377dbf9ab06a" alt=""><figcaption></figcaption></figure>
6. Вставьте токен и снова нажмите “Authorize”.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FvtuUmrU6G1DtNr0czqdt%2Fimage.png?alt=media&amp;token=e0d1dd1b-96d8-4cf8-b226-49b8bb00404d" alt=""><figcaption></figcaption></figure>
7. Если в окошке авторизации появилась надпись “Authorized”, значит, вы успешно авторизованы.

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F4oe94zQ38acgJNVh1xmf%2Fimage.png?alt=media&amp;token=e314d962-6f81-46ae-be98-53053bb1070b" alt=""><figcaption></figcaption></figure>


# Как отправлять запросы

## Обзор интерфейса

{% hint style="info" %}
Все примеры показаны с [авторизованным](https://www.notion.so/Swagger-9cf3b04436ec4d5eb73eb2de84975a49?pvs=21) Swagger
{% endhint %}

В Swagger основной функциональной единицей является HTTP-запрос, который также называют конечной точкой, ручкой, маршрутом.

В NocoDB запросы группируются по таблицам.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FC32bdDijUrH50PVEcCgN%2Fimage.png?alt=media&amp;token=7026c17a-7cf1-40a7-8a1d-a0d91e18ec9f" alt=""><figcaption></figcaption></figure>

## HTTP-запрос

Чтобы поработать с запросом, нужно его развернуть. Для этого достаточно нажать на него:

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FCruG6wOguE83wQUFySoi%2Fimage.png?alt=media&amp;token=740749f9-4d17-4176-83c4-60fe38e341e5" alt=""><figcaption></figcaption></figure>

### Описание запроса

Каждый запрос имеет описание того, какой функционал он предоставляет.

Оно находится в самом начале:

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FrkvKWUqG7cl22XnrCFU8%2Fimage.png?alt=media&amp;token=e562cf98-2ee0-4650-a9c0-3d67098edac8" alt=""><figcaption></figcaption></figure>

### Try it out

Чтобы начать тестировать запрос, нужно нажать кнопку “Try it out”.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F0GY1Iy1vkTqGfieKD0x5%2Fimage.png?alt=media&amp;token=eda28572-8fab-4337-94e6-95696fec91dc" alt=""><figcaption></figcaption></figure>

Убедитесь, что “замок закрыт”, - это значит, что вы авторизованы. В противном случае, вам следует авторизоваться в Swagger.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FmJyLKyVbbf12LYYulnxv%2Fimage.png?alt=media&amp;token=71dcbfeb-1e20-426c-b770-2902744401f0" alt=""><figcaption></figcaption></figure>

После нажатия на “Try it out”:

* станут доступными поля ввода параметров и/или тела запроса.

  <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FZYlUrD21Q4faxax9KMSQ%2Fimage.png?alt=media&amp;token=b6a18545-84be-47bd-b20c-daeadfe00819" alt=""><figcaption></figcaption></figure>
* появится кнопка “Execute”, нажатие которой означает выполнение запроса с введенными параметрами.

  <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FVrwRozwOu7zLEYlX3ps9%2Fimage.png?alt=media&amp;token=abd68551-93d6-4eb1-a913-4037288cb076" alt=""><figcaption></figcaption></figure>

### Параметры запроса

Параметры запроса всегда передаются в URL в самом конце после “?” и разделяются “&”, например:

```jsx
...tables/m6uv6qopcq4layy/records**?limit=25&shuffle=0&offset=0**
```

Каждый отдельный параметр имеет название:

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fvhg0uGxPJaRQd073sg1p%2Fimage.png?alt=media&amp;token=63804bcd-38a6-4bd4-aac9-2b27cf3fb99a" alt=""><figcaption></figcaption></figure>

И описание:

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FYJQ5L8BqkXac5STA7aNI%2Fimage.png?alt=media&amp;token=103fd718-5ea4-47ad-9818-af98c59c2faa" alt=""><figcaption></figcaption></figure>

Параметры всегда являются строкой, которую вы можете указать при тестировании в соответствующее поле:

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FpSQQvMngLo3I1XFAtuMW%2Fimage.png?alt=media&amp;token=e33b92c0-1041-4fef-a7dc-ba770be4af9d" alt=""><figcaption></figcaption></figure>

Иногда параметр может быть выбран из ограниченного списка вариантов в Swagger (но в запросе параметр указывается так же, как и другие):

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FwlsV2xfYpBbX2JqAc2VG%2Fimage.png?alt=media&amp;token=b336f8af-830e-4208-8634-b29b0895ae35" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FVzl0BY0qw7gUNdBnxgLg%2Fimage.png?alt=media&amp;token=94bb827d-6470-48b0-b0f4-0537a50cdfa4" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FvtUPVmigMbeZP59hKzwo%2Fimage.png?alt=media&amp;token=932f6028-fc02-432d-b601-cb1b54902268" alt=""><figcaption></figcaption></figure>

## Шаблон запроса Curl

{% hint style="info" %}
Можно увидеть только после нажатия “Execute”
{% endhint %}

Этот шаблон удобно копировать, чтобы использовать в других инструментах разработчиков и тестировщиков ( [Curl](https://curl.se), [Postman](https://www.postman.com) ), но для связки с Smartbot Pro и NocoDB он не обязателен.

{% hint style="info" %}
При этом его удобно использовать в связке с n8n (<и сюда надо ссылку на доку n8n про импорт Curl>)
{% endhint %}

### Шаблон URL запроса

{% hint style="info" %}
Можно увидеть только после нажатия “Execute”
{% endhint %}

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

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FCR3B1pBxOgzlOepemmfs%2Fimage.png?alt=media&amp;token=379f8394-68b5-4040-8eb6-f1e78ab6c0b8" alt=""><figcaption></figcaption></figure>

### Лайфхак с urlencoded

Обратите внимание, что при запросе в примере передается параметр:

```jsx
where=%D0%BB%D1%8F%D0%BB%D1%8F%D0%BB%D1%8F
```

Эти непонятные символы не что иное, как `“ляляля”`.

На самом деле, не обязательно отправлять запрос в таком формате в блоке “Отправить HTTP-запрос”.

Smartbot Pro автоматически преобразует URL в urlencoded формат.

Для того, чтобы URL в сценариях был более читаем, вы можете преобразовать полученный URL при помощи [декодера](https://www.urldecoder.org).

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FbMvLaeJTjaJpAMVQxDhT%2Fimage.png?alt=media&amp;token=98f3376c-4289-44cf-94c9-acc501408a4d" alt=""><figcaption></figcaption></figure>

### Server response

{% hint style="info" %}
Можно увидеть только после нажатия “Execute”
{% endhint %}

Показывает всю информацию, полученную из ответа от сервера (API).

Code - [код статуса ответа](https://developer.mozilla.org/ru/docs/Web/HTTP/Status) от сервера.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FlGOH72iPfPiXkwwpBnOd%2Fimage.png?alt=media&amp;token=eb42998a-5ab3-4c32-a4d2-a5fddec87041" alt=""><figcaption></figcaption></figure>

Response body - тело ответа.

В NocoDB API при любых типах запросов возвращает JSON.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fsy0HBQvpVGJobcnIlpbH%2Fimage.png?alt=media&amp;token=8bf66bef-4126-426a-b8bd-e242c3ac5601" alt=""><figcaption></figcaption></figure>

### Responses

В этом разделе изображаются примеры ответов от сервера с различными статусами.

Стоит отметить, что количество примеров не исчерпывающее, обычно ограничивающееся 200 и 400, но эти примеры все равно могут пригодиться для:

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

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FJaEytWT2i7hbA7Ytr818%2Fimage.png?alt=media&amp;token=3476ce2d-2785-4985-9a8f-71ea11b4808f" alt=""><figcaption></figcaption></figure>

## Схемы данных

В самом низу Swagger есть раздел  Schemas. Он может быть полезен для понимания, какие поля таблицы (столбцы) какого типа данных.

Для примера, поле Id, обязательное при запросах PATCH, PUT, DELETE, а также GET-запросе конкретной строки из таблицы, имеет тип “integer”, что значит, что это именно целое число, а не строка, дробное число или другой тип.

<figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FPfnLEflbGP2HqOS9Xiz1%2Fimage.png?alt=media&amp;token=f24b8caf-c385-48f9-a366-331db3c577bf" alt=""><figcaption></figcaption></figure>


# Как настроить сервисный аккаунт Google

Эксперт: Артём Снытко

Сервисный аккаунт Google имеет главное преимущество для интеграций в том, что с ним не нужно перепривязывать интеграцию несколько раз в неделю, чтобы она не слетала

## Если ещё нет проекта в Google Cloud

1. Открываем Google консоль по ссылке: [https://console.cloud.google.com](https://console.cloud.google.com/iam-admin/serviceaccounts)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FauJm6EvStky7tgbgdUsF%2Fimage.png?alt=media&amp;token=4049d5e2-6805-4a35-9679-1ca08994a287" alt=""><figcaption></figcaption></figure>
2. Нажимаем "Select a project" слева сверху

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fv73ck8CXIwbgeyWTA1pI%2Fimage.png?alt=media&amp;token=900f2947-59ff-4eeb-b60d-39f844c8ec55" alt=""><figcaption></figcaption></figure>
3. Нажимаем "New project"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FWfxLorAnMmrTo9t5YEat%2Fimage.png?alt=media&amp;token=524aa2c2-e2fc-44a8-b06d-57e4507f8a0c" alt=""><figcaption></figcaption></figure>
4. Придумываем название и нажимаем "Create"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fj4vmZtXGEHeqOZelj939%2Fimage.png?alt=media&amp;token=4bae1e2b-3821-49b7-9550-5dcabb83c61c" alt=""><figcaption></figcaption></figure>
5. Снова нажимаем "Select a project" слева сверху, затем выбираем наш проект, нажав на него

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fsz0gfekn8udqspW0WRw7%2Fimage.png?alt=media&amp;token=4108a767-42a6-4d8d-abba-789f6be903fa" alt=""><figcaption></figcaption></figure>
6. Открываем боковое меню

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FP5lrq7dcjCV0WLbe4Tol%2Fimage.png?alt=media&amp;token=29e886d9-85a5-415d-99e1-0a7f94b2aed4" alt=""><figcaption></figcaption></figure>
7. Открываем IAM & Admin > Service Accounts

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FtJmEBeWqnTuzsaF5ovS1%2Fimage.png?alt=media&amp;token=7429afa2-7c5c-4c3e-9df7-37c3192cef30" alt=""><figcaption></figcaption></figure>
8. Переходим к следующему разделу инструкции

## Если уже есть проект в Google Cloud

1. Открываем Google консоль, а именно панель работы с сервисными аккаунтами, по ссылке: [https://console.cloud.google.com/iam-admin/serviceaccounts](< https://console.cloud.google.com/iam-admin/serviceaccounts>)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fq0wx0zPAsAED2B3m4GXu%2Fimage.png?alt=media&amp;token=37c2682e-e656-4dfc-b75a-2ab6e454149e" alt=""><figcaption></figcaption></figure>
2. Выбираем приложение (проект), для которого хотим создать сервисный аккаунт

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FU2r2s5QUjuMFWDDFn928%2Fimage.png?alt=media&amp;token=ff1bd61e-6815-4764-9ccb-d9fe5c8c8d47" alt=""><figcaption></figcaption></figure>
3. Создаем новый сервисный аккаунт

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2Fn0nvTOS8LnhWnDrGctYV%2Fimage.png?alt=media&amp;token=646dcfc1-b7b2-4693-9d3e-ac549a654616" alt=""><figcaption></figcaption></figure>
4. Вводим название аккаунта, он будет выглядеть, как gmail почта, например:

   ```
   <название аккаунта>@<приложение>.iam.gserviceaccount.com
   ```

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FwvgSzv83WuOiGZmCMyJr%2Fimage.png?alt=media&amp;token=25badeb9-00e8-48b7-9476-a9dcb15a69ab" alt=""><figcaption></figcaption></figure>
5. Нажимаем "Create and Continue"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FsofjMbXl7ZNqK7gTB75X%2Fimage.png?alt=media&amp;token=9f8268fb-6745-46c1-906a-bbd13c9e5dca" alt=""><figcaption></figcaption></figure>
6. Нажимаем "Continue"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FkdexoHXr1UpjT5aj34yg%2Fimage.png?alt=media&amp;token=a5a38f65-35f2-47c6-aa56-c6d717998dd6" alt=""><figcaption></figcaption></figure>
7. Нажимаем "Done"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FVoq1yLgmnb1KqrsFzVj4%2Fimage.png?alt=media&amp;token=3281e447-dee4-43ac-93a8-b10c217e2df1" alt=""><figcaption></figcaption></figure>

## Получение кредитов от аккаунта

1. Находим созданный аккаунт в списке, справа нажимаем три точки и выбираем "Manage keys"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FI9aB0n5EbuQEcg7SOWtF%2Fimage.png?alt=media&amp;token=c2d011bb-40a7-4e97-8558-f3bf69ff48fb" alt=""><figcaption></figcaption></figure>
2. Нажимаем "Add key" и выбираем "Create new key"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FsEvUj8hwFYJ2jbQzqIoV%2Fimage.png?alt=media&amp;token=5b0c9739-9eb5-44cc-9a13-7192f74f5bf2" alt=""><figcaption></figcaption></figure>
3. Нажимаем "Create"

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2FrWRoQ4vWWDoM8ClanPZP%2Fimage.png?alt=media&amp;token=b1e15763-6ec6-44dd-99f0-50e602e52322" alt=""><figcaption></figcaption></figure>
4. Файл сохранится на ваш компьютер

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F8TVTl6abE9KcGrgT3IC5%2Fimage.png?alt=media&amp;token=f4330a51-ca2d-481e-9479-080502dfaa0b" alt=""><figcaption></figcaption></figure>
5. Открываем этот файл в любом удобном редакторе (на скрине cursor)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F5tMPJzm96ckCp4Q8QMl2%2Fimage.png?alt=media&amp;token=c6301710-602b-4abc-9c2f-285ad7fdeda5" alt=""><figcaption></figcaption></figure>
6. Копируем значение из private\_key (которое очень длинное)

   <figure><img src="https://3293471040-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpmSoFQGl5UWE6cvo4nGS%2Fuploads%2F38OqfW1PVqWf3Et2ZX4Y%2Fimage.png?alt=media&amp;token=a27173f5-45f2-47c4-a1f2-2194d235a38b" alt=""><figcaption></figcaption></figure>
7. Готово! Теперь можно использовать его для настройки интеграций :thumbsup:


