Composing IChatClient Middleware: Why Order Matters

Compare cache, retry, and telemetry order around IChatClient with a fake provider, exact event traces, cancellation, and a streaming failure.

October 25, 2026 · 13 min · Lukas Walter

Decorating IChatClient Without Tangling the Application

Compose shared chat-client behavior in .NET without moving feature policy into middleware or hiding streaming, caching, and retry costs.

September 30, 2026 · 7 min · Lukas Walter

Building the .NET AI App Foundation

A small ASP.NET Core foundation for model access, validated configuration, tracing, buffered and streaming HTTP contracts, and future AI capabilities.

September 20, 2026 · 11 min · Lukas Walter

Dependency Injection for AI Components

Register .NET AI clients, tools, prompts, and retrieval services with explicit lifetimes, safe request state, and clear disposal ownership.

September 9, 2026 · 10 min · Lukas Walter

Provider Independence from Day One

A C# implementation for keeping provider coupling at explicit boundaries while making model capabilities and provider-specific behavior visible.

August 25, 2026 · 12 min · Lukas Walter

Embeddings in .NET

How to generate text embeddings with Microsoft.Extensions.AI and keep the model, dimensions, comparison metric, and indexing behavior compatible.

August 19, 2026 · 11 min · Lukas Walter

Designing an AI Service Layer

How to place model access, prompts, retrieval, tools, and application policy behind a maintainable use-case boundary in a .NET application.

August 12, 2026 · 11 min · Lukas Walter

Stop Letting Provider SDKs Define Your .NET AI Architecture

How Microsoft.Extensions.AI keeps provider SDKs at the edge of .NET applications through shared abstractions, dependency injection, and middleware.

July 29, 2026 · 9 min · Lukas Walter

Use HybridCache for expensive AI work in .NET

Use HybridCache to avoid duplicate AI model calls, with a cached summarization example and deliberate cache-key design.

July 14, 2026 · 3 min · Lukas Walter