Aracılığıyla paylaş


Anlamsal Çekirdek Şablonundan Bir Ajan Oluşturma

Önemli

Bu özellik, sürüm adayı aşamasındadır. Bu aşamadaki özellikler neredeyse eksiksiz ve genel olarak kararlıdır, ancak genel kullanıma ulaşmadan önce küçük iyileştirmeler veya iyileştirmeler yapabilir.

Anlam Çekirdeğinde Komut İstemi Şablonları

Bir aracının rolü öncelikli olarak aldığı yönergelere göre şekillendirilir ve bu da davranışını ve eylemlerini belirler. Bir istem çağırmaya Kernelbenzer şekilde, aracının yönergeleri yürütme sırasında dinamik olarak değiştirilen şablonlu parametreleri (hem değerler hem de işlevler) içerebilir. Bu, esnek, bağlama duyarlı yanıtlar sağlar ve aracının çıkışını gerçek zamanlı girişe göre ayarlamasını sağlar.

Ayrıca, bir aracı doğrudan bir İstem Şablonu Yapılandırması kullanılarak yapılandırılabilir ve geliştiricilere davranışını tanımlamak için yapılandırılmış ve yeniden kullanılabilir bir yol sağlar. Bu yaklaşım, aracı yönergelerini standartlaştırmak ve özelleştirmek, çeşitli kullanım örnekleri arasında tutarlılık sağlamak ve dinamik uyarlanabilirliği sürdürmek için güçlü bir araç sunar.

Ajanslar şu anda Java'da kullanılamıyor.

Temsilci Yönergeleri Şablon Olarak

Şablon parametreleriyle aracı oluşturmak, yönergelerinin farklı senaryolara veya gereksinimlere göre kolayca özelleştirilmesine olanak tanıyarak daha fazla esneklik sağlar. Bu yaklaşım, aracının davranışının şablona belirli değerlerin veya işlevlerin değiştirilerek uyarlanması ve çeşitli görevlere veya bağlamlara uyarlanabilir hale getirilmesini sağlar. Geliştiriciler şablon parametrelerinden yararlanarak, çekirdek mantığı değiştirmeye gerek kalmadan çeşitli kullanım örneklerini karşılayacak şekilde yapılandırabilecek daha çok yönlü aracılar tasarlayabilir.

Sohbet Tamamlama Aracısı

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

Ajanslar şu anda Java'da kullanılamıyor.

OpenAI Asistan Ajanı

Şablonlu yönergeler özellikle bir OpenAIAssistantAgentile çalışırken güçlü bir şekilde çalışır. Bu yaklaşımla, tek bir yardımcı tanımı oluşturulabilir ve her seferinde belirli görevlere veya bağlamlara uyarlanmış farklı parametre değerleriyle birden çok kez yeniden kullanılabilir. Bu, aynı yardımcı çerçevenin temel davranışında tutarlılığı korurken çok çeşitli senaryoları işlemesine olanak tanıyan daha verimli bir kurulum sağlar.

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

Ajanslar şu anda Java'da kullanılamıyor.

Kısa Mesaj Şablonundan Aracı Tanımı

Çekirdek İstemi İşlevi oluşturmak için kullanılan aynı İstem Şablonu Yapılandırmasından aracı tanımlamak için de yararlanılabilir. Bu, hem istemleri hem de aracıları yönetme, tutarlılığı yükseltme ve farklı bileşenler arasında yeniden kullanma konusunda birleşik bir yaklaşım sağlar. Bu yöntem, kod tabanından aracı tanımlarını dışlaştırarak birden çok aracı yönetimini basitleştirerek temel mantıkta değişiklik yapılmasına gerek kalmadan güncelleştirilmesini ve bakımının daha kolay olmasını sağlar. Bu ayrım ayrıca esnekliği artırarak geliştiricilerin kodun kendisini ayarlamak yerine yalnızca yapılandırmayı güncelleştirerek aracı davranışını değiştirmesine veya yeni aracılar tanıtmasını sağlar.

YAML Şablonu

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

Aracı Başlatma

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

Ajanslar şu anda Java'da kullanılamıyor.

Doğrudan Çağırma için Şablon Değerlerini Geçersiz Kılma

Bir aracı AgentChatkullanılmadan doğrudan çağrılırken, aracının parametreleri gerektiğinde geçersiz kılınabilir. Bu, belirli görevler sırasında aracının davranışının daha iyi denetlenmesini ve özelleştirilmesini sağlayarak yönergelerini veya ayarlarını belirli gereksinimlere uyacak şekilde anında değiştirmenize olanak tanır.

// 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)...
}
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 chat history to maintain the conversation state
chat = ChatHistory()

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(chat, arguments=override_arguments)

# or use the invoke method to return an AsyncIterable of ChatMessageContent
async for response in agent.invoke(chat, arguments=override_arguments):
    # process agent response(s)...

Ajanslar şu anda Java'da kullanılamıyor.

Nasıl Yapılır

Prompt-template'den bir araç oluşturma hakkında uçtan uca bir örnek için bkz: