配置NeMoRelay可观测性插件Skill nemo-relay-plugin-observability

该技能用于指导用户选择并配置NeMo Relay 0.6或0.7的可观测性功能。它涵盖内置插件管理、订阅器和导出器API,支持原始ATOF事件、ATIF轨迹、OpenTelemetry/OpenInference追踪以及自定义事件处理,帮助用户准确捕获Relay事件流并选择适合的导出格式。关键词:NeMo Relay、可观测性、插件、订阅器、导出器、ATOF、ATIF、OpenTelemetry、OpenInference、OTLP、事件流、追踪、调试。

技能治理 0 次安装 0 次浏览 更新于 9/7/2026
名称 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/OpenTelemetrySubscriberOpenInferenceConfig/OpenInferenceSubscriber
  • 0.7 使用可观测性配置版本3。一个类型化的OpenTelemetry导出器提供fullgen_aiopeninference投影。

选择输出

选择与用户的即时检查目标最匹配的输出:

  • 控制台或自定义事件处理 使用手动订阅器进行短生命周期进程内的检查。
  • 原始规范化生命周期事件 使用ATOF JSONL;阅读references/atof.md
  • 可移植执行轨迹 使用ATIF;阅读references/atif.md
  • OTLP追踪 对于0.6,选择独立的OpenTelemetry或OpenInference导出器。对于0.7,选择类型化的OpenTelemetry端点(fullgen_aiopeninference)。阅读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_nametool_call_id),以及编解码器提供的、用于进程内订阅器和导出器的已注解LLM请求/响应数据。
  • 一等技能工具以及读取完整SKILL.md的请求会自动在工具跨度下发出skill.load标记。负载中仅包含skill_name;元数据记录加载来源和工具名称。部分读取不计入,含混的斜杠命令展开使用单独的skill.load.inferred名称。即使工具执行随后失败,eager标记仍然存在。

共享生命周期

  1. 创建导出器或订阅器。
  2. 在执行相关作用域工作之前,用唯一名称注册它。
  3. 在作用域内运行由NeMo Relay插桩的工作。
  4. 按照导出器特定参考中记录的顺序进行刷新和注销。
  5. 当进程或子系统完成后将其关闭。

绑定名称

使用所选语言绑定和Relay版本导出的名称:

  • Python 0.6:nemo_relay.subscribers.register(...)AtofExporterAtifExporterOpenTelemetrySubscriberOpenInferenceSubscriber
  • Python 0.7:同样的注册和文件导出器,加上覆盖全部三种类型化投影的OpenTelemetrySubscriber
  • Node.js 通过其根导出遵循相同的0.6/0.7划分
  • Rust:nemo_relay::api::subscribernemo_relay::observability::*
  • Go:源码优先包装器暴露等价的注册、导出器和订阅器生命周期方法

何时加载参考

只加载所选输出需要的参考:

  • 加载references/atof.md可了解用于本地调试或离线检查的原始JSONL事件。
  • 加载references/atif.md可了解ATIF轨迹。
  • 加载references/opentelemetry.md可了解OTLP/OpenTelemetry追踪。
  • 加载references/openinference.md可了解独立的0.6 OpenInference导出器或0.7的openinference OpenTelemetry投影。

何时使用另一个技能

当任务属于相邻工作流时,选择另一个技能:

  • 使用nemo-relay-plugin-build将基于订阅器的导出行为打包为可复用插件。
  • 当未对作用域、工具调用或LLM调用进行插桩时,使用nemo-relay-get-startednemo-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诊断缺失事件。