Trait LlmCodec
Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-pii-redaction -p nemo-relay-ffi -p nemo-relay-types -p nemo-relay-plugin -p nemo-relay-worker-proto -p nemo-relay-worker.
pub trait LlmCodec: Send + Sync {
// Required methods
fn decode(&self, request: &LlmRequest) -> Result<AnnotatedLlmRequest>;
fn encode(
&self,
annotated: &AnnotatedLlmRequest,
original: &LlmRequest,
) -> Result<LlmRequest>;
// Provided method
fn codec_identity(&self) -> LlmCodecIdentity { ... }
}
A bidirectional translator between opaque LlmRequest content and structured AnnotatedLlmRequest.
Codecs are implemented by framework integrations and provider adapters because each SDK has its own request format. A codec is supplied per call by the caller; the built-in provider codecs can also be selected from a raw payload via crate::codec::resolve.
Design
- Synchronous:
decode/encodeare pure data transforms (JSON restructuring), not I/O operations. This matches existing guardrails and request intercepts. Send + Sync: Required becauseNemoRelayContextStateis behindArc<RwLock<>>and accessed from async contexts.- Trait object: Codecs are registered at runtime by callers or bindings, so the Rust core cannot know concrete types at compile time. Store as
Arc<dyn LlmCodec>.
Required Methods
decode
fn decode(&self, request: &LlmRequest) -> Result<AnnotatedLlmRequest>
Parse opaque request content into structured form.
encode
fn encode(
&self,
annotated: &AnnotatedLlmRequest,
original: &LlmRequest,
) -> Result<LlmRequest>
Merge structured changes back into the opaque request.
The original parameter is the pre-intercept LlmRequest, used to preserve fields that the Codec does not structurally model. Implementations MUST use merge-not-replace semantics: overlay structured changes onto the original content, do not construct a fresh content object.
Provided Methods
codec_identity
fn codec_identity(&self) -> LlmCodecIdentity
Return this codec’s identity for LLM sanitizer context.
Custom codecs should keep the default LlmCodecIdentity::Opaque unless they have a stable runtime registration ID. Callers must not infer a provider surface from an opaque implementation or request shape.
Implementors
impl LlmCodec for AnthropicMessagesCodec
impl LlmCodec for AnthropicMessagesCodec
impl LlmCodec for OpenAIChatCodec
impl LlmCodec for OpenAIChatCodec
impl LlmCodec for OpenAIResponsesCodec
impl LlmCodec for OpenAIResponsesCodec