セマンティック カーネル プラグインを使用したエージェントの構成
警告
セマンティック カーネル エージェント フレームワーク はプレビュー段階であり、変更される可能性があります。
セマンティック カーネルの関数とプラグイン
関数呼び出しは、開発者がカスタム機能を追加し、AI アプリケーションの機能を拡張できる強力なツールです。 Semantic KernelPlugin アーキテクチャは、Function Calling をサポートする柔軟なフレームワークを提供します。 Agentの場合、この基本的なSemantic Kernel機能に基づいて、PluginsとFunction Calling を統合します。
構成後、エージェントは、 Agent Framework の外部で使用する場合と同様に、使用可能な関数を呼び出すタイミングと方法を選択します。
現在、エージェントは Java では使用できません。
エージェントへのプラグインの追加
Agent で使用できるPluginは、それぞれの Kernel インスタンス内で管理されます。 このセットアップにより、各 Agent は、その特定のロールに基づいて個別の機能にアクセスできます。
プラグインは、Agentが作成される前または後にKernel に追加できます。 Plugins を初期化するプロセスは、Semantic Kernel 実装で使用されるのと同じパターンに従います。これにより、AI 機能の管理における一貫性と使いやすさが実現されます。
注: Chat 完了エージェントの場合関数呼び出しモードを明示的に有効にする必要があります。 Open AI Assistant エージェントは、常に自動関数呼び出しに基づいています。
// 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,
)
現在、エージェントは Java では使用できません。
エージェントへの関数の追加
Plugin は、Function Calling を構成するための最も一般的な方法です。 ただし、個々の関数は、 prompt 関数を含めて個別に提供することもできます。
// 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,
)
現在、エージェントは Java では使用できません。
エージェント関数呼び出しの制限事項
aChat Completion Agent を直接呼び出す場合、すべての Function Choice Behaviors がサポートされます。 ただし、 Open AI Assistant または Agent Chat を使用する場合は、現在、 AutomaticFunction Calling のみを使用できます。
操作方法
関数呼び出しを使用するエンド ツー エンドの例については、次を参照してください。