Skip to main content

Установка

Поддерживается: llama-index-core версии 0.14.23 до 0.15. 0.14.23 — это релиз, где поток workflow начал переносить типизированные события агента, которые читает этот адаптер. Ниже него отсутствуют и имена моделей, и структура агента.

Инструментирование

API агента LlamaIndex является асинхронным. Каждая область работает под async with, а также под with и производит идентичные события. instrument() присоединяет обработчик событий и обработчик spans к глобальному диспетчеру LlamaIndex. Вместе они делают цикл агента видимым, а не только его вызовы модели.
Без одного дополнительного аргумента на вашей LLM каждый подсчет токенов в вашем трассировании будет null. См. Подсчеты токенов ниже.

Подсчеты токенов

FunctionAgent вызывает astream_chat, и llama-index-llms-openai не отправляет stream_options={"include_usage": True} при потоковой передаче. Поставщик поэтому никогда не отправляет chunk использования, и нечего читать никакому инструментированию. Это поведение вышестоящего LlamaIndex. Отключите на вашей LLM:
Измерено на одном прогоне и модели: Вызовы без потоковой передачи (llm.chat, llm.achat) сообщают об использовании без конфигурации. Только путь потоковой передачи, который является путем агента по умолчанию, требует этого.

Что записывается

agent_id — это FunctionAgent.name, когда вы его установили, и имя класса workflow в противном случае. Под AgentWorkflow каждый агент, который берет ход, получает свой собственный вложенный span под workflow, поэтому handoff читается как два агента, а не один. Выход retrieval суммируется, а не выводится. Retriever возвращает документы, и их сохранение в payload поместит ваш корпус в хранилище событий один раз за запрос. Вместо этого сохраняются количество, диапазон оценок и усеченные фрагменты.

Пример

Цикл агента появляется в трассировании как пары hook: init_run, setup_agent, run_agent_step, parse_agent_output, call_tool и aggregate_tool_results. Это собственный цикл framework, поэтому это hooks, а не agents, что делает agent_id значимым.

Назовите ваши spans

agent_id — это FunctionAgent.name, когда вы его установили, и имя класса workflow в противном случае.
В AgentWorkflow это имя также записывается для каждого handoff:
Поэтому agent_id говорит вам какой агент выполнил работу, а parent_id говорит вам к какому workflow он принадлежал. Агент, который позже вернул управление, открывает второй ход, а не переоткрывает свой первый. Оберните run, чтобы переопределить его или сгруппировать несколько агентов под одним родителем:
Держите agent_id с низкой кардинальностью. Это основной аспект на каждой поверхности приборной панели, поэтому используйте имя роли или workflow, никогда UUID или строку за запуск.

Контроль session

Этот адаптер не принимает опцию session_id. Session поступает из окружающей области или в противном случае генерируется uuid4().hex на запуск workflow:

Опции

Human in the loop

Захватывается, когда ожидание происходит внутри инструмента:
ctx.wait_for_event в простом workflow step не захватывается. Runtime ловит drop до того, как он достигнет диспетчера, поэтому step выходит и переустанавливается позже без сигнала на ключ pause. Паттерн FunctionAgent, который документирует LlamaIndex, ждет внутри инструмента и захватывается полностью.

Частые проблемы

Добавьте additional_kwargs={"stream_options": {"include_usage": True}} к вашей LLM. См. Подсчеты токенов.
LlamaIndex не имеет стандартного поля usage. Адаптер пробует несколько известных форм, и интеграция, которая называет свои счетчики чем-то новым, не будет соответствовать ни одной из них.Сырой dict всегда отправляется, поэтому проверьте usage в payload, чтобы увидеть, как ваш поставщик их назвал.Заполненное usage рядом с пустыми столбцами токенов преднамеренно — это лучше, чем уверенное неправильное число.
Это цикл FunctionAgent, один набор за итерацию. Фильтруйте по имени hook на приборной панели. Эти timings step обычно являются причиной использовать этот адаптер, а не только адаптер модели.
Проверьте по порядку: instrument() запустился перед run; есть async with failproofai_sdk.session(): вокруг await; llama-index-core версии 0.14.23 или новее; FAILPROOFAI_SDK_STRICT=1 установлено, поэтому деградированный hook вызывает исключение вместо проглатывания.

Далее

How it works

Пары, ids, session lifecycle и delivery.

Read a trace

Следите за причинностью через session, который вы только что захватили.

Other frameworks

LangGraph, CrewAI, Pydantic AI и custom agents.