Delen via


Stapsgewijze migratiehandleiding voor Planner

Deze migratiehandleiding laat zien hoe u migreert van FunctionCallingStepwisePlanner naar een nieuwe aanbevolen benadering voor het plannen van de mogelijkheid: Automatisch functieaanroepen. De nieuwe benadering produceert de resultaten betrouwbaarder en gebruikt minder tokens in vergelijking met FunctionCallingStepwisePlanner.

Plangeneratie

De volgende code laat zien hoe u een nieuw abonnement genereert met automatisch functieaanroepen met behulp van FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(). Nadat een aanvraag naar een AI-model is verzonden, bevindt het plan zich in ChatHistory het object waarin een bericht met Assistant rol een lijst met functies (stappen) bevat die moeten worden aangeroepen.

Oude benadering:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4", Environment.GetEnvironmentVariable("OpenAI__ApiKey"))
    .Build();

FunctionCallingStepwisePlanner planner = new();

FunctionCallingStepwisePlannerResult result = await planner.ExecuteAsync(kernel, "Check current UTC time and return current weather in Boston city.");

ChatHistory generatedPlan = result.ChatHistory;

Nieuwe aanpak:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4", Environment.GetEnvironmentVariable("OpenAI__ApiKey"))
    .Build();

IChatCompletionService chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();

ChatHistory chatHistory = [];
chatHistory.AddUserMessage("Check current UTC time and return current weather in Boston city.");

OpenAIPromptExecutionSettings executionSettings = new() { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() };

await chatCompletionService.GetChatMessageContentAsync(chatHistory, executionSettings, kernel);

ChatHistory generatedPlan = chatHistory;

Uitvoering van het nieuwe plan

De volgende code laat zien hoe u een nieuw abonnement uitvoert met Automatisch functieaanroepen met behulp van FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(). Deze methode is handig wanneer alleen resultaten nodig zijn zonder planstappen. In dit geval Kernel kan het object worden gebruikt om een doelmethode door te InvokePromptAsync geven. Het resultaat van de uitvoering van het plan bevindt zich in FunctionResult het object.

Oude benadering:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4", Environment.GetEnvironmentVariable("OpenAI__ApiKey"))
    .Build();

FunctionCallingStepwisePlanner planner = new();

FunctionCallingStepwisePlannerResult result = await planner.ExecuteAsync(kernel, "Check current UTC time and return current weather in Boston city.");

string planResult = result.FinalAnswer;

Nieuwe aanpak:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4", Environment.GetEnvironmentVariable("OpenAI__ApiKey"))
    .Build();

OpenAIPromptExecutionSettings executionSettings = new() { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() };

FunctionResult result = await kernel.InvokePromptAsync("Check current UTC time and return current weather in Boston city.", new(executionSettings));

string planResult = result.ToString();

Uitvoering van het bestaande plan

De volgende code laat zien hoe u een bestaand abonnement uitvoert met Automatisch functieaanroepen met behulp van FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(). Deze methode is handig wanneer ChatHistory deze al aanwezig is (bijvoorbeeld opgeslagen in de cache) en deze moet opnieuw worden uitgevoerd en het uiteindelijke resultaat moet worden geleverd door het AI-model.

Oude benadering:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4", Environment.GetEnvironmentVariable("OpenAI__ApiKey"))
    .Build();

FunctionCallingStepwisePlanner planner = new();
ChatHistory existingPlan = GetExistingPlan(); // plan can be stored in database  or cache for reusability.

FunctionCallingStepwisePlannerResult result = await planner.ExecuteAsync(kernel, "Check current UTC time and return current weather in Boston city.", existingPlan);

string planResult = result.FinalAnswer;

Nieuwe aanpak:

Kernel kernel = Kernel
    .CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4", Environment.GetEnvironmentVariable("OpenAI__ApiKey"))
    .Build();

IChatCompletionService chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();

ChatHistory existingPlan = GetExistingPlan(); // plan can be stored in database or cache for reusability.

OpenAIPromptExecutionSettings executionSettings = new() { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() };

ChatMessageContent result = await chatCompletionService.GetChatMessageContentAsync(existingPlan, executionSettings, kernel);

string planResult = result.Content;

De bovenstaande codefragmenten laten zien hoe u uw code migreert die gebruikmaakt van Stepwise Planner om Automatisch functieaanroepen te gebruiken. Meer informatie over functiegesprekken met chatvoltooiing.