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