用途:让应用通过 CrewAI 运行的每段对话在 Maple Agent Sessions 中显示为单个会话,包含对话记录、每次模型调用(模型、token)、每次工具调用(名称、结果、失败)以及每个 agent 角色一条泳道。CrewAI 自身不向后端导出数据,所有 span 均来自 OpenInference;默认配置对 Maple 有三处不适用:CrewAI instrumentor 不记录模型调用(需再加 SDK 级 instrumentor)、没有 session id、没有 agent 名称属性。
主要能力与用法:要求 crewai>=1.15、Python 3.10-3.13。按实际使用的模型 SDK 安装对应 instrumentor(openai、anthropic、google-genai、bedrock、litellm 等),并用 enable_genai_semconv=True 与 skip_dep_check=True 初始化。安装命令示例:pip install "crewai>=1.15" "openinference-instrumentation-crewai>=1.1.18" "openinference-instrumentation-openai>=0.1.61" "opentelemetry-sdk>=1.45" "opentelemetry-exporter-otlp-proto-http>=1.45"。配置环境变量 OTEL_SERVICE_NAME、OTEL_RESOURCE_ATTRIBUTES、OTEL_EXPORTER_OTLP_ENDPOINT(美国 https://ingest.maple.dev,欧盟 https://ingest.eu.maple.dev)、OTEL_EXPORTER_OTLP_HEADERS、CREWAI_DISABLE_TELEMETRY=true、CREWAI_TRACING_ENABLED=false。需在 tracing.py 中创建 TracerProvider,加入自定义 CrewAIAgentNames 处理器与 BatchSpanProcessor(OTLPSpanExporter()),并在每个入口点最早 import tracing。用 with using_session(<会话 id>) 包裹每个 kickoff 调用点,为 Crew 与 Task 指定 name,把用户消息放在任务描述首行。流式 Crew 需额外包裹 span,akickoff 未被插桩需改用 kickoff_async。
适用场景与限制:适用于服务器、CLI、无服务器函数等运行 CrewAI 的应用。没有 key 时可使用 MAPLE_TEST 并由用户替换;私钥不得放入浏览器代码。azure-ai-inference 无 OpenInference instrumentor,模型调用不会被记录。Process.hierarchical 的委派工作、flow.resume、无原生函数调用的 ReAct 路径不会产生工具 span。无服务器需 force_flush(),脚本与 notebook 需在运行后 force_flush() 或 shutdown()。隐藏输入输出的开关不覆盖 crew_tasks 等属性,需要彻底隐藏时应在 OpenTelemetry Collector 中删除相应属性。