Migreringsguide för Stegvisa planerare
Den här migreringsguiden visar hur du migrerar från FunctionCallingStepwisePlanner
till en ny rekommenderad metod för planeringsfunktion – autofunktionssamtal. Den nya metoden ger resultatet mer tillförlitligt och använder färre token jämfört med FunctionCallingStepwisePlanner
.
Planera generering
Följande kod visar hur du genererar en ny plan med autofunktionsanrop med hjälp FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
av . När du har skickat en begäran till AI-modellen finns planen i ChatHistory
ett objekt där ett meddelande med Assistant
rollen innehåller en lista över funktioner (steg) att anropa.
Gammal metod:
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;
Ny metod:
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;
Körning av den nya planen
Följande kod visar hur du kör en ny plan med autofunktionsanrop med hjälp FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
av . Den här metoden är användbar när endast resultat behövs utan plansteg. I det här fallet Kernel
kan objektet användas för att skicka ett mål till InvokePromptAsync
en metod. Resultatet av plankörningen finns i FunctionResult
objektet.
Gammal metod:
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;
Ny metod:
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();
Körning av den befintliga planen
Följande kod visar hur du kör en befintlig plan med autofunktionsanrop med hjälp FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
av . Den här metoden är användbar när ChatHistory
den redan finns (t.ex. lagras i cacheminnet) och den ska köras igen och slutresultatet ska tillhandahållas av AI-modellen.
Gammal metod:
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;
Ny metod:
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;
Kodfragmenten ovan visar hur du migrerar din kod som använder Stepwise Planner för att använda autofunktionsanrop. Läs mer om funktionssamtal med chatten slutförd.