Udostępnij za pośrednictwem


Tworzenie agenta na podstawie szablonu jądra semantycznego (eksperymentalne)

Ostrzeżenie

Struktura agenta jądra semantycznego jest eksperymentalna, nadal w programowania i może ulec zmianie.

Szablony monitów w jądrze semantycznym

Rola agenta jest przede wszystkim kształtowana przez odbierane instrukcje, które dyktują jego zachowanie i działania. Podobnie jak wywołanie monitu Kernel , instrukcje agenta mogą zawierać parametry szablonu — zarówno wartości, jak i funkcje — które są dynamicznie zastępowane podczas wykonywania. Umożliwia to elastyczne odpowiedzi z obsługą kontekstu, dzięki czemu agent może dostosować swoje dane wyjściowe na podstawie danych wejściowych w czasie rzeczywistym.

Ponadto agent można skonfigurować bezpośrednio przy użyciu konfiguracji szablonu monitu, zapewniając deweloperom ustrukturyzowany i wielokrotnego użytku sposób definiowania jego zachowania. To podejście oferuje zaawansowane narzędzie do standaryzacji i dostosowywania instrukcji agenta, zapewniając spójność w różnych przypadkach użycia przy jednoczesnym zachowaniu dynamicznej adaptacji.

Wkrótce

Agenci są obecnie niedostępni w języku Java.

Instrukcje agenta jako szablon

Tworzenie agenta z parametrami szablonu zapewnia większą elastyczność, umożliwiając łatwe dostosowywanie instrukcji na podstawie różnych scenariuszy lub wymagań. Takie podejście umożliwia dostosowanie zachowania agenta przez podstawianie określonych wartości lub funkcji do szablonu, dzięki czemu można go dostosować do różnych zadań lub kontekstów. Korzystając z parametrów szablonu, deweloperzy mogą projektować bardziej wszechstronnych agentów, które można skonfigurować tak, aby spełniały różne przypadki użycia bez konieczności modyfikowania podstawowej logiki.

Agent uzupełniania czatu

// 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" },
        }
    };

Wkrótce

Agenci są obecnie niedostępni w języku Java.

Otwieranie agenta asystenta sztucznej inteligencji

Instrukcje szablonowe są szczególnie zaawansowane podczas pracy z agentem asystenta open AI. Dzięki temu podejściu można utworzyć i wielokrotnie używać pojedynczej definicji asystenta, za każdym razem z różnymi wartościami parametrów dostosowanymi do określonych zadań lub kontekstów. Umożliwia to wydajniejszą konfigurację, dzięki czemu ta sama platforma asystenta może obsługiwać szeroką gamę scenariuszy przy zachowaniu spójności w jej podstawowym zachowaniu.

// 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" },
        });

Wkrótce

Agenci są obecnie niedostępni w języku Java.

Definicja agenta z szablonu monitu

Ta sama konfiguracja szablonu monitu używana do tworzenia funkcji monitowania jądra może być również używana do definiowania agenta. Umożliwia to ujednolicone podejście do zarządzania monitami i agentami, promowanie spójności i ponownego użycia w różnych składnikach. Dzięki zewnętrznym definicjom agenta z bazy kodu ta metoda upraszcza zarządzanie wieloma agentami, co ułatwia ich aktualizowanie i konserwację bez konieczności wprowadzania zmian w podstawowej logice. Ta separacja zwiększa również elastyczność, umożliwiając deweloperom modyfikowanie zachowania agenta lub wprowadzanie nowych agentów, po prostu aktualizując konfigurację, zamiast dostosowywać sam kod.

Szablon 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

Inicjowanie 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" },
        }
    };

Wkrótce

Agenci są obecnie niedostępni w języku Java.

Zastępowanie wartości szablonu dla wywołania bezpośredniego

W przypadku bezpośredniego wywoływania agenta bez korzystania z czatu agenta parametry agenta można zastąpić w razie potrzeby. Pozwala to na większą kontrolę i dostosowywanie zachowania agenta podczas określonych zadań, dzięki czemu można modyfikować jego instrukcje lub ustawienia na bieżąco zgodnie z określonymi wymaganiami.

// 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)...
}

Wkrótce

Agenci są obecnie niedostępni w języku Java.

Instrukcje

Aby zapoznać się z przykładem kompleksowego tworzenia agenta na podstawie szablonu pmompt, zobacz: