Dapr

Dapr Conversation-byggblocket dirigerar modellinferens via en Dapr-sidovagn och exponerar en IChatClient som kan stödja ett Agent Framework-.NET agent. Modellprovidern och autentiseringsuppgifterna konfigureras i Dapr Conversation-komponenten i stället för direkt i agentprocessen.

Förutsättningar

  • .NET 10 eller senare.
  • Docker och Dapr CLI.
  • En konfigurerad Dapr Conversation-komponent, till exempel en Ollama-backad komponent.

Installera programvarupaketen

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

Configuration

DAPR_GRPC_ENDPOINT="http://localhost:3501"

DAPR_GRPC_ENDPOINT är valfritt och standardvärdet http://localhost:3501är . Ange ConversationComponentName namnet på Dapr Conversation-komponenten i programkoden, till exempel ollama.

Skapa en Dapr-backad agent

Konfigurera Dapr-sidovagnsslutpunkten och konversationskomponenten via beroendeinmatning, lös IChatClientoch konvertera den till en agent.

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

Providerfunktioner beror på Dapr Conversation-komponenten och modellen bakom den.

Tools

Verktygsstöd ärvs från den konfigurerade Dapr Conversation-komponenten och modellen.

Verktyg Status Notes
Funktionsverktyg Varierar Kräver funktionsanropsstöd från den konfigurerade komponenten och modellen.
Godkännande av verktyg Varierar Tillgänglig när modellen genererar funktionsverktygsanrop.
Providerhanterade verktyg Dapr lägger inte till en separat Agent Framework-värdbaserad verktygsyta.
Lokala MCP-verktyg Körs i programprocessen.

Nästa steg