Dapr

Byggblocket Dapr Conversation dirigerar om modellinferens via en Dapr-sidecar och exponerar en IChatClient som kan ligga till grund för en .NET-agent i Agent Framework. 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 agent med Dapr-stöd

Konfigurera Dapr-sidecar-slutpunkten och konversationskomponenten via beroendeinjektion, resolva IChatClient och omvandla 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.

Tool Status Noteringar
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 introducerar inte något separat Agent Framework-gränssnitt för värdbaserade verktyg.
Lokala MCP-verktyg ✅ Körs i programprocessen.

Nästa steg