Aracılığıyla paylaş


Adım Adım Planner Geçiş Kılavuzu

Bu geçiş kılavuzu, planlama özelliği için önerilen yeni bir yaklaşıma geçiş işleminin nasıl yapılacağını FunctionCallingStepwisePlanner gösterir: Otomatik İşlev Çağrısı. Yeni yaklaşım sonuçları daha güvenilir bir şekilde üretir ve ile FunctionCallingStepwisePlannerkarşılaştırıldığında daha az belirteç kullanır.

Plan oluşturma

Aşağıdaki kod kullanılarak Otomatik İşlev Çağrısı FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()ile yeni bir planın nasıl oluşturulacağı gösterilmektedir. Yapay zeka modeline istek gönderdikten sonra plan, rolü olan ChatHistory bir iletinin çağrılacak işlevlerin (adımların) listesini içereceği nesnede Assistant yer alır.

Eski yaklaşım:

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;

Yeni yaklaşım:

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;

Yeni planın yürütülmesi

Aşağıdaki kodda kullanarak FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()Otomatik İşlev Çağrısı ile yeni bir planın nasıl yürütüldiği gösterilmektedir. Bu yaklaşım, plan adımları olmadan yalnızca sonuç gerektiğinde kullanışlıdır. Bu durumda, Kernel nesnesi yöntemine bir hedef geçirmek için InvokePromptAsync kullanılabilir. Plan yürütmenin sonucu nesnesinde FunctionResult bulunur.

Eski yaklaşım:

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;

Yeni yaklaşım:

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();

Mevcut planın yürütülmesi

Aşağıdaki kod, kullanarak FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()Otomatik İşlev Çağrısı ile var olan bir planı yürütmeyi gösterir. Bu yaklaşım zaten mevcut olduğunda ChatHistory (örneğin önbellekte depolandığında) kullanışlıdır ve yeniden yürütülmelidir ve nihai sonuç yapay zeka modeli tarafından sağlanmalıdır.

Eski yaklaşım:

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;

Yeni yaklaşım:

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;

Aşağıdaki kod, kullanarak function_choice_behavior = FunctionChoiceBehavior.Auto()Otomatik İşlev Çağrısı ile yeni bir plan oluşturmayı gösterir. Yapay zeka modeline istek gönderdikten sonra plan, rolü olan ChatHistory bir iletinin çağrılacak işlevlerin (adımların) listesini içereceği nesnede Assistant yer alır.

Eski yaklaşım:

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

Yeni yaklaşım:

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`.

Yeni planın yürütülmesi

Aşağıdaki kodda kullanarak function_choice_behavior = FunctionChoiceBehavior.Auto()Otomatik İşlev Çağrısı ile yeni bir planın nasıl yürütüldiği gösterilmektedir. Bu yaklaşım, plan adımları olmadan yalnızca sonuç gerektiğinde kullanışlıdır. Bu durumda, bir hedefi invoke_prompt yöntemine geçirmek için Kernel nesnesi kullanılabilir. Plan yürütmenin sonucu bir FunctionResult nesnede bulunur.

Eski yaklaşım:

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)

Yeni yaklaşım:

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)

Planlayıcılar SK Java'da mevcut değildi. Lütfen doğrudan işlev çağrılarını kullanın.

Yukarıdaki kod parçacıkları, Otomatik İşlev Çağrısı'nı kullanmak için Stepwise Planner kullanan kodunuzun nasıl geçirildiğini gösterir. Sohbet tamamlama ile İşlev Çağrısı hakkında daha fazla bilgi edinin.