SuperAPI AI 工具集

maple-agent-tracing-litellm

智能体与模型

查看项目

更新于 10-16 00:05

技能介绍

用途:把 LiteLLM 的模型调用追踪与应用自身的智能体循环合并,在 Maple 中形成“一次对话=一个 Agent Session、一次运行=一个 turn”的完整链路,包含 transcript、带 token 的 chat span、带参数与结果的 execute_tool span、失败工具标记与子智能体独立泳道。

主要能力:使用 LiteLLM 的 v2 OTel logger(OpenTelemetryV2),它依据 litellm_session_id 写入 gen_ai.conversation.id(Maple 的会话键);应用必须自行发出 invoke_agent 与 execute_tool span,因为 LiteLLM 只追踪模型调用,不含智能体循环、工具执行与对话概念。v2 日志器只追踪异步调用(acompletion、Router.acompletion),同步调用不产生 span;默认的 v1 日志器不适合 Maple(无 conversation id、在已结束父 span 下写入会丢数据)。

必要用法:先检测版本,LiteLLM 1.103.x 需 OTel <= 1.43.0,>=1.44 会报 ModuleNotFoundError: No module named 'opentelemetry._events';1.104 起可解除锁定。SDK 路径安装:pip install "litellm==1.103.0" "opentelemetry-sdk==1.43.0" "opentelemetry-exporter-otlp-proto-http==1.43.0",在 tracing.py 中构建 TracerProvider 并注册 BatchSpanProcessor,再设 litellm.callbacks=[OpenTelemetryV2(...)]。已有 TracerProvider 时复用,不要再建第二个;移除已有的 "otel" 回调以免重复 span。环境变量包含 OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.maple.dev(EU 为 https://ingest.eu.maple.dev)、OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <key>"、OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf,key 缺失时只告警并禁用导出,不可抛异常。自建 LiteLLM Proxy 路径需在 config.yaml 加 callbacks: ["otel"],并设置 LITELLM_OTEL_V2=true 等变量,应用侧每请求发送 traceparent 与 x-litellm-session-id;此时不要在应用内再注册 LiteLLM 日志器。内容捕获用 capture_message_content="span_only" 以生成 transcript。脚本、CLI、Lambda、notebook 与 worker 需调用 flush_tracing()(含 GLOBAL_LOGGING_WORKER.flush() 与 provider.force_flush()),否则最后一次调用会丢失。

适用场景与限制:适用于控制代码的 LiteLLM SDK 或自控代理的异步智能体应用;不确定之处暂未提供。已知限制:代理路径下 Maple 会话页 LLM 调用数会翻倍(会话列表计数、token、成本、transcript 正确);v1 回退无会话 id,框架显示 Unidentified 且不计价;线程池会丢失 OTel 上下文,需用 contextvars.copy_context().run 包裹。