Skip to main content
Описание каждого параметра, метода и поля. Если вы впервые осуществляете инструментирование, начните с руководства — эта страница предназначена для справки.

Руководство пользовательских агентов

Установка, инструментирование, методы событий, практический пример и типичные проблемы.

Используете фреймворк?

LangChain, CrewAI, LlamaIndex и Pydantic AI инструментируют себя одним вызовом.
Python 3.10 или новее. Без зависимостей во время выполнения.

Установка

Пакет устанавливается как failproofai-sdk и импортируется в Python как failproofai_sdk. Дополнения фреймворков, такие как failproofai-sdk[langgraph], устанавливают сам фреймворк; адаптеры всегда идут в базовом пакете.

Подключение daemon Failproof

  1. Перейдите в Admin → Keys и создайте ключ с разрешением events:add.
  2. Подключите daemon Failproof к Cloud на машине агента.
  3. Запустите одну сеанс с инструментированием, затем найдите его точный ID в Observe → Events.
  4. Перейдите в Observe → Sessions, выберите ту же среду и откройте восстановленную трассировку. Сеанс пользовательского Python агента восстановлен в виде графика выполнения и упорядоченной трассировки событий.

Конфигурация

Задайте через переменную окружения:
Без запятых в environment. Система приёма разбивает это поле по запятым для построения фильтров и пропускает любое событие, метка которого содержит запятую — весь запуск может молча исчезнуть. Пишите prod-eu, а не prod,eu.configure(environment="prod,eu") генерирует исключение, чтобы вы узнали сразу. AGENTEYE_ENVIRONMENT не может генерировать исключение — вас никто не вызывает — поэтому она выдаёт предупреждение один раз и откатывается на dev.
События ставятся в очередь в памяти и записываются в фоне каждые flush_interval секунд, с финальной записью при выходе интерпретатора. Процесс, грубо завершённый, теряет всё, что ещё не было записано.

Идентификация

Каждое событие принадлежит сеансу и агенту. Области заполняют оба, поэтому вы редко их передаёте:
Передача session_id или agent_id явно всё ещё работает и имеет приоритет. Если ни один не привязан и не передан, вызов генерирует TypeError вместо отправки события, которое Cloud молча отбросит.
Идентификация работает через переменные контекста. Она следует за задачами asyncio автоматически, но не новыми потоками — оберните рабочий код в failproofai_sdk.propagate() или его события окажутся неприкреплёнными.

Каталог событий

Пятнадцать методов. Большинство идут в парах — вы вызываете открывающий, затем закрывающий, и SDK измеряет интервал. Три работают отдельно: error, human_pause, human_interrupt.
Каждый метод также принимает session_id и agent_id, которые области заполняют для вас. Всё, оставленное как None, отбрасывается вместо отправки в JSON как null, и каждый метод возвращает None.
Чтобы отметить запуск как неудачный, outcome должен быть одним из failed, error, timeout или rejected. Всё остальное — включая похожее "failure" — считается успехом.

Парирование и длительность

Одно правило: передайте закрывающему событию тот же id, что и его открывающему. Это то, что их связывает, и что позволяет SDK измерить интервал. Не передавайте duration_ms сами. SDK измеряет его, и передача генерирует ValueError. Одно исключение — model_response, где только вы знаете реальную задержку поставщика. Передайте целое число миллисекунд — float генерирует исключение, потому что столбец 32-битное целое и иначе остался бы пуст.
  • Id’ы должны быть уникальны только в пределах вида, в пределах сеанса. Вызов инструмента и хук могут разделять один; два одновременно запущенных сеанса могут переиспользовать те же id’ы без коллизии.
  • Они не привязаны к агенту. Пара, открытая под одним агентом и закрытая под другим, всё ещё совпадает — это нормальный случай в коде с несколькими агентами.
  • request_id опционален, но рекомендуется. Без него события модели парируются в порядке поступления, поэтому два одновременных вызова в одном агенте могут неправильно спариться.
  • Пара, разделённая между процессами, всё ещё совпадает в Cloud, но SDK не может её измерить — ничто ни в одном процессе не видело обе половины.
  • Максимум 10 000 открывающих ждут закрывающего одновременно. После этого самый старый отбрасывается, поэтому утечка не может расти без ограничений.

Ваши собственные поля

Любой дополнительный ключевой аргумент, который вы передаёте, хранится с событием:
Предпочитайте JSON типы, если хотите запрашивать их позже. Всё остальное — UUID, datetime, Decimal, set, bytes, объект модели — хранится как строка.
Добавляйте префикс к названиям ваших полей. Дополнительные поля применяются последними, поэтому поле, названное model, tool_name или outcome, молча перезапишет реальное. Адаптеры фреймворков используют fw_; делайте то же самое и ничто не может конфликтовать.Это также почему неправильно написанное опциональное поле никогда не ошибается — оно просто становится новым пользовательским полем. Если стандартное поле отсутствует в Cloud, сначала проверьте орфографию.
Эти пять имён зарезервированы и отклоняются сразу: timestamp, session_id, agent_id, type, environment.

Доставка и проверка

В Observe → Events сначала проверьте наличие agent_start и наличие agent_end в конце. Затем откройте Observe → Sessions и подтвердите, что события модели, инструмента, человека, хука и ошибок появляются в предполагаемом порядке. Используйте ID сеанса как первичный ключ устранения неполадок.
Если Cloud пуста, проверьте $FAILPROOFAI_HOME/custom-agents/events, иначе ~/.failproofai/custom-agents/events. JSONL файлы доказывают эмиссию SDK; растущий спул указывает на конфигурацию daemon или доставку, а пустой спул указывает на инструментирование или время жизни процесса.
Проверяйте спул только когда daemon остановлен. Во время его работы он собирает и удаляет каждый пакет в течение миллисекунд, поэтому список директории гонится с коллектором и показывает гораздо меньше событий, чем было излучено.

Предотвращение сбоев в пользовательской среде выполнения

Используйте результаты аудита и связанные трассировки для определения небезопасного действия, требуемого доказательства и предполагаемого ответа. Пользовательская интеграция обеспечения должна выявить действие перед выполнением, передать его структурированный ввод в механизм политик и применить результирующее решение allow, instruct или deny. Свяжитесь с Failproof AI и мы поможем отобразить границы модели, инструмента и жизненного цикла вашей среды выполнения на хуки политик, затем проверим интеграцию с вами.