Condividi tramite


Esplorazione dell'agente di completamento chat del kernel semantico (sperimentale)

Avviso

Il framework dell'agente del kernel semantico è sperimentale, ancora in fase di sviluppo ed è soggetto a modifiche.

La documentazione dettagliata dell'API relativa a questa discussione è disponibile all'indirizzo:

Gli agenti non sono attualmente disponibili in Java.

Completamento della chat nel kernel semantico

Il completamento della chat è fondamentalmente un protocollo per un'interazione basata su chat con un modello di intelligenza artificiale in cui la cronologia delle chat è stata mantenuta e presentata al modello con ogni richiesta. I servizi di intelligenza artificiale semantica kernel offrono un framework unificato per l'integrazione delle funzionalità di completamento della chat di vari modelli di intelligenza artificiale.

Un agente di completamento della chat può sfruttare uno di questi servizi di intelligenza artificiale per generare risposte, sia indirizzate a un utente che a un altro agente.

Per .NET, i servizi di intelligenza artificiale di completamento della chat si basano sull'interfaccia IChatCompletionService .

Per .NET, alcuni dei servizi di intelligenza artificiale che supportano modelli con completamento della chat includono:

Modello Servizio di intelligenza artificiale del kernel semantico
Azure Open AI Microsoft.SemanticKernel.Connectors.AzureOpenAI
Gemelli Microsoft.SemanticKernel.Connectors.Google
HuggingFace Microsoft.SemanticKernel.Connectors.HuggingFace
Mistral Microsoft.SemanticKernel.Connectors.MistralAI
OpenAI Microsoft.SemanticKernel.Connectors.OpenAI
Onnx Microsoft.SemanticKernel.Connectors.Onnx

Gli agenti non sono attualmente disponibili in Java.

Creazione di un agente di completamento chat

Un agente di completamento chat è fondamentalmente basato su un servizio di intelligenza artificiale. Di conseguenza, la creazione di un agente di completamento della chat inizia con la creazione di un'istanza del kernel che contiene uno o più servizi di completamento della chat e quindi la creazione di un'istanza dell'agente con un riferimento a tale istanza del 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>",
)

Gli agenti non sono attualmente disponibili in Java.

Selezione del servizio di intelligenza artificiale

Non è diverso dall'uso diretto dei servizi semantici di intelligenza artificiale kernel, un agente di completamento della chat supporta la specifica di un selettore di servizio. Un selettore di servizio indica il servizio di intelligenza artificiale di destinazione quando il kernel contiene più di uno.

Nota: se sono presenti più servizi di intelligenza artificiale e non viene fornito alcun selettore di servizio, viene applicata la stessa logica predefinita per l'agente che si trova quando si usa un servizio di intelligenza artificiale all'esterno di 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>",
)

Gli agenti non sono attualmente disponibili in Java.

Conversing with Chat Completion Agent (Conversing with Chat Completion Agent)

La conclusione con l'agente di completamento della chat si basa su un'istanza di Cronologia chat, non diversa dall'interazione con un servizio di intelligenza artificiale di completamento 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)

Gli agenti non sono attualmente disponibili in Java.

Procedura:

Per un esempio end-to-end per un agente di completamento chat, vedere: