For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
  • About NVIDIA NeMo Relay
    • Overview
    • Architecture
    • Ecosystem
    • Concepts
    • Release Notes
  • Getting Started
    • Agent Runtime Primer
    • Prerequisites
    • Installation
    • Configuration / Setup
    • Quick Start
  • NVIDIA NeMo Relay CLI
    • About
    • Basic Usage
    • Claude Code
    • Codex
    • Cursor
    • Hermes Agent
  • Supported Integrations
    • About
    • OpenClaw Plugin Guide
    • LangChain Integration Guide
    • LangGraph Integration Guide
    • Deep Agents Integration Guide
  • Instrument Applications
    • About
    • Adding Scopes and Marks
    • Instrument a Tool Call
    • Instrument an LLM Call
    • Add Middleware
    • Code Examples
  • Observability Plugin
    • About
    • Configuration
    • Agent Trajectory Interchange Format (ATIF)
    • Agent Trajectory Observability Format (ATOF)
    • OpenTelemetry
    • OpenInference
  • Adaptive Plugin
    • About
    • Configuration
    • Adaptive Cache Governor (ACG)
    • Adaptive Hints
  • NeMo Guardrails Plugin
    • About
    • Configuration
  • Integrate into Frameworks
    • About
    • Adding Scopes
    • Wrap Tool Calls
    • Wrap LLM Calls
    • Handle Non-Serializable Data
    • Using Codecs
    • Provider Codecs
    • Provider Response Codecs
    • Code Examples
  • Build Plugins
    • About
    • Define a Plugin
    • Validate Plugin Configuration
    • Plugin Configuration Files
    • Register Plugin Behavior
    • Design Plugin Configuration
    • NeMo Guardrails Example Plugin
    • Code Examples
  • Contribute
    • About
    • Development Setup
    • Workflow and Reviews
    • Testing and Documentation
  • Reference
    • APIs
      • Python Library Reference
      • Node.js Library Reference
      • Rust Library Reference
        • nemo-relay
          • api
          • codec
            • anthropic
            • openai_chat
            • openai_responses
            • request
            • response
            • streaming
            • traits
              • LlmCodec
              • LlmResponseCodec
          • config_editor
          • error
          • json
          • observability
          • plugin
          • plugins
          • stream
          • editor_config
        • nemo-relay-adaptive
        • nemo-relay-ffi
    • Performance
  • Resources
    • Support and FAQs
    • Glossary
    • Troubleshooting Guide
    • Community
    • Legal
NVIDIANVIDIA
Developer-friendly docs for your API
Privacy Policy | Your Privacy Choices | Terms of Service | Accessibility | Corporate Policies | Product Security | Contact

Copyright © 2026, NVIDIA Corporation.

LogoLogo
On this page
  • Design
  • Two-Phase Decode
  • Required Methods
  • decode_response
  • Implementors
  • impl LlmResponseCodec for AnthropicMessagesCodec
  • impl LlmResponseCodec for OpenAIChatCodec
  • impl LlmResponseCodec for OpenAIResponsesCodec
ReferenceAPIsRust Library Referencenemo-relaycodectraits

Trait LlmResponse Codec

||View as Markdown|
Previous

Trait LlmCodec

Next

Module config_editor

Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-ffi.

pub trait LlmResponseCodec: Send + Sync {
    // Required method
    fn decode_response(&self, response: &Json) -> Result<AnnotatedLlmResponse>;
}

Decode-only codec for LLM API responses.

Unlike LlmCodec (which is bidirectional for requests), response codecs are introspection-only: they parse a raw response into structured form but never need to encode back. This matches the pipeline design where responses are observed, not modified.

Design

  • Synchronous: decode_response is a pure data transform (JSON parsing), not an I/O operation.
  • Send + Sync: Required for storage in Arc behind RwLock.
  • Trait object: Codecs are registered at runtime, stored as Arc<dyn LlmResponseCodec>.
  • Fallible: Returns Result; managed call sites may omit annotations on decode failure, while manual lifecycle bindings may surface the error.

Two-Phase Decode

Implementations should use a two-phase decode pattern:

  1. Deserialize raw JSON into API-specific intermediate structs
  2. Map intermediate structs into the normalized AnnotatedLlmResponse

Required Methods

decode_response

fn decode_response(&self, response: &Json) -> Result<AnnotatedLlmResponse>

Parse a raw JSON response into normalized structured form.

Implementations should return Err only for genuinely unparseable input.

Implementors

impl LlmResponseCodec for AnthropicMessagesCodec

impl LlmResponseCodec for AnthropicMessagesCodec

impl LlmResponseCodec for OpenAIChatCodec

impl LlmResponseCodec for OpenAIChatCodec

impl LlmResponseCodec for OpenAIResponsesCodec

impl LlmResponseCodec for OpenAIResponsesCodec