Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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;
Der folgende Code zeigt, wie Sie mithilfe von function_choice_behavior = FunctionChoiceBehavior.Auto()
einen neuen Plan mit Auto Function Calling erstellen können. 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:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.planners.function_calling_stepwise_planner import (
FunctionCallingStepwisePlanner,
FunctionCallingStepwisePlannerResult,
)
kernel = Kernel()
kernel.add_service(AzureChatCompletion())
# Add any plugins to the kernel that the planner will leverage
kernel.add_plugins(...)
planner = FunctionCallingStepwisePlanner(service_id="service_id")
result: FunctionCallingStepwisePlannerResult = await planner.invoke(
kernel=kernel,
question="Check current UTC time and return current weather in Boston city.",
)
generated_plan = result.chat_history
Neuer Ansatz:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.contents import ChatHistory
chat_completion_service = AzureChatCompletion()
chat_history = ChatHistory()
chat_hitory.add_user_message("Check current UTC time and return current weather in Boston city.")
request_settings = AzureChatPromptExecutionSettings(function_choice_behavior=FunctionChoiceBehavior.Auto())
# Add any plugins to the kernel that the planner will leverage
kernel = Kernel()
kernel.add_plugins(...)
response = await chat_completion_service.get_chat_message_content(
chat_history=chat_history,
settings=request_settings,
kernel=kernel,
)
print(response)
# The generated plan is now contained inside of `chat_history`.
Ausführung des neuen Plans
Der folgende Code zeigt, wie sie einen neuen Plan mit Auto Function Calling mithilfe von function_choice_behavior = FunctionChoiceBehavior.Auto()
Auto Function Calling ausführen. Dieser Ansatz ist nützlich, wenn nur das Ergebnis ohne Planschritte benötigt wird. In diesem Fall kann das Kernel
Objekt verwendet werden, um ein Ziel an die invoke_prompt
Methode zu übergeben. Das Ergebnis der Planausführung befindet sich in einem FunctionResult
Objekt.
Alter Ansatz:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.planners.function_calling_stepwise_planner import (
FunctionCallingStepwisePlanner,
FunctionCallingStepwisePlannerResult,
)
kernel = Kernel()
kernel.add_service(AzureChatCompletion())
# Add any plugins to the kernel that the planner will leverage
kernel.add_plugins(...)
planner = FunctionCallingStepwisePlanner(service_id="service_id")
result: FunctionCallingStepwisePlannerResult = await planner.invoke(
kernel=kernel,
question="Check current UTC time and return current weather in Boston city.",
)
print(result.final_answer)
Neuer Ansatz:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.contents import ChatHistory
from semantic_kernel.functions import KernelArguments
kernel = Kernel()
kernel.add_service(AzureChatCompletion())
# Add any plugins to the kernel that the planner will leverage
kernel.add_plugins(...)
chat_history = ChatHistory()
chat_hitory.add_user_message("Check current UTC time and return current weather in Boston city.")
request_settings = AzureChatPromptExecutionSettings(function_choice_behavior=FunctionChoiceBehavior.Auto())
response = await kernel.invoke_prompt(
"Check current UTC time and return current weather in Boston city.",
arguments=KernelArguments(settings=request_settings),
)
print(response)
Planners waren in SK Java nicht verfügbar. Verwenden Sie den Funktionsaufruf bitte direkt.
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.