Skip to main content

安装

支持版本:llama-index-core 0.14.23 至 0.15。0.14.23 是工作流流式传输开始携带本适配器所读取的类型化代理事件的版本。低于此版本时,模型名称和代理结构均会丢失。

埋点

LlamaIndex 的代理 API 是异步的。每个作用域在 async withwith 下均可正常工作,并产生相同的事件。 instrument() 会向 LlamaIndex 的全局调度器附加一个事件处理器和一个 span 处理器。两者共同使代理循环可见,而不仅仅是其模型调用。
如果不在 LLM 上额外添加一个参数,追踪中的所有 token 计数都将为 null。请参阅下方的 Token 计数

Token 计数

FunctionAgent 调用 astream_chat,而 llama-index-llms-openai 在流式传输时不会发送 stream_options={"include_usage": True}。因此,提供方永远不会发送用量数据块,任何埋点工具也无从读取。 这是上游 LlamaIndex 的行为。请在你的 LLM 上手动开启:
在相同运行和模型下的对比: 非流式调用(llm.chatllm.achat)无需任何配置即可上报用量。只有流式路径(即默认的代理路径)才需要此配置。

记录的内容

当你设置了 FunctionAgent.name 时,agent_id 取该值,否则取工作流类名。在 AgentWorkflow 下,每个轮到的代理都会在工作流下获得自己的嵌套 span,因此一次移交会呈现为两个独立代理,而非同一个。 检索输出会经过摘要处理而非直接转储。检索器返回的文档如果完整存储到 payload 中,每次查询都会将你的语料库写入事件存储。因此只保留文档数量、评分范围和截断后的摘要片段。

示例

代理循环在追踪中以 hook 对的形式呈现:init_runsetup_agentrun_agent_stepparse_agent_outputcall_toolaggregate_tool_results。它们属于框架自身的循环,因此记录为 hook 而非 agent,以保持 agent_id 的语义清晰。

为 span 命名

当你设置了 FunctionAgent.name 时,agent_id 取该值,否则取工作流类名。
AgentWorkflow 中,该名称同样用于记录每次移交:
因此,agent_id 告诉你哪个代理完成了工作,parent_id 告诉你它属于哪个工作流。代理在之后重新获得控制权时,会开启第二轮,而不是重新打开第一轮。 可通过包装运行来覆盖名称,或将多个代理归入同一父级:
请保持 agent_id 的低基数。它是所有仪表盘视图的主要分组维度,应使用角色名或工作流名,切勿使用 UUID 或每次运行都不同的字符串。

控制 Session

本适配器不接受 session_id 选项。Session 来自外层作用域,否则每次工作流运行会自动生成一个 uuid4().hex

选项

人机协作

当等待发生在工具内部时会被捕获:
普通工作流步骤中的 ctx.wait_for_event 不会被捕获。运行时会在信号到达调度器之前拦截该挂起,导致步骤退出并在之后重新运行,没有任何信号可用于标记暂停点。LlamaIndex 文档中的 FunctionAgent 模式在工具内部等待,可以被完整捕获。

常见问题

在你的 LLM 上添加 additional_kwargs={"stream_options": {"include_usage": True}}。参阅 Token 计数
LlamaIndex 没有标准的 usage 字段。适配器会尝试几种已知的数据结构,若某个集成使用了新的计数器命名,则无法匹配。原始 dict 始终会随 payload 一起发送,可查看 usage 字段了解你的提供方使用的字段名。usage 有值但 token 列为空是有意为之——这比给出一个自信的错误数字更好。
这是 FunctionAgent 循环的正常表现,每次迭代产生一组。可在仪表盘上按 hook 名称过滤。这些步骤的耗时统计通常正是使用本适配器而非纯模型适配器的意义所在。
按此顺序排查:instrument() 在运行前已执行;await 外层有 async with failproofai_sdk.session():llama-index-core 版本为 0.14.23 或更高;已设置 FAILPROOFAI_SDK_STRICT=1,以便降级的 hook 抛出异常而非被静默吞掉。

下一步

工作原理

Pair、ID、session 生命周期与数据投递。

读懂追踪

在刚捕获的 session 中跟踪因果链路。

其他框架

LangGraph、CrewAI、Pydantic AI 及自定义代理。