Подключите AI-агента к любому API без кода

Piotr Grudzień
Опубликовано Обновлено Время чтения: 18 мин
Подключите AI-агента к любому API простым языком: одна введенная фраза превращается в проверенное, документированное API Action

Конструктор API Action в Quickchat AI подключает вашего AI-агента к REST API на основе одного предложения, написанного простым языком. Вы описываете API, который хотите вызвать, например «проверить статус доставки заказа и сообщить клиенту, когда он прибудет», а LLM с веб-поиском читает актуальную документацию этого API и собирает полное рабочее действие, заполняя метод, URL, заголовки, параметры и описание, которое сообщает вашему агенту, когда его использовать. Он ссылается на документацию, которую прочитал, а когда не может подтвердить реальный endpoint, сообщает об этом вместо догадок.

В этом руководстве мы создадим два работающих действия из двух введенных предложений, на бесплатном аккаунте, и подтвердим оба реальными вызовами, записанными в Inbox. По ходу мы объясним, что вызов API фактически делает для вашего агента и что такое «function calling», механизм, на котором работает эта функция.

Все, что описано ниже, было создано и протестировано на реальном агенте. Каждый скриншот, сгенерированное поле и вызов API взяты из этого примера, и вы можете воспроизвести все это.

Путешественник спрашивает о погоде в Интерлакене, и агент Wanderlark отвечает актуальными данными прогноза Готовый результат: путешественник спрашивает о выходных, агент вызывает погодный API по ходу разговора и отвечает актуальными цифрами.

При замене существующей GPT Action используйте чек-лист переноса Actions пользовательского GPT, чтобы сохранить endpoint, требования к аутентификации и тестовые сценарии перед ее повторным созданием здесь.

Полный пример с двумя Actions показывает, как создать помощника для Chess.com, который находит вашу последнюю партию и разбирает реально сделанные ходы.

Что вы создадите

Агента поддержки для Wanderlark Tours, вымышленного оператора альпийских походов в малых группах, который отвечает на основе своих знаний и вызывает два реальных API по ходу разговора. Создание обоих действий, их тестирование и просмотр реальных вызовов занимают около пятнадцати минут:

  1. Запрос прогноза погоды через Open-Meteo, созданный из одного предложения. Без ключа, поэтому для завершения нужен только аккаунт Quickchat.
  2. Astronomy Picture of the Day от NASA через api.nasa.gov, для дополнения Wanderlark по наблюдению за звездами. Для него нужен API-ключ, поэтому он здесь: он показывает процесс с заполнителем [[secret]], где активация остается заблокированной, пока вы не вставите ключ.

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

Что вам нужно:

  • Бесплатный аккаунт Quickchat AI (зарегистрироваться здесь).
  • Без кода и без сервера. Для второго действия нужен API-ключ NASA: NASA поддерживает общий DEMO_KEY с лимитом запросов для тестирования, он используется на скриншотах, и мгновенно выдает личные ключи на api.nasa.gov.

Что значит, что AI-агент вызывает API?

Агент, который может вызывать API, может получать или изменять данные в реальных системах по ходу разговора, а затем отвечать с учетом результата. Чат-бот может описывать ваш бизнес; агент, который вызывает API, может действовать в нем.

Со стороны конечного пользователя ничего не меняется, кроме ответа. Путешественник спрашивает, какая будет погода в Интерлакене в субботу, и пару секунд видит индикатор набора текста, а затем ответ с фактическими температурами. Он не видит инструмент, запрос или JSON-данные. Эти две секунды между вопросом и ответом выглядят так:

Временная шкала, показывающая, что видит путешественник, и невидимые шаги: модель выбирает действие, заполняет значения, Quickchat отправляет HTTP-запрос, а ответ агента строится на данных API Путешественник видит вопрос и ответ. Между ними модель выбрала действие, заполнила значения, и Quickchat сделал реальный HTTP-запрос: 280 мс из примерно двух секунд.

Вы даже можете настроить, что посетитель видит во время этой паузы. Каждое действие может содержать thinking message, короткую строку, которую виджет сайта показывает вместо стандартного «Thinking…» во время выполнения вызова. Действие прогноза Wanderlark задает такую строку, поэтому именно это путешественник видит в эти две секунды:

Виджет сайта во время вызова, с вопросом посетителя и пользовательским thinking message «Checking the live forecast for you...» Вид со стороны путешественника во время вызова: пользовательская строка обдумывания мерцает там, где скоро появится ответ. Вы зададите эту строку в редакторе действия позже.

Все это не относится только к погоде. Любая система, предоставляющая HTTP API, может быть на другом конце действия: ваша база заказов, система бронирования, CRM, тикетная система, платформа для обмена сообщениями. Запросы чтения отвечают на вопросы актуальными данными; запросы на запись что-то меняют и оставляют след в системе.

