Перейти к основному содержанию
AgentEye Python SDK обеспечивает полную видимость поведения ваших агентов (каждый запуск агента, вызов инструмента, запрос к модели, хук и ручное вмешательство), что позволяет вам отлаживать, аудировать и оценивать их. Он инструментирует код вашего агента, записывая структурированные события в локальные файлы JSONL; демон-сборщик собирает их и автоматически отправляет на платформу.

Установка

Загрузите wheel с GitHub Releases, используя ваш AGENTEYE_TOKEN. Если у вас еще нет токена, см. GitHub Token Setup для описания шагов настройки и необходимых разрешений. Использование gh CLI + pip:
Использование gh CLI + uv:
Использование curl (без gh CLI):

Быстрый старт


configure()

Вызовите один раз перед любым вызовом event.*. Безопасно опустить; параметры по умолчанию работают сразу. Все аргументы только именованные; передавайте их по имени, как показано выше. Когда base_dir равен None (по умолчанию), SDK читает $AGENTEYE_HOME, если установлена, в противном случае переходит к ~/.agenteye. Это совпадает с разрешением коллектора, поэтому одна переменная окружения AGENTEYE_HOME настраивает общий пул событий для обоих SDK и коллектора, что необходимо для развертываний sidecar / single-pod, где оба процесса должны согласиться с путем пула.

Среда

Пометьте каждое событие средой развертывания (production, staging, qa, canary и т.д.). Установите один раз; SDK автоматически прикрепляет его к каждому событию. Вариант 1: через configure():
Вариант 2: через переменную окружения:
Приоритет: configure(environment=...) имеет приоритет над переменной окружения. Если ничего не установлено, по умолчанию равен "dev". Значение среды появляется в качестве фильтра первого уровня в панели управления и хранится в виде индексированного столбца на сервере для быстрых запросов. Ограничение: значения среды не должны содержать литеральную запятую ,. Фильтры панели управления используют разделенную запятыми мультивыборку по каналу (?environment=prod,staging), поэтому среда с названием prod,blue будет разделена на два значения. События с содержащимися запятыми окружениями отклоняются при приеме.

Справка по событиям

Все методы события требуют эти два поля:
ПолеТипОписание
session_idstrИдентифицирует запуск агента верхнего уровня
agent_idstrИдентифицирует, какой агент в сеансе создал событие
Все методы также принимают произвольные **kwargs для пользовательских метаданных (см. Пользовательские поля).

event.agent_start()

Создается, когда агент начинает работу.

event.agent_end()

Создается, когда агент заканчивает работу.

event.tool_use()

Создается, когда агент вызывает инструмент. Сопряжен с tool_result; SDK автоматически вычисляет duration_ms.

event.tool_result()

Создается, когда инструмент возвращает результат. Коррелирует с tool_use через tool_call_id.

event.model_request()

Создается непосредственно перед отправкой подсказки в LLM.
Записи messages принимают либо простую строку content, либо стиль Anthropic с списком блоков content. Параметры выборки (temperature, max_tokens и т.д.) могут быть переданы в виде дополнительных kwargs.

event.model_response()

Создается, когда LLM возвращает ответ.
content принимает либо простую строку (универсальные провайдеры), либо список блоков контента в стиле Anthropic. Вызовы инструментов находятся внутри content в виде блоков {"type": "tool_use", ...} без отдельного поля tool_calls.

event.hook_triggered()

Создается, когда срабатывает хук. Сопряжен с hook_completed; SDK автоматически вычисляет duration_ms.

event.hook_completed()

Создается, когда хук завершается. Коррелирует с hook_triggered через hook_id.

event.error()

Создается, когда происходит необработанная ошибка.

События “человек в цикле”

События “человек в цикле” дают вам надзор над моментами, когда человек вмешивается в выполнение агента (ожидание утверждения, предоставление ввода, пауза или остановка агента). Они позволяют вам измерить, сколько времени требуется людям на ответ (SDK автоматически вычисляет duration_ms в парных событиях), аудировать, кто приостановил или прервал агента, и создавать рабочие процессы одобрения и надзора, которые отображаются на панели управления.

event.human_wait()

Создается, когда агент приостанавливает выполнение в ожидании ввода человеком. Сопряжен с human_input; SDK автоматически вычисляет duration_ms (как долго человек отвечал).

event.human_input()

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

event.human_pause()

Создается, когда человек активно приостанавливает агента (например, через элемент управления панели управления). Агент приостановлен, но не завершен.

event.human_interrupt()

Создается, когда человек активно останавливает агента во время выполнения. В отличие от human_pause, работа агента завершается, а не приостанавливается.

Пользовательские поля

Любые дополнительные аргументы ключевого слова добавляются к событию после стандартных полей:
timestamp, type и environment зарезервированы и вызывают ValueError (Reserved field names cannot be used as custom fields: [...]) если переданы как пользовательские поля. session_id и agent_id являются обязательными параметрами для каждого метода события и не могут быть поданы во второй раз; Python вызывает TypeError, если вы это сделаете. Установите среду с помощью configure(environment=...) (или переменной AGENTEYE_ENVIRONMENT) вместо этого.

Как события записываются

События буферизуются в процессе и записываются на диск каждые flush_interval секунд (по умолчанию 500 мс). Каждый флеш записывает один файл JSONL:
Коллектор наблюдает за этим каталогом и автоматически загружает файлы. Вам не нужно управлять этими файлами напрямую.