Schrittweiser Planner-Migrationsleitfaden
In diesem Migrationshandbuch wird gezeigt, wie Sie zu FunctionCallingStepwisePlanner
einem neuen empfohlenen Ansatz für die Planung der Funktion – Automatische Funktionsaufrufe – migrieren. Der neue Ansatz erzeugt die Ergebnisse zuverlässiger und verwendet weniger Token im Vergleich zu FunctionCallingStepwisePlanner
.
Planen der Generierung
Der folgende Code zeigt, wie sie einen neuen Plan mit Auto Function Calling mithilfe von FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
Auto Function Calling generieren. Nach dem Senden einer Anforderung an das KI-Modell befindet sich der Plan im ChatHistory
Objekt, in dem eine Nachricht mit Assistant
Rolle eine Liste von Funktionen (Schritten) enthält, die aufgerufen werden sollen.
Alter Ansatz:
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;
Neuer Ansatz:
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;
Ausführung des neuen Plans
Der folgende Code zeigt, wie sie einen neuen Plan mit Auto Function Calling mithilfe von FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
Auto Function Calling ausführen. Dieser Ansatz ist nützlich, wenn nur ergebnisse ohne Planschritte benötigt werden. In diesem Fall kann ein Objekt verwendet werden, Kernel
um ein Ziel an die Methode zu InvokePromptAsync
übergeben. Das Ergebnis der Planausführung befindet sich im FunctionResult
Objekt.
Alter Ansatz:
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;
Neuer Ansatz:
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();
Ausführung des vorhandenen Plans
Im folgenden Code wird gezeigt, wie sie einen vorhandenen Plan mit Auto Function Calling mithilfe von FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
Auto Function Calling ausführen. Dieser Ansatz ist nützlich, wenn ChatHistory
er bereits vorhanden ist (z. B. im Cache gespeichert), und es sollte erneut ausgeführt werden, und das Endergebnis sollte vom KI-Modell bereitgestellt werden.
Alter Ansatz:
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;
Neuer Ansatz:
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;
Die obigen Codeausschnitte veranschaulichen, wie Sie Ihren Code migrieren, der Stepwise Planner zum Verwenden von Auto Function Calling verwendet. Erfahren Sie mehr über Funktionsaufrufe mit Abschluss des Chats.