Partilhar via


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: