Dapr

Blok konstrukcyjny Conversation platformy Dapr kieruje inferencję modelu przez sidecar Dapr i udostępnia element IChatClient, który może stanowić zaplecze dla agenta .NET platformy Agent Framework. Dostawcę modelu i poświadczenia konfiguruje się w składniku Dapr Conversation, a nie bezpośrednio w procesie agenta.

Warning

Traktuj wyniki modelu lub osadzania oraz wywołania narzędzi generowane przez model, gdy są obsługiwane, jako niezaufane dane wejściowe aplikacji. Zweryfikuj je, zanim kod wykona efekty uboczne lub wyrenderuje zawartość. Jeśli skonfigurujesz niestandardowy punkt końcowy, sprawdź, czy ufasz jego adresowi URL i operatorowi.

Wymagania wstępne

  • .NET 10 lub nowsza wersja.
  • Docker i interfejs wiersza polecenia języka Dapr.
  • Skonfigurowany składnik konwersacji Dapr, taki jak składnik oparty na Ollama.

Instalowanie pakietów

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

Configuration

DAPR_GRPC_ENDPOINT="http://localhost:3501"

DAPR_GRPC_ENDPOINT parametr jest opcjonalny i domyślnie ma wartość http://localhost:3501. Ustaw ConversationComponentName w kodzie aplikacji nazwę składnika Dapr Conversation, na przykład ollama.

Utwórz agenta opartego na platformie Dapr

Skonfiguruj punkt końcowy sidecara Dapr i komponent Conversation za pomocą wstrzykiwania zależności, uzyskaj wystąpienie IChatClient, a następnie przekonwertuj je na agenta.

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

Możliwości dostawcy zależą od składnika Conversation platformy Dapr oraz od modelu, na którym się on opiera.

Tools

Obsługa narzędzi jest dziedziczona ze skonfigurowanego składnika i modelu konwersacji Dapr.

Narzędzie Status Notatki
Narzędzia funkcji Varies Wymaga obsługi wywoływania funkcji ze skonfigurowanego składnika i modelu.
Zatwierdzanie narzędzi Varies Dostępne, gdy model generuje wywołania funkcji narzędziowych.
Narzędzia hostowane przez dostawcę ❌ Dapr nie dodaje oddzielnej warstwy narzędzi hostowanych w ramach Agent Framework.
Lokalne narzędzia MCP ✅ Uruchamia się w procesie aplikacji.

Następne kroki