Use this guide when a framework, SDK, or provider adapter owns model invocation and you need NeMo Relay to observe and control those provider calls.
You will place a managed NeMo Relay LLM execution wrapper at the provider boundary. The wrapper emits LLM lifecycle events, runs LLM middleware, attaches the call to the active scope, records the model_name, and returns the provider response to the framework.
You need:
LLMRequest.Follow this sequence to keep framework work attached to the expected runtime context.
LLMRequest.model_name.Use a request or response codec when provider payloads need normalization before middleware or events see them. Use Provider Codecs for those cases.
The examples below wrap one provider call and attach it to the active parent scope.
Use the LLM stream execute helper when the framework exposes a stream boundary that NeMo Relay can own. Stream wrappers preserve the same scope and middleware model while letting subscribers observe the completed response after chunks are collected.
If the framework owns the stream internally, emit explicit start and end lifecycle events around the provider stream and use mark events for retry, queue, and partial-output milestones.
Run one provider path and check:
model_name.Check these symptoms first when the workflow does not behave as expected.
model_name from the provider payload, model client, or framework run configuration.LLMRequest with JSON-compatible content before calling NeMo Relay.Use these links to continue from this workflow into the next related task.