Sdílet prostřednictvím


Zkoumání agenta pro dokončování chatu sémantického jádra (experimentální)

Upozorňující

Sémantická architektura agenta jádra je experimentální, stále ve vývoji a může se změnit.

Podrobná dokumentace k rozhraní API související s touto diskuzí je k dispozici na adrese:

Agenti momentálně nejsou v Javě k dispozici.

Dokončení chatu v sémantickém jádru

Dokončování chatu je v podstatě protokolem pro chatovou interakci s modelem AI, ve kterém se historie chatu udržuje a prezentuje modelu s každou žádostí. Sémantické služby AI jádra nabízejí jednotnou architekturu pro integraci možností dokončování chatu různých modelů AI.

Agent pro dokončování chatu může využít některou z těchto služeb umělé inteligence k vygenerování odpovědí bez ohledu na to, jestli se přesměruje na uživatele nebo jiného agenta.

V případě .NET jsou služby AI pro dokončování chatu IChatCompletionService založené na rozhraní.

Mezi služby AI, které podporují modely s dokončováním chatu, patří:

Model Sémantická služba AI jádra
Azure Open AI Microsoft.SemanticKernel.Connectors.AzureOpenAI
Blíženci Microsoft.SemanticKernel.Connectors.Google
HuggingFace Microsoft.SemanticKernel.Connectors.HuggingFace
Mistral Microsoft.SemanticKernel.Connectors.MistralAI
OpenAI Microsoft.SemanticKernel.Connectors.OpenAI
Onnx Microsoft.SemanticKernel.Connectors.Onnx

Agenti momentálně nejsou v Javě k dispozici.

Vytvoření agenta pro dokončování chatu

Agent pro dokončování chatu je v podstatě založený na službách umělé inteligence. Vytvoření agenta pro dokončování chatu začíná vytvořením instance jádra, která obsahuje jednu nebo více služeb pro dokončování chatu, a následným vytvořením instance agenta s odkazem na tuto instanci jádra.

// 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>",
)

Agenti momentálně nejsou v Javě k dispozici.

Výběr služby AI

Žádný rozdíl od použití sémantických služeb AI jádra přímo, agent pro dokončování chatu podporuje specifikaci selektoru služby. Selektor služby odsadí, která služba AI se má cílit, pokud jádro obsahuje více než jednu.

Poznámka: Pokud existuje více služeb AI a není k dispozici žádný selektor služeb, použije se stejná výchozí logika pro agenta, který byste našli při použití služeb AI mimo rozhraní 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>",
)

Agenti momentálně nejsou v Javě k dispozici.

Sblížení s agentem pro dokončování chatu

Konversing s vaším agentem pro dokončování chatu je založený na instanci historie chatu, a to se nijak neliší od interakce se službou AI pro dokončování chatu.

// 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)

Agenti momentálně nejsou v Javě k dispozici.

Postup:

Kompletní příklad pro agenta pro dokončování chatu najdete tady: