Freigeben über


Konfigurieren von Agents mit semantischen Kernel-Plug-Ins (Experimental)

Warnung

Das semantische Kernel-Agent-Framework ist experimentell, befindet sich noch in der Entwicklung und unterliegt Änderungen.

Funktionen und Plugins im semantischen Kernel

Funktionsaufrufe sind ein leistungsfähiges Tool, mit dem Entwickler benutzerdefinierte Funktionen hinzufügen und die Funktionen von KI-Anwendungen erweitern können. Die Semantische Kernel-Plug-In-Architektur bietet ein flexibles Framework zur Unterstützung von Funktionsaufrufen. Für einen Agent basiert die Integration von Plug-Ins und Funktionsaufrufen auf diesem grundlegenden semantischen Kernel-Feature .

Nach der Konfiguration wählt ein Agent aus, wann und wie eine verfügbare Funktion aufgerufen werden soll, wie er in jeder Verwendung außerhalb des Agent-Frameworks erfolgt.

Agents sind derzeit in Java nicht verfügbar.

Hinzufügen von Plug-Ins zu einem Agent

Jedes Plug-In , das einem Agent zur Verfügung steht, wird innerhalb seiner jeweiligen Kernelinstanz verwaltet. Mit diesem Setup kann jeder Agent auf unterschiedliche Funktionen basierend auf seiner spezifischen Rolle zugreifen.

Plug-Ins können dem Kernel entweder vor oder nach der Erstellung des Agents hinzugefügt werden. Der Prozess der Initialisierung von Plug-Ins folgt denselben Mustern, die für jede semantische Kernelimplementierung verwendet werden, was Konsistenz und Benutzerfreundlichkeit bei der Verwaltung von KI-Funktionen ermöglicht.

Hinweis: Für einen Chat-Vervollständigungs-Agent muss der Funktionsaufrufmodus explizit aktiviert sein. Open AI Assistant Agent basiert immer auf automatischen Funktionsaufrufen.

// 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,
)

Agents sind derzeit in Java nicht verfügbar.

Hinzufügen von Funktionen zu einem Agent

Ein Plug-In ist der am häufigsten verwendete Ansatz zum Konfigurieren von Funktionsaufrufen. Einzelne Funktionen können jedoch auch unabhängig einschließlich Aufforderungsfunktionen bereitgestellt werden.

// 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,
)

Agents sind derzeit in Java nicht verfügbar.

Einschränkungen für Agent-Funktionsaufrufe

Wenn Sie einenChat-Vervollständigungs-Agent direkt aufrufen, werden alle Funktionsauswahlverhalten unterstützt. Wenn Sie jedoch einen Open AI-Assistenten oder Agent-Chat verwenden, ist derzeit nur automatische Funktionsanrufe verfügbar.

Vorgehensweise

Ein End-to-End-Beispiel für die Verwendung von Funktionsaufrufen finden Sie unter: