Разделы документации
Действия OpenAPI
Подключение внешних действий по OpenAPI-схеме — требования к схеме, аутентификация и как ассистент вызывает внешние API.
Что такое действия
Действие — внешний API, который ассистент может вызывать во время ответа: создать заявку, проверить статус заказа, получить данные из внутренней системы. Действия подключаются по OpenAPI-схеме в Админка → Действия и назначаются конкретным ассистентам.
Требования к схеме
- Формат OpenAPI 3.0+ (JSON или YAML).
- В схеме указан
serversс абсолютным URL — по нему Charo будет вызывать API. - У каждой операции есть
operationIdи осмысленноеdescription: именно по описаниям языковая модель решает, какое действие вызвать и с какими параметрами. Пишите описания как инструкцию для человека: что делает операция, когда её использовать, что означают параметры. - Параметры и тела запросов типизированы схемами; обязательные поля отмечены
required.
Одна схема может содержать несколько операций — каждая станет отдельным доступным действием.
Аутентификация
Поддерживаются стандартные способы:
- Без аутентификации — для внутренних API в закрытом контуре.
- Заголовки авторизации — собственные заголовки (например,
Authorization: Bearer …или API-ключ); значения хранятся в зашифрованном виде и подставляются в каждый запрос. - OAuth — подключение через настроенную OAuth-конфигурацию; токен запрашивается и обновляется автоматически.
- Передача аутентификации пользователя — запрос выполняется с токеном пользователя, задавшего вопрос (passthrough), если ваш API понимает эти токены.
Как ассистент вызывает действие
- Пользователь задаёт вопрос; модель видит список доступных действий с их описаниями.
- Если действие уместно, модель формирует параметры по схеме и Charo выполняет HTTP-запрос к вашему API.
- Ответ API возвращается модели, и она использует его в ответе пользователю — с пометкой, какое действие было вызвано.
Действие подключается к конкретному агенту в его настройках — глобально действия не включаются.
Пример
Минимальная схема действия «поиск сотрудника в справочнике»:
openapi: 3.0.0
info:
title: Справочник сотрудников
version: "1.0"
servers:
- url: https://directory.internal.example.ru
paths:
/api/employees:
get:
operationId: findEmployee
description: >
Ищет сотрудника по фамилии или должности.
Используй, когда спрашивают контакты или роль сотрудника.
parameters:
- name: q
in: query
required: true
schema: { type: string }
description: Фамилия или должность
responses:
"200":
description: Список найденных сотрудников
Ограничения и безопасность
- Запросы выполняются с сервера Charo: API должен быть доступен из его сети, а межсетевой экран — разрешать этот трафик.
- Модель сама выбирает параметры вызова. Не подключайте операции с необратимыми последствиями (удаление, платежи) без подтверждающего шага на стороне вашего API.
- Ответ API попадает в контекст модели: не отдавайте в действии больше данных, чем допустимо показать пользователю.
- Разграничивайте доступ через видимость агента: действие доступно всем, кому доступен агент с этим действием.
Устранение неполадок
«Не удалось разобрать схему»
Проверьте схему валидатором (например, editor.swagger.io) —
чаще всего не хватает operationId или блока servers.
Агент не вызывает действие
Улучшите description операции: модель должна понять из него, когда действие
уместно. Проверьте, что действие включено у нужного агента.
Вызов завершается ошибкой сети
API недоступен с сервера Charo — проверьте адрес в servers, DNS и правила
межсетевого экрана.