Dapr

Le bloc élémentaire Conversation Dapr achemine l’inférence du modèle via un sidecar Dapr et expose un IChatClient pouvant servir de support à un assistant .NET Agent Framework. Le fournisseur de modèles et les informations d’identification sont configurés dans le composant Conversation Dapr plutôt que directement dans le processus de l’agent.

Prerequisites

  • .NET 10 ou version ultérieure.
  • Docker et l’interface CLI Dapr.
  • Un composant Dapr Conversation configuré, tel qu’un composant adossé à Ollama.

Installer les packages

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

Configuration

DAPR_GRPC_ENDPOINT="http://localhost:3501"

DAPR_GRPC_ENDPOINT est facultatif et est défini par défaut sur http://localhost:3501. Définissez ConversationComponentName dans le code de l’application sur le nom du composant de conversation Dapr, par exemple ollama.

Créer un assistant basé sur Dapr

Configurez le point de terminaison du sidecar Dapr et le composant Conversation par injection de dépendances, résolvez le IChatClient et convertissez-le en assistant.

// 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."));

Les fonctionnalités du fournisseur dépendent du composant Conversation Dapr et du modèle derrière celui-ci.

Tools

La prise en charge des outils est héritée du composant Conversation Dapr et du modèle configurés.

Tool Status Remarques
Outils de fonction Varie Nécessite la prise en charge des appels de fonction à partir du composant et du modèle configurés.
Approbation de l’outil Varie Disponible lorsque le modèle produit des appels à des outils de fonction.
Outils hébergés par un fournisseur Dapr n’ajoute pas d’aire d’outil hébergée par Agent Framework distincte.
Outils MCP locaux S’exécute dans le processus de l’application.

Étapes suivantes