Explorando o Kernel Semântico e o agente de conclusão de bate-papo
Aviso
O Semantic Kernel Agent Framework está em pré-visualização e está sujeito a alterações.
A documentação detalhada da API relacionada a esta discussão está disponível em:
Os agentes estão atualmente indisponíveis em Java.
Conclusão do Chat no Kernel Semântico
A Conclusão do Chat é fundamentalmente um protocolo para uma interação baseada em chat com um modelo de IA onde o histórico do chat é mantido e apresentado ao modelo a cada solicitação. Os serviços de IA do Kernel Semânticooferecem uma estrutura unificada para integrar os recursos de conclusão de bate-papo de vários modelos de IA.
Um agente de conclusão de chat pode aproveitar qualquer um desses serviços de IA para gerar respostas, sejam elas direcionadas a um usuário ou outro agente.
Para o .NET, os serviços de IA de conclusão de bate-papo IChatCompletionService
são baseados na interface.
Para o .NET, alguns dos serviços de IA que suportam modelos com conclusão de bate-papo incluem:
Modelo | Serviço de IA do Kernel Semântico |
---|---|
Azure Open AI | Microsoft.SemanticKernel.Connectors.AzureOpenAI |
Gêmeos | Microsoft.SemanticKernel.Connectors.Google |
HuggingFace | Microsoft.SemanticKernel.Connectors.HuggingFace |
Mistral | Microsoft.SemanticKernel.Connectors.MistralAI |
OpenAI | Microsoft.SemanticKernel.Connectors.OpenAI |
Onnx | Microsoft.SemanticKernel.Connectors.Onnx |
Os agentes estão atualmente indisponíveis em Java.
Criando um agente de conclusão de bate-papo
Um agente de conclusão de chat é fundamentalmente baseado em um serviço de IA. Como tal, a criação de um agente de conclusão de chat começa com a criação de uma instância do Kernel que contém um ou mais serviços de conclusão de chat e, em seguida, instanciando o agente com uma referência a essa instância do Kernel.
// Initialize a Kernel with a chat-completion service
IKernelBuilder builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(/*<...configuration parameters>*/);
Kernel kernel = builder.Build();
// Create the agent
ChatCompletionAgent agent =
new()
{
Name = "SummarizationAgent",
Instructions = "Summarize user input",
Kernel = kernel
};
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="<service_id>"))
# Create the agent
agent = ChatCompletionAgent(
service_id="agent",
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
)
Os agentes estão atualmente indisponíveis em Java.
Seleção de serviços de IA
Não diferente de usar serviços de IA do Kernel Semânticodiretamente, um agente de conclusão de chat suporta a especificação de um seletor de serviço. Um seletor de serviço identifica qual serviço de IA deve ser direcionado quando o Kernel contém mais de um.
Nota: Se vários serviços de IA estiverem presentes e nenhum seletor de serviço for fornecido, a mesma lógica padrão será aplicada ao agente que você encontraria ao usar um serviço de IA fora do Agent Framework
IKernelBuilder builder = Kernel.CreateBuilder();
// Initialize multiple chat-completion services.
builder.AddAzureOpenAIChatCompletion(/*<...service configuration>*/, serviceId: "service-1");
builder.AddAzureOpenAIChatCompletion(/*<...service configuration>*/, serviceId: "service-2");
Kernel kernel = builder.Build();
ChatCompletionAgent agent =
new()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = kernel,
Arguments = // Specify the service-identifier via the KernelArguments
new KernelArguments(
new OpenAIPromptExecutionSettings()
{
ServiceId = "service-2" // The target service-identifier.
});
};
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="<service_id>"))
# Create the agent
agent = ChatCompletionAgent(
service_id="agent",
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
)
Os agentes estão atualmente indisponíveis em Java.
Conversando com o Agente de Conclusão de Chat
Conversar com seu Agente de Conclusão de Chat é baseado em uma instância de Histórico de Chat, nada diferente de interagir com um serviço de IA de Conclusão de Chat.
// Define agent
ChatCompletionAgent agent = ...;
// Create a ChatHistory object to maintain the conversation state.
ChatHistory chat = [];
// Add a user message to the conversation
chat.Add(new ChatMessageContent(AuthorRole.User, "<user input>"));
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(chat))
{
// Process agent response(s)...
}
# Define agent
agent = ChatCompletionAgent(...)
# Define the chat history
chat = ChatHistory()
# Add the user message
chat.add_message(ChatMessageContent(role=AuthorRole.USER, content=input))
# Generate the agent response(s)
async for response in agent.invoke(chat):
# process agent response(s)
Os agentes estão atualmente indisponíveis em Java.
How-To:
Para obter um exemplo completo de um Agente de Conclusão de Chat, consulte: