Dapr

El bloque de creación de conversaciones de Dapr encamina la inferencia del modelo a través de un sidecar de Dapr y expone un IChatClient que puede servir de respaldo para un agente .NET de Agent Framework. El proveedor del modelo y las credenciales se configuran en el componente de conversación de Dapr, en lugar de configurarse directamente en el proceso del agente.

Prerequisites

  • .NET 10 o posterior.
  • Docker y la CLI de Dapr.
  • Un componente de conversación de Dapr configurado, como un componente basado en Ollama.

Instalación de los paquetes

dotnet add package Dapr.AI.Microsoft.Extensions
dotnet add package Microsoft.Agents.AI --prerelease

Configuration

DAPR_GRPC_ENDPOINT="http://localhost:3501"

DAPR_GRPC_ENDPOINT es opcional y el valor predeterminado es http://localhost:3501. Establezca ConversationComponentName en el código de la aplicación con el nombre del componente de conversación de Dapr, como ollama.

Creación de un agente respaldado por Dapr

Configure el extremo sidecar de Dapr y el componente Conversation mediante la inyección de dependencias, resuelva IChatClient y conviértalo en un agente.

// the sidecar (see this sample's README). Override it with the DAPR_GRPC_ENDPOINT environment
// variable if you run the sidecar on a different port.
var daprGrpcEndpoint = Environment.GetEnvironmentVariable("DAPR_GRPC_ENDPOINT") ?? "http://localhost:3501";

// Register the Dapr Conversation client with dependency injection.
var app = Host.CreateDefaultBuilder()
    .ConfigureServices(services =>
    {
        // Configure the gRPC endpoint for the Dapr sidecar.
        services.AddDaprConversationClient((_, builder) => builder.UseGrpcEndpoint(daprGrpcEndpoint));
        // Provide the name of the Conversation component loaded in the sidecar to use.
        services.AddDaprChatClient(opt => opt.ConversationComponentName = "ollama");
    }).Build();

// Get an instance of the Dapr chat client from the dependency injection container.
using var scope = app.Services.CreateScope();
var daprChatClient = scope.ServiceProvider.GetRequiredService<IChatClient>();

// Use this chat client to construct an AIAgent.
AIAgent agent = daprChatClient.AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

// Invoke the agent and output the text result.
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));

Las capacidades del proveedor dependen del componente de conversación de Dapr y del modelo subyacente.

Tools

La compatibilidad con herramientas se hereda del componente Conversación de Dapr y del modelo configurados.

Herramienta Situación Notas
Herramientas de funciones Varía Requiere compatibilidad con llamadas a funciones desde el componente y el modelo configurados.
Aprobación de herramientas Varía Disponible cuando el modelo genera llamadas a function-tool.
Herramientas hospedadas por el proveedor Dapr no añade una capa independiente de herramientas alojadas para Agent Framework.
Herramientas de MCP locales Se ejecuta en el proceso de la aplicación.

Pasos siguientes