用途:当应用希望为工具或 LLM 集成使用比原始 JSON 更强的领域类型时,可使用本技能。默认建议先采用纯 JSON,待应用已有稳定领域模型后再引入类型化包装器。注意中间件仍基于 JSON 而非类型化对象运行。
主要能力:类型化值编解码器是纯边界转换器,在 NeMo Relay 发出事件或运行中间件前,把面向应用的值转为 JSON,再把 JSON 转回框架回调或调用方类型。Python 提供 JsonPassthrough、DataclassCodec、PydanticCodec 和 BestEffortAnyCodec;Node.js 提供 JsonPassthrough 及自定义 Codec<T> 实现。BestEffortAnyCodec 仅用于没有严格 schema 的边界,框架拥有稳定 schema 时优先用 dataclass、Pydantic 或显式 Node.js codec。
提供方编解码器与类型化值编解码器不同,用于规范化特定提供方的 LLM 请求与响应,使中间件和订阅者能检查消息、工具、模型名、生成参数和响应注解。内置提供方编解码器包括 Python、Node.js 和 Rust 中的 OpenAIChatCodec、OpenAIResponsesCodec、AnthropicMessagesCodec,应选择与实际提供方载荷形状匹配的 codec。响应编解码器为 LLM 结束事件注解 id、model、message、tool_calls、finish_reason、usage 等字段,但不重写调用方可见响应。请求编解码器在 LLM 请求拦截前运行,拦截可收到原始 LLMRequest 和可选注解请求,encode 会在执行拦截和提供方回调前合并注解编辑。
关键规则:类型化包装器目前是 Python 和 Node.js 的一等路径,Rust 直接使用 codec trait;请求/响应转换属于 codec;拦截和护栏在编码后看到 JSON 值;中间件所做的更改会保留到解码步骤。
选择建议:JSON 原生值用 JsonPassthrough;Python 已有模型用 DataclassCodec 或 PydanticCodec;领域特定线格式用自定义 codec;仅在需要广泛灵活性时用 BestEffortAnyCodec;提供方 codec 用于 LLM 提供方载荷而非应用领域对象转换。
限制:资料未提供安装命令、价格、平台支持范围等细节。