Двенадцать примеров действий в два ряда: запросы чтения, такие как статус заказа, уровень запасов, погода, обменный курс, статус рейса и отправление, и операции записи, такие как создание тикета, бронирование слота, уведомление Slack, контакт CRM, начало возврата и вызов человека Каждая плитка — это один описанный HTTP-запрос. В этом руководстве мы создадим два запроса чтения; паттерны записи рассмотрены в руководствах по ссылкам в конце.

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

Как работает конструктор действий на естественном языке?

Вы описываете API одним предложением, а LLM с веб-поиском в реальном времени превращает это предложение в полное действие. Он ищет по документации API во время генерации, составляет метод, URL, заголовки, query-параметры и описание, которое сообщает вашему агенту, когда вызывать действие, и возвращает результат со ссылками на страницы документации, которые прочитал. Генерация занимает около полминуты, и результат открывается в диалоге, когда готов.

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

Три свойства делают его безопасным в использовании:

  • Ничего не запускается, пока вы не активируете действие. Каждое сгенерированное действие создается выключенным, чтобы вы его проверили.
  • Неизвестные значения становятся заполнителями, а не догадками. Значения, которые модель должна заполнять при каждом вызове (дата, город), становятся пропусками {{param}}; константы, которые знаете только вы (API-ключ), становятся пропусками [[secret]], и активация блокируется, пока вы их не замените.
  • Он показывает свою работу. Результат перечисляет страницы документации, которые он прочитал, каждая с примечанием о том, что эта страница подтвердила, поэтому проверка начинается с доказательств, а не с доверия:

Раздел Sources в диалоге результата: страница документации Open-Meteo и раздел документации, каждый со ссылкой и примечанием о том, что он подтвердил Ссылки на источники из второй генерации того же предложения о погоде, которое используется далее в этом руководстве: страница документации и ее API-разделы, каждый с тем, что конструктор там подтвердил.

Шаг 1: Создайте туристического агента

Сначала создайте агента, чтобы действиям было к чему принадлежать. После регистрации назовите агента (в этом примере используется Wanderlark) и задайте ему задачу в поле AI Main Prompt в разделе Identity панели управления:

Вы помощник Wanderlark Tours, оператора альпийских походов в малых группах. Wanderlark проводит три тура с гидом: Interlaken Classic, Zermatt Highline и Dolomites Traverse, а также дополнение Dark-Sky Nights для наблюдения за звездами. Помогайте путешественникам выбирать тур, понимать даты, цены, сложность и что взять с собой, а также отвечайте на вопросы о бронировании и отмене. Будьте доброжелательны, практичны и кратки, держите ответы короткими.

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

Затем добавьте несколько фактов в Knowledge Base, чтобы ему было из чего отвечать. В демо используются пять коротких статей (туры и цены, дополнение Dark-Sky Nights, бронирование и отмена, снаряжение, места встречи); полный текст есть в блоке для копирования в конце. Мы расширим этот промпт двумя строками, связанными с действиями, после создания действий. Если вам нужен разбор промптов и базы знаний с нуля, в основном рецепте по ссылке ниже все это разобрано шаг за шагом.

Шаг 2: Опишите API одним предложением

В боковой панели откройте Actions & MCPs, нажмите Add Action и выберите API Action, первый пункт в меню.

Меню Add Action на странице Actions, где API Action является первым пунктом Пользовательские действия находятся в Actions & MCPs. Пункт API Action открывает диалог описания.

Открывшийся диалог просит описать API, который должно вызывать это действие, и назвать endpoint или дать ссылку на его документацию. Вот точное предложение для действия погоды:

