Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
Ez a funkció a kiadásra jelölt fázisban van. A funkciók ebben a szakaszban szinte teljesek és általában stabilak, bár kisebb finomításokon vagy optimalizálásokon eshetnek át, mielőtt elérnék a teljes általános rendelkezésre állást.
Függvények és beépülő modulok a Szemantic Kernelben
A függvényhívás egy hatékony eszköz, amely lehetővé teszi a fejlesztők számára, hogy egyéni funkciókat adjanak hozzá, és bővítsék az AI-alkalmazások képességeit. A Szemantic Kernel beépülő modul architektúrája rugalmas keretrendszert kínál a függvényhívás támogatásához.
AgentA beépülő modulok és függvényhívások integrálása erre az alapvető szemantikai kernelfunkcióra épül.
A konfigurálás után az ügynök kiválasztja, hogy mikor és hogyan hívjon meg egy elérhető függvényt, ahogyan bármely más esetben is tenné a Agent Framework kívül.
Jótanács
API-referencia:
Bővítmények hozzáadása az ügynökhöz
Bármely beépülő modul, amely elérhető egy Agent számára, a saját Kernel példányán belül van kezelve. Ez a beállítás lehetővé teszi, hogy mindegyik Agent különböző funkciókhoz férhessen hozzá az adott szerepköre alapján.
A beépülő modulokat a Kernel létrehozása előtt vagy után is hozzá lehet adni Agent. A beépülő modulok inicializálásának folyamata ugyanazokat a mintákat követi, mint bármely Szemantikus Kernel-implementáció esetében, így konzisztenciát és egyszerű használatot tesz lehetővé az AI-képességek kezelésében.
Megjegyzés:
A függvényhívási ChatCompletionAgentmódot explicit módon kell engedélyezni. Az OpenAIAssistant ügynök működése mindig automatikus függvényhíváson alapul.
// Factory method to produce 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();
// Import plug-in from type
agentKernel.ImportPluginFromType<StatelessPlugin>();
// Import plug-in from object
agentKernel.ImportPluginFromObject(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()
})
};
}
Kétféleképpen hozhat létre egy ChatCompletionAgent beépülő modulokkal.
1. módszer: Beépülő modulok megadása a konstruktoron keresztül
Közvetlenül továbbíthatja a beépülő modulok listáját a konstruktornak:
from semantic_kernel.agents import ChatCompletionAgent
# Create the Chat Completion Agent instance by specifying a list of plugins
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
instructions="<instructions>",
plugins=[SamplePlugin()]
)
Jótanács
Alapértelmezés szerint engedélyezve van az automatikus függvényhívás. A letiltásához állítsa be az function_choice_behavior argumentumot function_choice_behavior=FunctionChoiceBehavior.Auto(auto_invoke=False) a konstruktorban. Ezzel a beállítással a beépülő modulok a modellnek lesznek továbbítva, de nem lesznek automatikusan meghívva. Ha a végrehajtási beállítások ugyanazt a service_id vagy ai_model_id adják meg, mint az AI-szolgáltatás konfigurációja, a végrehajtási beállításokban (KernelArgumentskeresztül) meghatározott függvényhívási viselkedés elsőbbséget élvez a konstruktorban beállított függvényválasztási viselkedéssel szemben.
2. módszer: A kernel manuális konfigurálása
Ha a konstruktor nem biztosít kernelt, a rendszer automatikusan létrehoz egyet a modell érvényesítése során. Az átadott beépülő modulok elsőbbséget élveznek, és hozzáadódnak a kernelhez. A kernel állapotának részletesebb szabályozásához kövesse az alábbi lépéseket:
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.functions import KernelFunctionFromPrompt
from semantic_kernel.kernel import Kernel
# Create the instance of the Kernel
kernel = Kernel()
# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion())
# Get the AI service settings
settings = kernel.get_prompt_execution_settings_from_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(
kernel=kernel,
name=<agent name>,
instructions=<agent instructions>,
arguments=KernelArguments(settings=settings),
)
Jótanács
Ha nincs service_id megadva szolgáltatás a kernelhez való hozzáadásakor, az alapértelmezés szerint a következő lesz default: . Ha több AI-szolgáltatást konfigurál a kernelen, ajánlott megkülönböztetni őket az service_id argumentum használatával. Ez lehetővé teszi, hogy lekérje egy adott service_id szolgáltatás végrehajtási beállításait, és ezeket a beállításokat a kívánt szolgáltatáshoz kösse.
var chatCompletion = OpenAIChatCompletion.builder()
.withModelId("<model-id>")
.withOpenAIAsyncClient(new OpenAIClientBuilder()
.credential(new AzureKeyCredential("<api-key>"))
.endpoint("<endpoint>")
.buildAsyncClient())
.build();
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, chatCompletion)
.withPlugin(KernelPluginFactory.createFromObject(new SamplePlugin(), "<plugin name>"))
.build();
var agent = ChatCompletionAgent.builder()
.withKernel(kernel)
.withName("<agent name>")
.withInstructions("<agent instructions>")
.build();
Függvények hozzáadása egy ügynökhöz
A beépülő modul a függvényhívás konfigurálásának leggyakoribb módja. Az egyes függvények azonban egymástól függetlenül is megadhatóak, beleértve a parancssori függvényeket is.
// 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();
// Create plug-in from a static function
var functionFromMethod = agentKernel.CreateFunctionFromMethod(StatelessPlugin.AStaticMethod);
// Create plug-in from a prompt
var functionFromPrompt = agentKernel.CreateFunctionFromPrompt("<your prompt instructions>");
// Add to the kernel
agentKernel.ImportPluginFromFunctions("my_plugin", [functionFromMethod, functionFromPrompt]);
// Create the agent
return
new ChatCompletionAgent()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = agentKernel,
Arguments = new KernelArguments(
new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};
}
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.functions import KernelFunctionFromPrompt
from semantic_kernel.kernel import Kernel
# Create the instance of the Kernel
kernel = Kernel()
# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion())
# Create the AI service settings
settings = AzureChatPromptExecutionSettings()
# Configure the function choice behavior to auto invoke kernel functions
settings.function_choice_behavior = FunctionChoiceBehavior.Auto()
# Add the Plugin to the Kernel
kernel.add_function(
plugin_name="<plugin_name>",
function=KernelFunctionFromPrompt(
function_name="<function_name>",
prompt="<your prompt instructions>",
)
)
# Create the agent
agent = ChatCompletionAgent(
kernel=kernel,
name=<agent name>,
instructions=<agent instructions>,
arguments=KernelArguments(settings=settings),
)
var chatCompletion = OpenAIChatCompletion.builder()
.withModelId("<model-id>")
.withOpenAIAsyncClient(new OpenAIClientBuilder()
.credential(new AzureKeyCredential("<api-key>"))
.endpoint("<endpoint>")
.buildAsyncClient())
.build();
// Create function from method
var functionFromMethod = KernelFunction.createFromMethod(SamplePlugin.class.getMethod("method"), new SamplePlugin());
// Create function from prompt
var functionFromPrompt = KernelFunction.createFromPrompt("<your prompt instructions>");
// Create the kernel with a plugin from the two functions
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, chatCompletion)
.withPlugin(KernelPluginFactory.createFromFunctions("SamplePlugin", List.of(functionFromMethod, functionFromPrompt)))
.build();
InvocationContext invocationContext = InvocationContext.builder()
.withFunctionChoiceBehavior(FunctionChoiceBehavior.auto(true))
.build();
// Create the agent
var agent = ChatCompletionAgent.builder()
.withKernel(kernel)
.withName("<agent name>")
.withInstructions("<agent instructions>")
.withInvocationContext(invocationContext)
.build();
Az ügynök-függvényhívás korlátozásai
Ha közvetlenül invokált egy függvénytChatCompletionAgent, az összes függvényválasztási viselkedés támogatott. Egy OpenAIAssistant használata esetén azonban jelenleg csak az automatikus függvényhívás érhető el.
Útmutató
A függvényhívások használatának teljes példájáért lásd: