Vytvoření agenta ze šablony sémantického jádra (experimentální)
Upozorňující
Sémantická architektura agenta jádra je experimentální, stále ve vývoji a může se změnit.
Šablony výzvy v sémantickém jádru
Role agenta je primárně tvarována pokyny, které obdrží, což určuje jeho chování a akce. Podobně jako při vyvolání Kernel
výzvy mohou pokyny agenta obsahovat parametry šablony – hodnoty i funkce – které se dynamicky nahrazují během provádění. To umožňuje flexibilní odpovědi pracující s kontextem, což agentu umožňuje upravit svůj výstup na základě vstupu v reálném čase.
Kromě toho je možné agenta nakonfigurovat přímo pomocí konfigurace šablony výzvy a poskytnout vývojářům strukturovaný a opakovaně použitelný způsob, jak definovat jeho chování. Tento přístup nabízí výkonný nástroj pro standardizaci a přizpůsobení pokynů agenta, který zajišťuje konzistenci v různých případech použití a přitom zachovává dynamickou adaptabilnost.
Související rozhraní API:
Novinky
Agenti momentálně nejsou v Javě k dispozici.
Pokyny agenta jako šablona
Vytvoření agenta s parametry šablony poskytuje větší flexibilitu tím, že umožňuje snadné přizpůsobení pokynů na základě různých scénářů nebo požadavků. Tento přístup umožňuje přizpůsobit chování agenta nahrazením konkrétních hodnot nebo funkcí do šablony a přizpůsobit se tak různým úlohám nebo kontextům. Díky využití parametrů šablon mohou vývojáři navrhovat všestrannější agenty, které je možné nakonfigurovat tak, aby splňovaly různé případy použití, aniž by museli upravovat základní logiku.
Agent pro dokončování chatu
// 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" },
}
};
Již brzy
Agenti momentálně nejsou v Javě k dispozici.
Otevření agenta AI Assistant
Šablonované pokyny jsou zvláště výkonné při práci s agentem Open AI Assistant. S tímto přístupem je možné vytvořit a opakovaně použít jednu definici asistenta, a to pokaždé, když mají různé hodnoty parametrů přizpůsobené konkrétním úkolům nebo kontextům. To umožňuje efektivnější nastavení, což umožňuje stejné rozhraní asistentů zpracovávat širokou škálu scénářů při zachování konzistence v základním chování.
// Retrieve an existing assistant definition by identifier
OpenAIAssistantAgent agent =
await OpenAIAssistantAgent.RetrieveAsync(
this.GetClientProvider(),
"<stored agent-identifier>",
new Kernel(),
new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
});
Novinky
Agenti momentálně nejsou v Javě k dispozici.
Definice agenta ze šablony výzvy
Stejnou konfiguraci šablony výzvy použitou k vytvoření funkce Příkazového řádku jádra lze také využít k definování agenta. To umožňuje jednotný přístup při správě výzev i agentů, což podporuje konzistenci a opakované použití napříč různými komponentami. Díky externalizaci definic agentů ze základu kódu tato metoda zjednodušuje správu více agentů, což usnadňuje aktualizaci a údržbu bez nutnosti změn v základní logice. Toto oddělení také zvyšuje flexibilitu a umožňuje vývojářům upravovat chování agenta nebo zavádět nové agenty jednoduše aktualizací konfigurace, nikoli úpravou samotného kódu.
Šablona YAML
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
Inicializace agenta
// 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" },
}
};
Novinky
Agenti momentálně nejsou v Javě k dispozici.
Přepsání hodnot šablony pro přímé vyvolání
Při přímém vyvolání agenta bez použití agenta Chat je možné parametry agenta podle potřeby přepsat. To umožňuje větší kontrolu a přizpůsobení chování agenta během konkrétních úloh, což vám umožní upravit jeho pokyny nebo nastavení za běhu tak, aby vyhovovalo konkrétním požadavkům.
// 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" },
}
};
// Create a ChatHistory object to maintain the conversation state.
ChatHistory chat = [];
KernelArguments overrideArguments =
new()
{
{ "topic", "Cat" },
{ "length", "3" },
});
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(chat, overrideArguments))
{
// Process agent response(s)...
}
Novinky
Agenti momentálně nejsou v Javě k dispozici.
Postupy
Kompletní příklad vytvoření agenta ze šablony pmompt-template najdete tady: