Membuat Agen dari Templat Kernel Semantik
Penting
Fitur ini sedang dalam tahap kandidat rilis. Fitur pada tahap ini hampir lengkap dan umumnya stabil, meskipun mungkin mengalami penyempurnaan atau pengoptimalan kecil sebelum mencapai ketersediaan umum penuh.
Templat Prompt dalam Kernel Semantik
Peran agen terutama dibentuk oleh instruksi yang diterimanya, yang menentukan perilaku dan tindakannya. Mirip dengan memanggil Kernel
perintah, instruksi agen dapat menyertakan parameter yang di-template—baik nilai maupun fungsi—yang diganti secara dinamis selama eksekusi. Ini memungkinkan respons yang fleksibel dan sadar konteks, memungkinkan agen untuk menyesuaikan outputnya berdasarkan input real-time.
Selain itu, agen dapat dikonfigurasi secara langsung menggunakan Konfigurasi Templat Prompt, yang menyediakan cara terstruktur dan dapat digunakan kembali bagi pengembang untuk menentukan perilaku agen tersebut. Pendekatan ini menawarkan alat yang kuat untuk menstandarkan dan menyesuaikan instruksi agen, memastikan konsistensi di berbagai kasus penggunaan sambil tetap mempertahankan kemampuan beradaptasi dinamis.
API terkait:
Agen saat ini tidak tersedia di Java.
Instruksi Agen sebagai Templat
Membuat agen dengan parameter templat memberikan fleksibilitas yang lebih besar dengan memungkinkan instruksinya mudah disesuaikan berdasarkan skenario atau persyaratan yang berbeda. Pendekatan ini memungkinkan perilaku agen disesuaikan dengan mengganti nilai atau fungsi tertentu ke dalam templat, sehingga dapat disesuaikan dengan berbagai tugas atau konteks. Dengan memanfaatkan parameter templat, pengembang dapat merancang agen yang lebih serbaguna yang dapat dikonfigurasi untuk memenuhi berbagai kasus penggunaan tanpa perlu memodifikasi logika inti.
Asisten Penyelesaian Obrolan
// 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"),
)
Agen saat ini tidak tersedia di Java.
Agen Asisten OpenAI
Instruksi templat sangat efektif saat bekerja dengan OpenAIAssistantAgent
. Dengan pendekatan ini, definisi asisten tunggal dapat dibuat dan digunakan kembali beberapa kali, setiap kali dengan nilai parameter yang berbeda yang disesuaikan dengan tugas atau konteks tertentu. Ini memungkinkan penyiapan yang lebih efisien, memungkinkan kerangka kerja asisten yang sama untuk menangani berbagai skenario sambil mempertahankan konsistensi dalam perilaku intinya.
// 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"),
)
Agen saat ini tidak tersedia di Java.
Definisi Agen dari Templat Prompt
Konfigurasi Templat Prompt yang sama yang digunakan untuk membuat Fungsi Prompt Kernel juga dapat dimanfaatkan untuk menentukan agen. Ini memungkinkan pendekatan terpadu dalam mengelola prompt dan agen, mempromosikan konsistensi dan pemanfaatan ulang di berbagai komponen. Dengan eksternalisasi definisi agen dari basis kode, metode ini menyederhanakan manajemen beberapa agen, membuatnya lebih mudah diperbarui dan dipertahankan tanpa memerlukan perubahan pada logika yang mendasar. Pemisahan ini juga meningkatkan fleksibilitas, memungkinkan pengembang untuk memodifikasi perilaku agen atau memperkenalkan agen baru hanya dengan memperbarui konfigurasi, daripada menyesuaikan kode itu sendiri.
Templat 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
Inisialisasi Agen
// 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"),
)
Agen saat ini tidak tersedia di Java.
Mengesampingkan Nilai Templat untuk Pemanggilan Langsung
Saat memanggil agen secara langsung, tanpa menggunakan AgentChat
, parameter agen dapat digantikan sesuai kebutuhan. Hal ini memungkinkan kontrol dan penyesuaian perilaku agen yang lebih besar selama tugas tertentu, memungkinkan Anda untuk memodifikasi instruksi atau pengaturannya dengan cepat agar sesuai dengan persyaratan tertentu.
// 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)...
Agen saat ini tidak tersedia di Java.
Panduan
Untuk contoh menyeluruh dalam membuat agen dari templat-prompt, lihat: