| 名称 | nemo-relay-plugin-observability |
| 描述 | 当需要通过内置插件、订阅器或导出器选择或配置NeMo Relay 0.6或0.7的可观测性时使用此技能,包括原始ATOF事件、ATIF轨迹、OpenTelemetry、OpenInference或自定义事件处理。 |
| 开源协议 | Apache-2.0 metadata: |
| 作者 | NVIDIA Corporation and Affiliates |
配置可观测性插件
首先从由内置可观测性插件管理的导出器开始。这是可复用进程配置的默认方式,并且对大多数用户而言是首个最佳插件,因为它能使Relay捕获的活动变得可见。在添加其他遥测目的地之前,先选择一个可证明有效的输出。
仅在测试、脚本或应用程序需要直接控制注册名称、收集窗口或刷新时机时,才使用手动订阅器或导出器API。两种路径都消费相同的标准化事件流。
选择Relay版本
在提供配置或绑定API之前,先确定应用程序使用NeMo Relay 0.6还是0.7。优先使用已安装的包版本、锁文件或清单。无法确定版本时需询问用户;不要在一个示例中混用两个版本。
- 0.6 使用可观测性配置版本2。OpenTelemetry和OpenInference是单独的导出器,分别对应
OpenTelemetryConfig/OpenTelemetrySubscriber和OpenInferenceConfig/OpenInferenceSubscriber。 - 0.7 使用可观测性配置版本3。一个类型化的OpenTelemetry导出器提供
full、gen_ai和openinference投影。
选择输出
选择与用户的即时检查目标最匹配的输出:
- 控制台或自定义事件处理 使用手动订阅器进行短生命周期进程内的检查。
- 原始规范化生命周期事件
使用ATOF JSONL;阅读
references/atof.md。 - 可移植执行轨迹
使用ATIF;阅读
references/atif.md。 - OTLP追踪
对于0.6,选择独立的OpenTelemetry或OpenInference导出器。对于0.7,选择类型化的OpenTelemetry端点(
full、gen_ai或openinference)。阅读references/opentelemetry.md;若对应OpenInference感知后端,再阅读references/openinference.md。
先选择一个输出并验证,然后再添加其他。ATOF是默认的本地验证方式,因为它以最少的转换保留原始事件流。首次验证使用合成的非敏感负载。在导出器接收生产负载之前,添加并验证脱敏;验证导出器时切勿显示完整事件记录。
嵌入式事件与订阅器模型
在解释捕获与导出的关系时,使用此模型:
- NeMo Relay从作用域、标记、受管工具调用、受管LLM调用、中间件和手动生命周期API中发出一个标准化事件流。
- 订阅器消费事件但不定义事件模型。多个订阅器可同时观察同一条流,用于日志记录、导出、分析或诊断。
- 全局订阅器在移除前保持进程级活跃。
- 作用域本地订阅器由一个活动作用域拥有,当该作用域关闭时消失。
- 插件安装的订阅器是可复用、配置驱动的运行时组件。
- 导出器型订阅器保留原始ATOF或将事件流转换为ATIF或版本对应的OpenTelemetry/OpenInference形式。
- 当调用使用受管帮助器或手动生命周期参数提供字段时,事件负载体现经过护栏的后置输入输出。
- LLM注解遵循新鲜度规则:
- 每个所属代理作用域开始时是新鲜的,
compaction标记会刷新它。 - 第一次随后的LLM启动保留完整的注解历史。之后的启动保留系统指令、最新用户消息以及后续所有助手或工具消息。
- 当请求编解码器提供注解时,Relay对provider形状的事件输入应用相同的事件专用投影,而不改变provider执行。
- 每个所属代理作用域开始时是新鲜的,
- 事件字段包括通过ATOF的
data字段实现的语义输入/输出、类型化配置文件数据(如model_name和tool_call_id),以及编解码器提供的、用于进程内订阅器和导出器的已注解LLM请求/响应数据。 - 一等技能工具以及读取完整
SKILL.md的请求会自动在工具跨度下发出skill.load标记。负载中仅包含skill_name;元数据记录加载来源和工具名称。部分读取不计入,含混的斜杠命令展开使用单独的skill.load.inferred名称。即使工具执行随后失败,eager标记仍然存在。
共享生命周期
- 创建导出器或订阅器。
- 在执行相关作用域工作之前,用唯一名称注册它。
- 在作用域内运行由NeMo Relay插桩的工作。
- 按照导出器特定参考中记录的顺序进行刷新和注销。
- 当进程或子系统完成后将其关闭。
绑定名称
使用所选语言绑定和Relay版本导出的名称:
- Python 0.6:
nemo_relay.subscribers.register(...)、AtofExporter、AtifExporter、OpenTelemetrySubscriber和OpenInferenceSubscriber - Python 0.7:同样的注册和文件导出器,加上覆盖全部三种类型化投影的
OpenTelemetrySubscriber - Node.js 通过其根导出遵循相同的0.6/0.7划分
- Rust:
nemo_relay::api::subscriber和nemo_relay::observability::* - Go:源码优先包装器暴露等价的注册、导出器和订阅器生命周期方法
何时加载参考
只加载所选输出需要的参考:
- 加载
references/atof.md可了解用于本地调试或离线检查的原始JSONL事件。 - 加载
references/atif.md可了解ATIF轨迹。 - 加载
references/opentelemetry.md可了解OTLP/OpenTelemetry追踪。 - 加载
references/openinference.md可了解独立的0.6 OpenInference导出器或0.7的openinferenceOpenTelemetry投影。
何时使用另一个技能
当任务属于相邻工作流时,选择另一个技能:
- 使用
nemo-relay-plugin-build将基于订阅器的导出行为打包为可复用插件。 - 当未对作用域、工具调用或LLM调用进行插桩时,使用
nemo-relay-get-started或nemo-relay-instrument-calls。 - 使用
nemo-relay-debug-runtime-integration诊断缺失的遥测数据。
相关技能
将以下技能用于相邻工作流:
- 使用
nemo-relay-instrument-calls对应用程序调用进行插桩。 - 使用
nemo-relay-instrument-typed-wrappers添加类型化包装器。 - 使用
nemo-relay-plugin-build打包可复用行为。 - 使用
nemo-relay-debug-runtime-integration诊断缺失事件。