Sdílet prostřednictvím


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.

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: