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.
Felkérési sablonok a Szémantikus Kernelben
Az ügynök szerepkörét elsősorban a kapott utasítások határozzák meg, amelyek meghatározzák a viselkedését és a műveleteit. A parancssorhoz Kernelhasonlóan az ügynök utasításai olyan sablonalapú paramétereket is tartalmazhatnak – értékeket és függvényeket egyaránt –, amelyek dinamikusan helyettesíthetők a végrehajtás során. Ez lehetővé teszi a rugalmas, környezettudatos válaszokat, így az ügynök valós idejű bemenet alapján módosíthatja a kimenetét.
Emellett az ügynök közvetlenül konfigurálható parancssori sablonkonfigurációval, így a fejlesztők strukturált és újrafelhasználható módon határozhatják meg a viselkedését. Ez a megközelítés hatékony eszközt kínál az ügynökutasítások szabványosításához és testreszabásához, biztosítva a különböző használati esetek konzisztenciáját, miközben továbbra is dinamikus alkalmazkodóképességet biztosít.
Jótanács
API-referencia:
A funkció jelenleg nem érhető el a Javában.
Ügynökutasítások sablonként
Az ügynök sablonparaméterekkel való létrehozása nagyobb rugalmasságot biztosít azáltal, hogy lehetővé teszi az utasítások egyszerű testreszabását különböző forgatókönyvek vagy követelmények alapján. Ez a megközelítés lehetővé teszi az ügynök viselkedésének testre szabását azáltal, hogy adott értékeket vagy függvényeket helyettesít a sablonba, így számos tevékenységhez vagy környezethez igazítható. A sablonparaméterek használatával a fejlesztők sokoldalúbb ügynököket tervezhetnek, amelyek konfigurálhatók a különböző használati esetek kielégítésére anélkül, hogy módosítaniuk kellene az alapvető logikát.
Csevegés befejezésért felelős ügynök
// Initialize a Kernel with a chat-completion service
Kernel kernel = ...;
var instructions = "Tell a story about {{$topic}} that is {{$length}} sentences long.";
ChatCompletionAgent agent =
new(templateFactory: new KernelPromptTemplateFactory(),
templateConfig: new(instructions) { TemplateFormat = PromptTemplateConfig.SemanticKernelTemplateFormat })
{
Kernel = kernel,
Name = "StoryTeller",
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
};
agent = ChatCompletionAgent(
service=AzureChatCompletion(), # or other supported AI services
name="StoryTeller",
instructions="Tell a story about {{$topic}} that is {{$length}} sentences long.",
arguments=KernelArguments(topic="Dog", length="2"),
)
A funkció jelenleg nem érhető el a Javában.
OpenAI asszisztens ügynök
A sablonos utasítások különösen hatékonyak OpenAIAssistantAgenthasználatakor. Ezzel a megközelítéssel egyetlen segéddefiníció több alkalommal is létrehozható és újra felhasználható, minden alkalommal különböző, adott tevékenységekhez vagy környezetekhez igazított paraméterértékekkel. Ez hatékonyabb telepítést tesz lehetővé, így ugyanaz az asszisztensi keretrendszer számos forgatókönyvet kezelhet, miközben fenntartja a konzisztenciát az alapvető viselkedésében.
// Retrieve an existing assistant definition by identifier
AzureOpenAIClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(new AzureCliCredential(), new Uri("<your endpoint>"));
AssistantClient assistantClient = client.GetAssistantClient();
Assistant assistant = await client.GetAssistantAsync();
OpenAIAssistantAgent agent = new(assistant, assistantClient, new KernelPromptTemplateFactory(), PromptTemplateConfig.SemanticKernelTemplateFormat)
{
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
}
# Create the client using Azure OpenAI resources and configuration
client, model = AzureAssistantAgent.setup_resources()
# Retrieve the assistant definition from the server based on the assistant ID
definition = await client.beta.assistants.retrieve(
assistant_id="your-assistant-id",
)
# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
client=client,
definition=definition,
arguments=KernelArguments(topic="Dog", length="3"),
)
A funkció jelenleg nem érhető el a Javában.
Ügynökdefiníció parancssori sablonból
A kernel-parancssori függvény létrehozásához használt parancssori sablon konfigurációja is használható ügynök definiálásához. Ez egységes megközelítést tesz lehetővé mind a kérések, mind az ügynökök kezelésében, elősegítve a konzisztenciát és az újrafelhasználást a különböző összetevők között. Az ügynökdefiníciók codebase-ből való külsősítésével ez a módszer leegyszerűsíti a több ügynök kezelését, így egyszerűbben frissíthetők és karbantarthatóak anélkül, hogy módosítani kellene az alapul szolgáló logikát. Ez az elkülönítés a rugalmasságot is növeli, így a fejlesztők módosíthatják az ügynökök viselkedését, vagy új ügynököket vezethetnek be a konfiguráció egyszerű frissítésével, és nem magát a kódot.
YAML-sablon
name: GenerateStory
template: |
Tell a story about {{$topic}} that is {{$length}} sentences long.
template_format: semantic-kernel
description: A function that generates a story about a topic.
input_variables:
- name: topic
description: The topic of the story.
is_required: true
- name: length
description: The number of sentences in the story.
is_required: true
Ügynök inicializálása
// Read YAML resource
string generateStoryYaml = File.ReadAllText("./GenerateStory.yaml");
// Convert to a prompt template config
PromptTemplateConfig templateConfig = KernelFunctionYaml.ToPromptTemplateConfig(generateStoryYaml);
// Create agent with Instructions, Name and Description
// provided by the template config.
ChatCompletionAgent agent =
new(templateConfig)
{
Kernel = this.CreateKernelWithChatCompletion(),
// Provide default values for template parameters
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
};
import yaml
from semantic_kernel.prompt_template import PromptTemplateConfig
# Read the YAML file
with open("./GenerateStory.yaml", "r", encoding="utf-8") as file:
generate_story_yaml = file.read()
# Parse the YAML content
data = yaml.safe_load(generate_story_yaml)
# Use the parsed data to create a PromptTemplateConfig object
prompt_template_config = PromptTemplateConfig(**data)
agent = ChatCompletionAgent(
service=AzureChatCompletion(), # or other supported AI services
prompt_template_config=prompt_template_config,
arguments=KernelArguments(topic="Dog", length="3"),
)
A funkció jelenleg nem érhető el a Javában.
Sablonértékek felülírása közvetlen meghíváshoz
Amikor közvetlenül meghív egy ügynököt, az ügynök paraméterei szükség szerint felülírhatók. Ez lehetővé teszi az ügynök viselkedésének nagyobb ellenőrzését és testreszabását adott feladatok során, lehetővé téve, hogy menet közben módosítsa az utasításait vagy beállításait az adott követelményeknek megfelelően.
// Initialize a Kernel with a chat-completion service
Kernel kernel = ...;
ChatCompletionAgent agent =
new()
{
Kernel = kernel,
Name = "StoryTeller",
Instructions = "Tell a story about {{$topic}} that is {{$length}} sentences long.",
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
};
KernelArguments overrideArguments =
new()
{
{ "topic", "Cat" },
{ "length", "3" },
});
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync([], options: new() { KernelArguments = overrideArguments }))
{
// Process agent response(s)...
}
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="StoryTeller",
instructions="Tell a story about {{$topic}} that is {{$length}} sentences long.",
arguments=KernelArguments(topic="Dog", length="2"),
)
# Create a thread to maintain the conversation state
# If no threaded is created, a thread will be returned
# with the initial response
thread = None
override_arguments = KernelArguments(topic="Cat", length="3")
# Two ways to get a response from the agent
# Get the response which returns a ChatMessageContent directly
response = await agent.get_response(messages="user input", arguments=override_arguments)
thread = response.thread
# or use the invoke method to return an AsyncIterable of ChatMessageContent
async for response in agent.invoke(messages="user input", arguments=override_arguments):
# process agent response(s)...
thread = response.thread
A funkció jelenleg nem érhető el a Javában.
Útmutató
Az ügynök létrehozásának teljes körű példájáért egy prompt-sablonból, lásd: