用途:把应用里通过 smolagents 运行的每次对话,在 Maple Agent Sessions 中呈现为一个会话,包含转录、每次模型调用(模型、token)、每次工具调用(名称、参数、结果、失败),以及每个受管智能体一条轨道。所有 span 来自 openinference-instrumentation-smolagents。
主要能力与用法:需 smolagents>=1.26、Python>=3.10。安装 openinference-instrumentation-smolagents>=0.1.40、opentelemetry-sdk、opentelemetry-exporter-otlp-proto-http。在 tracing.py 中创建 TracerProvider,加自定义 SpanProcessor(为子智能体命名 gen_ai.agent.name、把 SimpleTool span 改名为 execute_tool <工具名> 并记录调用参数)和 BatchSpanProcessor(OTLPSpanExporter()),再调用 SmolagentsInstrumentor().instrument(tracer_provider=provider, config=TraceConfig(enable_genai_semconv=True))。需要在每个入口顶部 import tracing。若已有 TracerProvider 或被 instrument,应复用而非新建。环境变量使用 OTEL_EXPORTER_OTLP_ENDPOINT(美国 https://ingest.maple.dev、欧盟 https://ingest.eu.maple.dev,仅基址)与 OTEL_EXPORTER_OTLP_HEADERS。以 using_session(<对话 id>) 包裹每个 agent.run(),实现一次对话一个会话;每个对话维护一个 agent 对象或持久化 memory。
限制:smolagents 本身无对话 id,需应用提供并避免每次请求用新 UUID 或常量。工具异常会自动标记失败,勿在工具内捕获后返回错误字符串。非本地执行器(e2b、docker、modal 等)的 CodeAgent 不产生工具 span。工具 span 无 gen_ai.tool.call.id;工具失败也会使所在 Step span 变为 ERROR。仅记录输入/输出 token,缓存与推理 token 不记录;不记录成本,会话显示为未定价。隐藏开关不遮蔽 run span 的 smolagents.task 属性。服务端无服务器处理器需在 finally 中 provider.force_flush()。ingest 单请求上限 20 MiB。缺少 ingest key 时应记录一条警告并跳过导出,不得使应用崩溃。验证可在 Maple Agent Sessions(https://app.maple.dev/agent-sessions,欧盟 app.eu.maple.dev)按服务名筛选,确认每个对话 id 恰好一个会话。