Recursos de IA em .NET, de Microsoft.Extensions.AI a agentes, RAG e operação, explicados a fundo, um de cada vez.
IChatClient, ChatMessage e ChatOptions, GetResponseAsync versus streaming com ToChatResponse, o formato do ChatResponse com Usage real do Ollama, histórico sem estado versus ConversationId, a ordem do ChatClientBuilder provada com um DelegatingChatClient, UseLogging e UseDistributedCache medidos, AddChatClient e AddKeyedChatClient no DI, GetService e ChatClientMetadata, troca de provedor por um fake e as falhas exatas do OllamaSharp.
GetResponseAsync<T> e ChatResponse<T> com Ollama local, o JSON schema gerado pelo MEAI e o corpo HTTP real com o campo format, o embrulho em data para arrays e primitivos, ResponseFormat manual e o bug de JsonSerializerOptions, as falhas exatas vindas de um fake, required e Range depois do parse, retry limitado, nomes de enum, descrições e campos anuláveis medidos, e o custo em tokens do schema.
AIFunctionFactory.Create e o JSON schema gerado, ChatOptions.Tools e ToolMode ignorado pelo OllamaSharp, o loop manual com FunctionCallContent e FunctionResultContent, UseFunctionInvocation com contagem de chamadas, limites de iteração e de erros, IncludeDetailedErrors, AllowConcurrentInvocation, FunctionInvoker, ferramentas desconhecidas, argumentos inválidos, aprovação com ApprovalRequiredAIFunction, validação dentro da ferramenta e o custo em tokens das definições.
AsAIAgent e ChatClientAgent, RunAsync e RunStreamingAsync com AgentResponse, o histórico que a sessão reenvia a cada turno, ConversationId de serviços com estado, serializar a sessão e continuar em outro processo, a perda de mensagens com execuções concorrentes, ferramentas e aprovação no agente, um agente como ferramenta de outro, middleware de execução e de função, context providers que acumulam mensagens no histórico, saída estruturada e OpenTelemetry.
Um servidor MCP stdio no generic host com tools, prompt e resource, um cliente com McpClient, as mensagens JSON-RPC reais (server/discover da revisão 2026-07-28 e o initialize antigo), o erro de escrever no stdout, os modos de sessão do transporte HTTP, as tools MCP como AIFunction com qwen3:4b-instruct e o risco de prompt injection vindo de uma tool.
Gere embeddings com IEmbeddingGenerator sobre o Ollama, compare vetores com TensorPrimitives, meça prefixos de tarefa, cache e entradas ruins, e grave e busque vetores com o mesmo código em InMemory e SQLite (sqlite-vec), vendo por que o score muda de sentido entre providers.
Monte o ciclo completo de RAG em .NET sobre um Ollama local, medindo estratégias de chunking, reingestão idempotente, citações, recusas, a janela de contexto, um chunk envenenado, um wrapper IChatClient e um conjunto de regressão.