Criar um agente a partir de um modelo de kernel semântico (experimental)
Aviso
O Semantic Kernel Agent Framework é experimental, ainda está em desenvolvimento e está sujeito a alterações.
Modelos de prompt no kernel semântico
O papel de um agente é moldado principalmente pelas instruções que recebe, que ditam seu comportamento e ações. Semelhante à chamada de um Kernel
prompt, as instruções de um agente podem incluir parâmetros de modelo — valores e funções — que são substituídos dinamicamente durante a execução. Isso permite respostas flexíveis e sensíveis ao contexto, permitindo que o agente ajuste sua saída com base na entrada em tempo real.
Além disso, um agente pode ser configurado diretamente usando uma configuração de modelo de prompt, fornecendo aos desenvolvedores uma maneira estruturada e reutilizável de definir seu comportamento. Essa abordagem oferece uma ferramenta poderosa para padronizar e personalizar as instruções do agente, garantindo consistência em vários casos de uso e, ao mesmo tempo, mantendo a adaptabilidade dinâmica.
APIs relacionadas:
Em breve
No momento, os agentes não estão disponíveis em Java.
Instruções do agente como modelo
A criação de um agente com parâmetros de modelo oferece maior flexibilidade, permitindo que suas instruções sejam facilmente personalizadas com base em diferentes cenários ou requisitos. Essa abordagem permite que o comportamento do agente seja adaptado substituindo valores ou funções específicas no modelo, tornando-o adaptável a uma variedade de tarefas ou contextos. Ao aproveitar os parâmetros do modelo, os desenvolvedores podem projetar agentes mais versáteis que podem ser configurados para atender a diversos casos de uso sem a necessidade de modificar a lógica principal.
Agente de conclusão de bate-papo
// 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" },
}
};
Em breve
No momento, os agentes não estão disponíveis em Java.
Abrir o Agente do Assistente de IA
As instruções de modelo são especialmente poderosas ao trabalhar com um agente do Open AI Assistant. Com essa abordagem, uma única definição de assistente pode ser criada e reutilizada várias vezes, cada vez com diferentes valores de parâmetro adaptados a tarefas ou contextos específicos. Isso permite uma configuração mais eficiente, permitindo que a mesma estrutura de assistente lide com uma ampla variedade de cenários, mantendo a consistência em seu comportamento principal.
// 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" },
});
Em breve
No momento, os agentes não estão disponíveis em Java.
Definição de agente de um modelo de prompt
A mesma Configuração de Modelo de Prompt usada para criar uma Função de Prompt do Kernel também pode ser aproveitada para definir um agente. Isso permite uma abordagem unificada no gerenciamento de prompts e agentes, promovendo consistência e reutilização em diferentes componentes. Ao externalizar as definições de agente da base de código, esse método simplifica o gerenciamento de vários agentes, tornando-os mais fáceis de atualizar e manter sem exigir alterações na lógica subjacente. Essa separação também aumenta a flexibilidade, permitindo que os desenvolvedores modifiquem o comportamento do agente ou introduzam novos agentes simplesmente atualizando a configuração, em vez de ajustar o código em si.
Modelo 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
Inicialização do agente
// 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" },
}
};
Em breve
No momento, os agentes não estão disponíveis em Java.
Substituindo valores de modelo para invocação direta
Ao invocar um agente diretamente, sem usar o Chat do agente, os parâmetros do agente podem ser substituídos conforme necessário. Isso permite maior controle e personalização do comportamento do agente durante tarefas específicas, permitindo que você modifique suas instruções ou configurações em tempo real para atender a requisitos específicos.
// 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)...
}
Em breve
No momento, os agentes não estão disponíveis em Java.
Instruções
Para obter um exemplo de ponta a ponta para criar um agente a partir de um modelo pmompt, consulte: