Skip to main content

Действия и MCP

Действия (в бэкенде их также называют инструментами) — это функции, которые ваши агенты могут выполнять для взаимодействия с внешними системами и сервисами. Они расширяют возможности ваших агентов за пределы языковой модели.Встроенные действия:Пользовательские действия:
  • Интеграции API: подключение к внешним REST API
  • Операции с базами данных: запросы и обновление баз данных
  • Автоматизация рабочих процессов: запуск бизнес-процессов
  • Операции с файлами: чтение, запись и обработка файлов
Собственные пользовательские действия можно определить в панели администратора с помощью спецификации OpenAPI.
Model Context Protocol (MCP) — открытый стандарт, который позволяет ИИ-ассистентам безопасно получать доступ к внешним источникам данных и инструментам. Yahont можно настроить как клиент MCP, чтобы управляемо взаимодействовать с внешними системами, базами данных и API.Ключевые возможности MCP:
  • Доступ к внешним данным: подключение к базам данных, API и файловым системам
  • Аутентификация: сквозная передача OAuth для безопасного доступа к вашему MCP-серверу.
Иногда нужно больше контроля над действием, чем позволяет пользовательское действие. Поскольку Yahont — проект с открытым исходным кодом, вы можете расширить встроенные действия по своему усмотрению!Шаблоны встроенных действий находятся в backend/onyx/tools/tool_implementations в репозитории Yahont.
Расширение кодовой базы не рекомендуется большинству пользователей. Прежде чем начать, обратитесь к нам за поддержкой в Telegram!

Агенты

Агенты — это ИИ-ассистенты с пользовательскими инструкциями, действиями и доступом к данным, расширяющие возможности базовой LLM.
Термины ассистент (Assistant) и агент (Agent) в Yahont используются как взаимозаменяемые и обозначают одно и то же понятие.
Встроенные агенты:
  • id: 0 Search Agent — использует инструмент поиска, чтобы отвечать на вопросы по вашей базе знаний
  • id: -1 General Agent — базовый чат без инструментов (обычный чат с LLM)
  • id: -2 Paraphrase Agent — использует инструмент поиска и цитирует точные фрагменты из источников
  • id: -3 Art Agent — создаёт изображения и визуальный контент
Вы можете создавать собственных агентов в панели администратора или через API.Для большинства конечных точек чата нужен ID агентаЧтобы найти ID агента, можно:
  • Использовать конечную точку API GET /persona для вывода списка всех агентов
  • В панели администратора: открыть агента и посмотреть первое число в URL

Чат

Система ответов чата использует пакетную архитектуру для доставки ответов пользователям в реальном времени. Вместо ожидания полного ответа система разбивает взаимодействие в чате на отдельные пакеты, которые передаются постепенно.Каждый пакет имеет единую структуру, определённую классом Packet:
Поток передачи:
  • Запрос чата запускает процесс потоковой передачи
  • В зависимости от нужных операций создаются пакеты разных типов (рассуждения, вызовы инструментов, ответ ИИ, документы, цитаты и т. д.)
  • Пакеты отправляются с последовательными индексами, чтобы сохранить порядок
  • Фронтенд обрабатывает пакеты в реальном времени и обновляет интерфейс
  • Пакет OverallStop сигнализирует о завершении
MessageStart и MessageDeltaЭти пакеты составляют основу системы потоковых ответов:
  • MessageStart: начинает новое сообщение с начальным содержимым и итоговыми найденными документами (если они есть)
  • MessageDelta: доставляет текст по мере его создания
Управление сессией и разделамиУправляющие пакеты определяют ход и жизненный цикл потоковой передачи:
  • OverallStop: сигнализирует о конце всей сессии потоковой передачи
  • SectionEnd: отмечает завершение типа пакетов (рассуждения, сообщение, цитаты и т. д.)
Ответы инструментов передаются так же, как основной ответ сообщения.Инструменты поиска
  • SearchToolStart и SearchToolDelta обрабатывают операции поиска документов
Генерация изображений
  • ImageGenerationToolStart, ImageGenerationToolDelta и ImageGenerationToolHeartbeat управляют созданием изображений ИИ
Пользовательские инструменты
  • CustomToolStart и CustomToolDelta используются для MCP и пользовательских действий
Пакет start сигнализирует о начале ответа инструмента. Пакеты delta передают результаты по мере их появления.
Все шаги рассуждений передаются потоком, чтобы фронтенд мог отображать их по мере обработки. Пакеты рассуждений, как правило, отправляются первыми.
  • ReasoningStart: начинает раздел рассуждений
  • ReasoningDelta: передаёт процесс рассуждений ИИ
Пакеты цитат связывают ID цитат с ID документов.
  • CitationStart: начинает результаты цитирования
  • CitationDelta: доставляет цитаты и ссылки на источники

Коннекторы

Когда вы видите термин коннектор в Yahont или в другом месте этой документации, обычно имеются в виду ConnectorCredentialPairs
Connectors в Yahont определяют данные, которые вы хотите индексировать
  • name: на самом деле не отображается в интерфейсе, если задано ConnectorCredentialPairMetadata:name
  • source: к какой системе подключаться (см. раскрывающийся блок DocumentSource ниже)
  • input_type: как Connector получает данные (см. раскрывающийся блок InputType ниже)
  • connector_specific_config: настройки конкретного источника, например пути к папкам или каналы. Ожидаемые настройки конкретного коннектора смотрите в /backend/onyx/connectors.
  • refresh_freq: как часто проверять новое или обновлённое содержимое, в секундах
  • prune_freq: как часто удалять устаревшее содержимое из Yahont, в секундах
  • indexing_start: необязательная дата и время начала индексации
Python
Credentials содержат сведения для аутентификации, необходимые для доступа к источникам данных. Это ключи API, токены OAuth, персональные токены доступа (PAT) или учётные данные сервисных аккаунтов, которые позволяют Yahont безопасно подключаться к вашим внешним системам.Типы Credentials:
  • Ключи API: простая аутентификация по токену
  • Токены OAuth: делегированная авторизация с возможностью обновления
  • Сервисные аккаунты: аутентификация между машинами
  • Персональные токены доступа: учётные данные доступа конкретного пользователя
За кулисами Connectors и Credentials объединяются в ConnectorCredentialPair (CC-pair, пара «коннектор — учётные данные»). CC-pair — это активное подключение, которое может синхронизировать данные из ваших внешних источников в Yahont. Именно CC-pair вы видите и обслуживаете на странице администратора Connectors.Возможности CC-pair:
  • Активные подключения: синхронизация данных между источником и Yahont в реальном времени
  • Мониторинг состояния: отслеживание работоспособности и производительности синхронизации
  • Управление доступом: определение, кто может видеть данные из этого подключения
  • Управление конфигурацией: изменение настроек синхронизации и учётных данных
Если вы создаёте Connectors через API, их нужно связать с Credential (CC-pair), чтобы они стали активными!
ConnectorCredentialPairMetadata определяет настройки конфигурации и доступа для CC-pair.Параметры конфигурации:
  • name: необязательное отображаемое имя CC-pair (переопределяет имя Connector)
  • access_type: кто может получать доступ к данным этого CC-pair (см. раскрывающийся блок AccessType ниже)
  • auto_sync_options: необязательная конфигурация параметров автоматической синхронизации
  • groups: список ID групп, имеющих доступ к этому CC-pair
Python

Документы

DocumentBase — основная структура, используемая в Yahont для хранения данных документов и управления ими. Обратите внимание, что эмбеддинги хранятся в OpenSearch отдельно.
  • id: уникальный идентификатор. Создаётся Yahont, если не указан
  • sections: список разделов содержимого (см. TextSection и ImageSection)
  • source: система, из которой получен документ (см. DocumentSource)
  • semantic_identifier: отображается в интерфейсе как название документа
  • metadata: произвольные string или list[string], которые будут сохранены как теги документа
  • doc_updated_at: метка времени UTC последнего обновления документа
  • chunk_count: число фрагментов, на которые документ разбивается для обработки
  • primary_owners: метаданные о людях, связанных с документом
  • secondary_owners: метаданные о людях, связанных с документом
  • title: используется для поиска (по умолчанию semantic_identifier, если не указан)
  • from_ingestion_api: получен ли этот документ через Ingestion API
  • additional_info: информация, специфичная для коннектора, которая может понадобиться другим частям кода
  • external_access: данные синхронизации прав (только Enterprise Edition)
Ingestion API расширяет определение DocumentBase полем cc_pair_id, чтобы автоматически связать документ с CC-pair.
Python
DocumentSource — перечисление, определяющее допустимые источники документа. Для загрузки файлов в Ingestion API и программного создания Connectors нужно указать DocumentSource.
Python
TextSection — часть документа в Yahont.
  • text: собственно текстовое содержимое раздела
  • link: необязательный URL, к которому относится этот текстовый раздел или из которого он получен
Python
ImageSection — изображение, извлечённое из документа в Yahont.
  • image_file_id: UUID файла изображения, хранящегося в файловом хранилище Yahont
  • text: необязательное текстовое описание или подпись к изображению
  • link: необязательный URL, к которому относится этот раздел изображения или из которого он получен
Python
AccessType определяет, кто может получать доступ к данным Connector в Yahont.
  • PUBLIC: все пользователи Yahont могут получать доступ к данным этого Connector
  • PRIVATE: только пользователь, создавший Connector, и указанные группы могут получать доступ к данным этого Connector
  • SYNC: значение SYNC можно задать только Connectors с поддержкой синхронизации прав. Connector будет синхронизировать права доступа с исходной системой.
Python
InputType определяет, как Connector получает данные из исходной системы.
  • LOAD_STATE: однократная загрузка данных из источника
  • POLL: непрерывный опрос источника на наличие новых данных (начинается с полной загрузки)
  • EVENT: для большинства Connectors не реализовано
  • SLIM_RETRIEVAL: для Connectors с синхронизацией прав
Python

Дальнейшие шаги

Руководство: индексирование файлов с помощью Ingestion API

Узнайте, как индексировать файлы с помощью Ingestion API

Руководство: отправка сообщения чата

Простой пример программной отправки сообщения