Получите ежедневный прогноз погоды для места из Open-Meteo API (документация: https://open-meteo.com/en/docs), чтобы, когда путешественник спрашивает, какая будет погода в одном из наших направлений, агент мог ответить реальными температурами и вероятностью дождя для запрошенных дней.

Диалог API Action с предложением о погоде, введенным в поле описания Одно предложение: какой API, ссылка на документацию, когда агент должен его использовать и что он должен сделать с результатом.

В этом предложении есть три вещи, нужные хорошему описанию:

  1. Конкретный API, endpoint или URL документации. «Open-Meteo API» плюс ссылка на документацию дает конструктору что-то реальное для чтения. Без этого вы получите отказ вместо действия.
  2. Когда агент должен его использовать. «Когда путешественник спрашивает, какая будет погода» почти дословно попадает в описание, которое позже запускает действие.
  3. Что делать с результатом. «Ответить реальными температурами и вероятностью дождя» определяет, как агент использует ответ API.

Поле принимает до 500 символов, что больше, чем нужно хорошему описанию; каждое предложение в этом руководстве помещается с большим запасом.

Нажмите Submit. Диалог закрывается, всплывающее уведомление сообщает, что действие готовится, и примерно через полминуты диалог результата открывается сам:

Анимация ввода предложения, отправки и появления диалога результата Весь процесс в реальном времени, с сокращенным ожиданием: описать, отправить и проверить результат.

Что внутри сгенерированного действия?

Диалог результата — это экран для проверки. Слева — карточка предпросмотра нового действия, ровно как оно появится на странице Actions. Справа — Details: конструктор объясняет, что он построил, какие значения модель заполняет во время выполнения и какие допущения сделал, если в вашем предложении что-то осталось неуточненным. Ниже — Sources: документация, которую он прочитал, в виде ссылок.

Диалог результата для действия погоды с карточкой предпросмотра и объяснением Details Конструктор объясняет свою работу поле за полем. При прокрутке диалога раздел Sources перечисляет, что он прочитал для этого действия: страницу документации Open-Meteo и спецификацию OpenAPI проекта на GitHub, каждая с примечанием о том, что она подтвердила.

Для предложения о погоде конструктор сгенерировал действие с именем get_open_meteo_daily_forecast (имена конструктора выглядят так, будто их написал инженер; вы можете переименовать в редакторе). Нажмите Edit Action на карточке предпросмотра, чтобы увидеть все поля, которые он заполнил:

Редактор действия, показывающий сгенерированное имя, таблицу параметров и поля API endpoint Все, что есть у действия, созданного вручную, уже заполнено: имя, таблица параметров в разделе «What to ask the user first» и endpoint.

Читаем сверху вниз:

  • API Action Name: имя инструмента, которое видит модель.
  • What to ask the user first: таблица параметров. Конструктор объявил семь параметров, каждый с типом и описанием: latitude, longitude, timezone, start_date, end_date, плюс необязательные единицы измерения. Это значения {{param}}, которые модель заполняет при каждом вызове. Обратите внимание, чего здесь нет: параметра «city». Конструктор подключил endpoint так, как реально работает Open-Meteo, по координатам, и оставил географию модели. Через минуту мы увидим, как она правильно заполнит эти координаты.
  • API Endpoint: GET https://api.open-meteo.com/v1/forecast, с подключенными query-параметрами. Фиксированные значения остаются литералами, например список daily переменных прогноза, который выбрал конструктор; значения, заполняемые моделью, отображаются как цветные чипы {{...}}.

Раздел API Endpoint с методом GET, URL и query-параметрами, где смешаны фиксированные значения и чипы параметров Фиксированные части остаются фиксированными; цветные чипы — это пропуски, которые заполняет модель. Чипы — это собственная легенда интерфейса о том, откуда что берется.

Четвертая вкладка редактора endpoint, Test Response, выполняет реальный запрос до того, как действие встретит посетителя. У каждого параметра есть поле «Your test value»; заполните его правдоподобными значениями, нажмите кнопку play («Test the API»), и вернется фактический ответ с кодом состояния. Переключатель Show cURL показывает, в формулировке интерфейса, «the exact HTTP request that would be triggered when this AI Action runs with these parameters». Вот тест из этого примера, снова с координатами Интерлакена:

Вкладка Test Response после запуска: JSON-ответ с бейджем 200 Ok и раскрытый блок cURL, показывающий запрос со всеми подставленными значениями Реальный ответ 200 от Open-Meteo, полученный прямо в редакторе, с полностью раскрытым запросом под ним. Проверьте, протестируйте, затем активируйте.

  • API Action Description: предложение, которое решает, когда агент обращается к этому действию. Конструктор составил его на основе вашей фразы «когда путешественник спрашивает». Во время работы агента это поле важнее всех остальных, и его стоит настраивать первым, если агент когда-либо запускает действие не в тот момент.
  • Thinking message: строка, которую видит путешественник, из более ранней временной шкалы. Редактор описывает ее как «a thinking preloader that will be displayed to the user when this action is invoked»; действие прогноза Wanderlark задает ее как «Checking the live forecast for you…».

Действие создано выключенным. Откройте его в редакторе, и Quickchat покажет баннер, что действие выключено, с кнопкой Enable; или переключите тумблер на его карточке на странице Actions. Поскольку для этого действия ничего не нужно было заполнять, оно активируется сразу.

Баннер редактора, сообщающий, что это Action выключено, с кнопкой Enable Сначала проверка, затем включение. Ничто ничего не вызывает, пока вы это не сделаете.

Если вы предпочитаете создать это же действие вручную, поле за полем, и досконально разобраться в каждом поле, вот базовое руководство: Создайте бесплатного AI-агента, который выполняет действия. Конструктор и ручной редактор создают один и тот же тип действия; эта статья описывает путь с автоматической генерацией.

Шаг 3: Протестируйте и посмотрите, как происходит вызов

Задайте агенту вопрос, который должен запустить действие. Приведенные здесь диалоги были проведены через тестовый пайплайн Quickchat и записаны в Inbox как любой разговор; в вашем аккаунте панель AI Preview в боковой панели позволяет сделать то же самое прямо в браузере.

Тестовое сообщение:

Привет! Мы идем на Interlaken Classic в следующие выходные. Какая будет погода в Интерлакене в субботу 25 июля и воскресенье 26 июля?

Агент ответил реальным прогнозом: около 27,7°C и почти без дождя в субботу, прохладнее и, вероятно, до 18 мм дождя в воскресенье, плюс совет о том, что взять с собой, из его базы знаний.

Подтверждение находится в Inbox. Под ответом агента есть маркер «1 action called»; раскройте его, и вы получите полную запись того, что произошло:

Раскрытая карточка вызова действия, показывающая имя действия, HTTP 200, 280 ms, каждый заполненный моделью параметр и результат в формате JSON Запись вызова: get_open_meteo_daily_forecast, HTTP 200 за 280 ms и каждое значение, которое заполнила модель.

Прочитайте параметры, которые выбрала модель: latitude: 46.6863, longitude: 7.8632, timezone: Europe/Zurich, start_date: 2026-07-25, end_date: 2026-07-26. Никто не вводил координаты. Путешественник сказал «Интерлакен», и модель перевела это в значения, нужные API, достаточно точно, чтобы попасть в город. Это оценочная половина системы выполнила свою работу; детерминированная половина (URL, метод, фиксированный список переменных daily) ушла ровно так, как было проверено.

Что такое function calling в AI-агентах?

Запись выше показывает механизм, который в индустрии называется function calling: языковая модель по ходу разговора выбирает не писать предложение, а выдать структурированный вызов заранее определенного инструмента, платформа выполняет его, и модель продолжает, имея результат.

Три зоны, показывающие function calling на реальном погодном вызове: модель принимает решение и заполняет значения, Quickchat выполняет фиксированный запрос, а API отвечает обычным JSON Function calling на реальном вызове из этого руководства. Модель только формирует структурированные значения; за запрос отвечает платформа; API — это обычный HTTP.

Из диаграммы следуют несколько вещей:

  • Модель решает, платформа выполняет. Модель никогда не отправляет байты в Open-Meteo. Она создает {"latitude": 46.6863, ...}, а Quickchat вставляет эти значения в запрос, который вы проверили. Части, которые вы зафиксировали (URL, метод, любой секрет), не принадлежат модели и не могут быть изменены ею.
  • «Tool calling» — это то же самое. Эти два названия описывают один механизм; tool calling — более новый и более общий термин. AI Action — это определение инструмента: его имя, описание и таблица параметров — ровно то, что читает модель, когда решает, вызывать ли его и как. Поэтому поле описания так важно. Концептуально все определение, которое видит модель, сводится к этому:
name:        get_open_meteo_daily_forecast
description: Используйте это действие, когда путешественник спрашивает, какая будет погода в конкретные ближайшие дни в направлении...
parameters:  latitude (number, required), longitude (number, required), timezone (text, required), start_date (text, required), end_date (text, required), temperature_unit (text), precipitation_unit (text)
  • На стороне API все стандартно. Open-Meteo не добавлял поддержку AI для этого. Любой endpoint, работающий по HTTP и возвращающий JSON, может быть инструментом, поэтому рецепт из одного предложения обобщается на ваш собственный бэкенд.

Каждое крупное семейство моделей поддерживает этот механизм. Между платформами отличается то, кто пишет определения инструментов. На платформах для разработчиков и в custom GPT actions их пишете вы сами, вручную, в виде схемы. Конструктор, который вы использовали на шаге 2, — это function calling без написания схемы: ваше предложение стало определением инструмента. Инженерный взгляд на эту область, от протоколов вроде MCP до пользовательских endpoints, смотрите в API для AI-агентов: от MCP до пользовательских endpoints.

Шаг 4: API, которому нужен ключ

Большинство реальных API требуют учетные данные. Здесь появляется второй тип заполнителя конструктора, а дополнение Wanderlark для наблюдения за звездами дает естественный повод: гости Dark-Sky Nights любят спрашивать про Astronomy Picture of the Day от NASA.

Откройте Add Action, снова выберите API Action и опишите его, на этот раз заранее сказав конструктору, что вы предоставите ключ:

Получите Astronomy Picture of the Day от NASA из NASA APOD API (GET https://api.nasa.gov/planetary/apod), чтобы гости, интересующиеся нашим дополнением Dark-Sky Nights, могли спросить о сегодняшнем астрономическом изображении и услышать его название и что на нем показано. Я предоставлю свой собственный API-ключ NASA.

Диалог API Action с введенным предложением NASA Фраза «Я предоставлю свой собственный API-ключ» говорит конструктору оставить аккуратный пропуск вместо догадок об авторизации.

Через полминуты открывается диалог результата, и он отличается одной важной вещью: янтарной панелью «Replace before activating», где перечислен ровно один элемент: [[nasa_api_key]]. На карточке предпросмотра есть красный бейдж Incomplete, а переключатель активации выключен и остается выключенным.

Диалог результата для действия NASA с янтарной панелью Replace before activating, где указан заполнитель API-ключа, и бейджем Incomplete Конструктор собрал все действие и оставил один пропуск, которое не мог заполнить: ваш ключ. Пока вы не замените его, действие нельзя включить.

На странице Actions переключатель полностью отключен, а всплывающая подсказка объясняет причину:

Карточка действия с отключенным переключателем и всплывающей подсказкой о том, что действие невалидно, заполните отсутствующие поля Активация блокируется на уровне платформы, пока остается любой [[secret]]. Действие с заполнителем на месте ключа не может упасть в 3 часа ночи, потому что оно не может запуститься.

У двух типов заполнителей разные владельцы:

Два типа заполнителей в URL NASA: параметр date, который модель заполняет при каждом вызове, и секрет с API-ключом, который вы вставляете один раз Один URL, оба типа: {{date}} — это пропуск для модели, заполняемый из разговора при каждом вызове; [[nasa_api_key]] — ваш, вставляемый один раз.

Теперь заполните его. NASA мгновенно выдает личные ключи (имя и email на api.nasa.gov, ключ приходит по почте) и документирует общий DEMO_KEY для тестирования; именно он используется в этом примере:

  1. На карточке действия нажмите Edit Action, затем откройте вкладку Query Params в разделе API Endpoint.
  2. В строке api_key находится янтарный чип [[nasa_api_key]]. Щелкните по значению и замените его своим ключом.
  3. Нажмите Save changes.

До и после на вкладке Query Params: янтарный чип-заполнитель, затем вставленный реальный ключ Заполнитель — это обычное редактируемое значение. Замените его и сохраните.

Затем обратите внимание, чего вам не пришлось делать: переключать тумблер. Когда сохранение впервые делает GET-действие только для чтения полным и валидным, Quickchat активирует его за вас. Действия, которые записывают данные (POST, PUT, PATCH, DELETE), никогда этого не делают; они ждут намеренной активации, что является правильным поведением по умолчанию для всего, что меняет данные.

Карточка действия NASA до и после: Incomplete с отключенным переключателем, затем активная с включенным переключателем Вставьте, сохраните, и запрос только для чтения включится сам. Действия записи всегда оставляют финальное решение вам.

Протестируйте его так же, как прогноз:

Мы добавили дополнение Dark-Sky Nights к нашей поездке Zermatt Highline. О чем сегодняшнее астрономическое изображение?

Разговор, где агент описывает сегодняшнее Astronomy Picture of the Day Агент получил сегодняшнее изображение, «Shadow and Rainbow», и кратко описал, что на нем показано.

И снова подтверждение в Inbox:

Раскрытая карточка вызова для действия NASA, показывающая HTTP 200 и параметр date HTTP 200 от api.nasa.gov. Единственное значение, заполненное моделью, — это date, оставленное пустым, чтобы NASA использовала сегодняшнюю дату по умолчанию. Ключа нигде нет в этой записи: это не параметр, поэтому модель никогда не может заполнить или раскрыть его.

Что происходит, когда конструктор не может найти API?

Конструктор не всегда создает действие, и это сделано намеренно. Введите предложение, которое описывает поведение, но не называет API:

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

Конструктор ищет, не находит единого API, который мог бы ответственно выбрать за вас, и возвращается с другим диалогом: «We need a bit more detail». Действие не создается. Панель Details точно объясняет, чего не хватает (какой поставщик погоды? какая система бронирования?), и показывает, как переформулировать запрос, вплоть до примера предложения с конкретным endpoint.

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

Есть второй тип отказа. Опишите то, что Quickchat уже делает нативно:

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

Конструктор распознает в этом встроенную функцию и, вместо того чтобы оборачивать решенную задачу во внешний API, указывает на функцию, с кнопкой Set up Human Handoff прямо в диалоге:

Диалог, объясняющий, что handoff является встроенной функцией, с кнопкой Set up Human Handoff Не каждая возможность должна быть пользовательским действием. Эскалация к человеку встроена, и конструктор направляет вас туда вместо дублирования.

Точные предложения и настройки для копирования

Все, что использовалось в демо, в одном месте. Два предложения, которые сгенерировали действия:

Получите ежедневный прогноз погоды для места из Open-Meteo API (документация: https://open-meteo.com/en/docs), чтобы, когда путешественник спрашивает, какая будет погода в одном из наших направлений, агент мог ответить реальными температурами и вероятностью дождя для запрошенных дней.
Получите Astronomy Picture of the Day от NASA из NASA APOD API (GET https://api.nasa.gov/planetary/apod), чтобы гости, интересующиеся нашим дополнением Dark-Sky Nights, могли спросить о сегодняшнем астрономическом изображении и услышать его название и что на нем показано. Я предоставлю свой собственный API-ключ NASA.

AI Main Prompt, включая две строки о действиях, добавленные после создания действий. Указание имен действий и моментов их запуска в промпте делает срабатывание заметно надежнее, а имена действий, которые нужно использовать, — это сгенерированные имена, которые вы видели в редакторе:

Вы помощник Wanderlark Tours, оператора альпийских походов в малых группах. Wanderlark проводит три тура с гидом: Interlaken Classic, Zermatt Highline и Dolomites Traverse, а также дополнение Dark-Sky Nights для наблюдения за звездами. Помогайте путешественникам выбирать тур, понимать даты, цены, сложность и что взять с собой, а также отвечайте на вопросы о бронировании и отмене. Будьте доброжелательны, практичны и кратки, держите ответы короткими.

Когда путешественник спрашивает, какая будет погода в направлении в ближайшие дни, вызовите get_open_meteo_daily_forecast и ответьте реальными числами для запрошенных дней. Когда гость спрашивает о сегодняшнем астрономическом изображении или о том, что он может увидеть на Dark-Sky Night, вызовите get_tonights_nasa_apod и опишите название изображения и что на нем показано.

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

Сгенерированные API Action Descriptions, как их написал конструктор (настраивайте их, а не URL, когда нужно исправить поведение запуска):

Используйте это действие, когда путешественник спрашивает, какая будет погода в конкретные ближайшие дни в направлении, и вам нужны реальные ежедневные данные прогноза (максимальные/минимальные температуры и вероятность дождя) из Open-Meteo API. Ассистент должен вызвать его с широтой/долготой направления, диапазоном дат и предпочтительными единицами измерения, затем использовать JSON response, чтобы описать прогнозируемые температуры и вероятности осадков для запрошенных дней естественным языком.
Используйте это действие, когда гость спрашивает о сегодняшнем Astronomy Picture of the Day, связанном с вашим дополнением Dark-Sky Nights, чтобы вы могли получить официальные метаданные APOD от NASA и описать название и что показывает изображение. Действие вызывает NASA APOD API для указанной даты (по умолчанию сегодня, если дата не указана) и возвращает JSON, включая URL изображения или видео, title, explanation и media type, которые ассистент должен кратко изложить гостю в разговорной форме.

Thinking message, заданный для действия прогноза (строка, которую виджет показывает во время выполнения вызова):

Проверяю для вас живой прогноз...

Пять статей Knowledge Base, сокращенные до фактов:

Туры: Interlaken Classic, 3 дня, легкий или умеренный уровень, 890 евро, максимум 10 гостей, с мая по октябрь. Zermatt Highline, 4 дня, умеренный или сложный уровень, 1 290 евро, максимум 8, с июня по сентябрь. Dolomites Traverse, 5 дней, сложный уровень, 1 590 евро, максимум 8, с конца июня до середины сентября, от хижины к хижине. Цены включают гида, проживание, завтраки.

Dark-Sky Nights: дополнение для наблюдения за звездами на Zermatt Highline и Dolomites Traverse, 120 евро за человека, ночная прогулка с гидом и телескопом, планируется вокруг новолуния; сеансы, отмененные из-за облачности, переносятся или возвращаются.

Бронирование: депозит 200 евро, остаток оплачивается за 30 дней до начала. Бесплатная отмена до 30 дней; возврат 50 процентов за 29-14 дней; в течение 14 дней возврата нет, но есть одно бесплатное перебронирование в течение 12 месяцев.

Снаряжение: слои одежды, водонепроницаемая куртка, разношенные ботинки, дневной рюкзак 30 литров; палки и кошки предоставляются; вечера холодные даже летом.

Места встречи: станция Interlaken Ost; станция Zermatt (без автомобилей, shuttle из Taesch); Cortina d'Ampezzo, трансфер из аэропорта Venice 45 евро в одну сторону.

Как описать API, чтобы конструктор понял правильно?

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

Две переписанные версии предложения: расплывчатое поведение, отклоненное с подсказкой, и предложение с конкретным endpoint, которое сгенерировало рабочее действие Паттерн за каждым исходом в этом руководстве: конкретный API на входе, рабочее действие на выходе; только поведение на входе, подсказка в ответ.

  1. Назовите API, endpoint или вставьте URL документации. Фраза «Open-Meteo API (документация: …)» дала корректное действие с опорой на два указанных источника. Фраза «перенести их тур, когда погода выглядит плохой» привела к отказу, потому что в ней названо желание, а не API. Конструктору нужно что-то конкретное, что он может прочитать, и на этом правиле держатся два других.
  2. Скажите, когда агент должен использовать его и что сказать дальше. Ваша фраза-триггер почти дословно становится описанием действия, а описание запускает действие во время выполнения. «Когда путешественник спрашивает, какая будет погода» — это сигнал, который модель может распознать по ходу разговора.
  3. Скажите, как будут работать учетные данные, если они есть. Фраза «Я предоставлю свой собственный API-ключ NASA» превратила авторизацию в чистый [[secret]]. Конструктор и сам склоняется к этому: он предпочитает статические долгоживущие учетные данные, такие как ключи и URL вебхуков, а не краткоживущие OAuth-токены, потому что действие выполняется как есть при каждом вызове, без механизма обновления токенов.

И одно не-правило: вам не нужно указывать параметры, форматы или поля ответа. Конструктор прочитал документацию Open-Meteo и выбрал семь параметров, разумные значения по умолчанию и правильные переменные daily, хотя его об этом не просили. Проверяйте, что он выбрал, в редакторе, вместо того чтобы диктовать это заранее.

Итерация сама по себе дешевая. Кнопки повторной генерации нет; когда черновик получается неудачным, удалите его и отправьте более точное предложение, около полминуты на попытку. В аккаунте может быть до 15 созданных действий, поэтому удаляйте черновики по ходу.

Запуск в работу

Активация уже сделала это. Действия принадлежат агенту, а не каналу, поэтому два созданных вами запроса чтения запускаются одинаково из виджета сайта, WhatsApp, Messenger, Slack, Telegram, Discord или любого другого места, где развернут агент, а каждый вызов записывается в Inbox. Если виджет сайта — это основной канал, вы можете использовать AI-чат-бота под своим брендом без изменения действия. То же касается того, на что он не может ответить: если спросить о зимних турах на снегоступах, Wanderlark скажет, что не проводит их, вместо импровизации.

Агент честно отвечает, что Wanderlark не проводит зимние туры, и предлагает летние альтернативы Когда его спрашивают о чем-то вне его знаний, агент говорит об этом вместо импровизации. Та же сдержанность распространяется на его вызовы API.

Два естественных следующих шага после запуска первых действий:

  • Сделайте запуск детерминированным там, где это важно. Описания действий решают, когда модель вызывает их; для действий, которые должны запускаться только при определенных условиях, добавьте серверные run conditions и memory captures: Как сделать действия вашего AI-агента надежными.
  • Используйте интеграции в один клик для инструментов, у которых они есть. То же меню Add Action содержит другие пути: HubSpot Action, Discord Action и Google Sheets поставляются как готовые галереи, Shopify MCP подключает каталог магазина, а MCP подключает любой удаленный MCP-сервер, из каталога 240+ или по вставленному URL, импортируя инструменты этого сервера. В руководствах ниже подробно разобраны эти галереи.

Три пути к одному месту, одно практическое правило:

Интеграции в один клик и MCPКонструктор на естественном языкеРучной редактор
Лучше всего дляПопулярные инструменты с галереей или любой MCP-серверЛюбой документированный REST API, включая самые нишевыеВнутренние API или полный контроль над каждым полем
Вы предоставляетеПодключение аккаунта или URL сервераОдно предложение, плюс ключ, если API его требуетКаждое поле самостоятельно
Агент получаетПодобранный набор готовых инструментовОдно проверенное действие со ссылками на источники на каждое предложениеРовно то, что вы ввели
Где описаноРуководства нижеЭто руководствоАнатомия выше и основной рецепт, на который она ссылается

Похожие руководства

Часто задаваемые вопросы

Как подключить AI-агента к API без написания кода?

В Quickchat AI откройте Actions & MCPs, нажмите Add Action, выберите API Action и опишите API одним предложением простым языком. LLM с веб-поиском в реальном времени прочитает документацию API и сгенерирует полное действие: метод, URL, параметры и описание. Вы проверяете его, заполняете значения-заполнители, например API-ключ, и включаете.

Что такое function calling в AI-агентах?

Function calling — это механизм, при котором языковая модель по ходу разговора выводит структурированный запрос на запуск заранее определенного инструмента вместо обычного текста. Платформа выполняет инструмент, в этом случае HTTP-запрос, и передает результат обратно модели, которая затем пишет ответ на основе реальных данных. Каждый вызов AI Action в этом руководстве — это один function call.

Function calling и tool calling — это одно и то же?

Да. Function calling и tool calling называют один и тот же механизм; tool calling — более новый и более общий термин. AI Action — это один из таких инструментов: описанный HTTP-запрос, который модель может выбрать для вызова во время разговора.

Как конструктор узнает, как выглядит API?

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

В чем разница между заполнителями {{param}} и [[secret]]?

Значение {{param}} заполняется моделью из разговора при каждом вызове, например дата или город. Значение [[secret]] — это константа, которую вы вставляете один раз перед активацией, например API-ключ. Модель никогда не выбирает и не редактирует секреты, и это не параметры, которые она может заполнить.

Куда вставлять API-ключ, и может ли посетитель получить его от агента?

Вы заменяете заполнитель [[secret]] внутри действия, в редакторе, перед активацией. Ключ становится частью фиксированного запроса, который отправляет Quickchat. Это не параметр, поэтому модель не может изменить его, и он не появляется в записи вызова действия в разговоре.

Конструктор создает только GET-запросы для чтения, или агент тоже может записывать данные?

И то, и другое. Тот же процесс из одного предложения генерирует действия POST, PUT, PATCH и DELETE. Действия GET только для чтения включаются сами, когда они полные и валидные; действия записи всегда ждут, пока вы намеренно активируете их.

Можно ли подключить частные или внутренние API?

Да, если endpoint доступен по HTTPS со стороны Quickchat. Конструктор опирается на публичную документацию, поэтому для внутреннего API опишите endpoint явно в своем предложении или сгенерируйте близкий шаблон и настройте URL и поля в редакторе.

Что будет, если я опишу поведение, а не конкретный API?

Конструктор завершится безопасным отказом. Вместо того чтобы выдумывать endpoint, он объяснит, чего не хватает, и покажет, как переформулировать запрос, обычно назвав конкретного поставщика, endpoint или URL документации. Если ваш запрос соответствует встроенной функции, например Human Handoff, он укажет на эту функцию вместо создания пользовательского действия.

Что будет, если вызов API завершится ошибкой во время разговора?

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

Могут ли ChatGPT, Claude или Gemini подключаться к API таким способом?

Все их модели поддерживают function calling, но подключение — это работа разработчика: вы сами пишете схему функции или спецификацию OpenAPI, как в custom GPT actions. Здесь вы вводите одно предложение, и действие генерируется из актуальной документации API, а затем работает во всех каналах вашего агента. Вы также можете открыть доступ к готовому агенту Quickchat для ChatGPT, Claude и Cursor как к MCP-серверу.

Из каких каналов агент может вызывать API?

Из всех. Действия принадлежат агенту, а не каналу, поэтому одно и то же действие запускается из виджета сайта, WhatsApp, Messenger, Slack, Telegram, Discord и любого другого места, где развернут ваш агент.

Бесплатен ли конструктор действий на естественном языке?

Да. Генерация, проверка и активация API Actions работают на бесплатном плане, и оба действия в этом руководстве были созданы в бесплатном аккаунте. Платные планы добавляют более высокие лимиты использования и более продвинутые модели, а не доступ к конструктору.

Как агент выбирает между несколькими действиями?

Он читает имя и описание каждого действия и выбирает то, которое соответствует текущему моменту разговора. У демо-агента их два: вопрос о погоде направляется к действию прогноза, а вопрос об астрономии — к действию NASA, потому что в их описаниях названы эти триггеры. Четкие, хорошо различимые описания делают выбор надежным.

Какую задержку добавляет вызов API к ответу?

Меньшую, чем можно ожидать. Реальный вызов прогноза в этом руководстве выполнился за 280 мс, а весь ответ занял около двух секунд. Посетитель видит короткий индикатор обдумывания, который можно заменить пользовательским thinking message, а затем ответ, построенный на живых данных.

Итоги

Два введенных предложения стали двумя работающими, документированными, проверенными API Actions: запросом погоды без ключа и запросом NASA с ключом, каждый подтвержден HTTP 200, записанным в Inbox рядом со значениями, которые заполнила модель. Правила, которые делают это надежным, помещаются в три строки. Назовите реальный API, и конструктор привяжет действие к его документации и сошлется на нее. Все, что знаете только вы, приходит как [[secret]], блокирующий активацию, пока вы его не заполните. Все, что конструктор не может подтвердить, становится объяснением и предложенной переформулировкой, а не догадкой.

Для полного списка полей API Actions, run conditions и обработки ответов держите документацию по AI Actions под рукой во время сборки.

Quickchat AI Quickchat AI Ask Quickchat AI a question