Skip to content

TokenUsageRecordingMiddleware

NexusLabs.Needlr.AgentFramework.Workflows

NexusLabs.Needlr.AgentFramework.Workflows.Budget

TokenUsageRecordingMiddleware Class

Lightweight Microsoft.Extensions.AI.DelegatingChatClient that records token usage from each LLM call into NexusLabs.Needlr.AgentFramework.Budget.ITokenBudgetTracker. Does NOT enforce budgets — that is the responsibility of TokenBudgetChatMiddleware.

public sealed class TokenUsageRecordingMiddleware : Microsoft.Extensions.AI.DelegatingChatClient

Inheritance System.Object 🡒 Microsoft.Extensions.AI.DelegatingChatClient 🡒 TokenUsageRecordingMiddleware

Remarks

Wired automatically by UsingTokenTracking(), UsingTokenBudget(), and UsingDiagnostics(). Idempotent — only one instance is wired regardless of how many extensions request it.

Constructors

TokenUsageRecordingMiddleware(IChatClient, ITokenBudgetTracker) Constructor

public TokenUsageRecordingMiddleware(Microsoft.Extensions.AI.IChatClient innerClient, NexusLabs.Needlr.AgentFramework.Budget.ITokenBudgetTracker tracker);

Parameters

innerClient Microsoft.Extensions.AI.IChatClient

The inner chat client to delegate to.

tracker NexusLabs.Needlr.AgentFramework.Budget.ITokenBudgetTracker

The token budget tracker to record usage into.

Methods

TokenUsageRecordingMiddleware.GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) Method

Sends chat messages and returns the response.

public override System.Threading.Tasks.Task<Microsoft.Extensions.AI.ChatResponse> GetResponseAsync(System.Collections.Generic.IEnumerable<Microsoft.Extensions.AI.ChatMessage> messages, Microsoft.Extensions.AI.ChatOptions? options=null, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));

Parameters

messages System.Collections.Generic.IEnumerable<Microsoft.Extensions.AI.ChatMessage>

The sequence of chat messages to send.

options Microsoft.Extensions.AI.ChatOptions

The chat options with which to configure the request.

cancellationToken System.Threading.CancellationToken

The System.Threading.CancellationToken to monitor for cancellation requests. The default is System.Threading.CancellationToken.None.

Implements GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Returns

System.Threading.Tasks.Task<Microsoft.Extensions.AI.ChatResponse>
The response messages generated by the client.

Exceptions

System.ArgumentNullException
messages is null.