Konfigurowanie agentów za pomocą wtyczki jądra semantycznego (eksperymentalne)
Ostrzeżenie
Struktura agenta jądra semantycznego jest eksperymentalna, nadal w programowania i może ulec zmianie.
Funkcje i wtyczki w jądrze semantycznym
Wywoływanie funkcji to zaawansowane narzędzie, które umożliwia deweloperom dodawanie niestandardowych funkcji i rozszerzanie możliwości aplikacji sztucznej inteligencji. Architektura wtyczki jądra semantycznego oferuje elastyczną strukturę do obsługi wywoływania funkcji. W przypadku agenta integracja wtyczek i wywołań funkcji jest oparta na tej podstawowej funkcji jądra semantycznego.
Po skonfigurowaniu agent wybierze, kiedy i jak wywołać dostępną funkcję, tak jak w przypadku dowolnego użycia poza platformą Agent Framework.
Agenci są obecnie niedostępni w języku Java.
Dodawanie wtyczek do agenta
Każda wtyczka dostępna dla agenta jest zarządzana w odpowiednim wystąpieniu jądra. Ta konfiguracja umożliwia każdemu agentowi dostęp do odrębnych funkcji na podstawie określonej roli.
Wtyczki można dodać do jądra przed utworzeniem agenta lub po jego utworzeniu. Proces inicjowania wtyczek jest zgodny z tymi samymi wzorcami używanymi dla dowolnej implementacji jądra semantycznego, co pozwala na spójność i łatwość użycia w zarządzaniu możliwościami sztucznej inteligencji.
Uwaga: w przypadku agenta uzupełniania czatu tryb wywoływania funkcji musi być jawnie włączony. Otwarty agent asystenta sztucznej inteligencji jest zawsze oparty na automatycznym wywoływaniu funkcji.
// Factory method to product an agent with a specific role.
// Could be incorporated into DI initialization.
ChatCompletionAgent CreateSpecificAgent(Kernel kernel, string credentials)
{
// Clone kernel instance to allow for agent specific plug-in definition
Kernel agentKernel = kernel.Clone();
// Initialize plug-in from type
agentKernel.CreatePluginFromType<StatelessPlugin>();
// Initialize plug-in from object
agentKernel.CreatePluginFromObject(new StatefulPlugin(credentials));
// Create the agent
return
new ChatCompletionAgent()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = agentKernel,
Arguments = new KernelArguments(
new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};
}
# Create the instance of the Kernel
kernel = Kernel()
# Define the service ID
service_id = "<service ID>"
# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion(service_id=service_id))
# Get the AI Service settings for the specified service_id
settings = kernel.get_prompt_execution_settings_from_service_id(service_id=service_id)
# Configure the function choice behavior to auto invoke kernel functions
settings.function_choice_behavior = FunctionChoiceBehavior.Auto()
# Add the Plugin to the Kernel
kernel.add_plugin(SamplePlugin(), plugin_name="<plugin name>")
# Create the agent
agent = ChatCompletionAgent(
service_id=service_id,
kernel=kernel,
name=<agent name>,
instructions=<agent instructions>,
execution_settings=settings,
)
Agenci są obecnie niedostępni w języku Java.
Dodawanie funkcji do agenta
Wtyczka to najbardziej typowe podejście do konfigurowania wywoływania funkcji. Jednak poszczególne funkcje można również dostarczać niezależnie, w tym funkcje monitu.
// Factory method to product an agent with a specific role.
// Could be incorporated into DI initialization.
ChatCompletionAgent CreateSpecificAgent(Kernel kernel)
{
// Clone kernel instance to allow for agent specific plug-in definition
Kernel agentKernel = kernel.Clone();
// Initialize plug-in from a static function
agentKernel.CreateFunctionFromMethod(StatelessPlugin.AStaticMethod);
// Initialize plug-in from a prompt
agentKernel.CreateFunctionFromPrompt("<your prompt instructiosn>");
// Create the agent
return
new ChatCompletionAgent()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = agentKernel,
Arguments = new KernelArguments(
new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};
}
# Create the instance of the Kernel
kernel = Kernel()
# Define the service ID
service_id = "<service ID>"
# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion(service_id=service_id))
# Get the AI Service settings for the specified service_id
settings = kernel.get_prompt_execution_settings_from_service_id(service_id=service_id)
# Configure the function choice behavior to auto invoke kernel functions
settings.function_choice_behavior = FunctionChoiceBehavior.Auto()
# Add the Plugin to the Kernel
kernel.add_plugin(SamplePlugin(), plugin_name="<plugin name>")
# Create the agent
agent = ChatCompletionAgent(
service_id=service_id,
kernel=kernel,
name=<agent name>,
instructions=<agent instructions>,
execution_settings=settings,
)
Agenci są obecnie niedostępni w języku Java.
Ograniczenia dotyczące wywoływania funkcji agenta
W przypadku bezpośredniego wywoływania agentauzupełniania czatu obsługiwane są wszystkie zachowania wyboru funkcji. Jednak w przypadku korzystania z asystenta open AI lub czatu agenta dostępne jest obecnie tylko automatyczne wywoływanie funkcji.
Instrukcje
Aby zapoznać się z kompleksowego przykładu użycia wywoływania funkcji, zobacz: