Udostępnij za pośrednictwem


Eksplorowanie agenta uzupełniania czatu jądra semantycznego (eksperymentalne)

Ostrzeżenie

Struktura agenta jądra semantycznego jest eksperymentalna, nadal w programowania i może ulec zmianie.

Szczegółowa dokumentacja interfejsu API związana z tą dyskusją jest dostępna pod adresem:

Agenci są obecnie niedostępni w języku Java.

Uzupełnianie czatu w jądrze semantycznym

Uzupełnianie czatu to zasadniczo protokół interakcji oparty na czacie z modelem sztucznej inteligencji, w którym historia czatów jest przechowywana i prezentowana modelowi z każdym żądaniem. Semantyczne usługi sztucznej inteligencji jądra oferują ujednoliconą platformę do integrowania możliwości uzupełniania czatów różnych modeli sztucznej inteligencji.

Agent uzupełniania czatu może wykorzystać dowolną z tych usług sztucznej inteligencji do generowania odpowiedzi, niezależnie od tego, czy jest kierowana do użytkownika, czy innego agenta.

W przypadku platformy .NET usługi sztucznej inteligencji uzupełniania czatu są oparte na interfejsie IChatCompletionService .

W przypadku platformy .NET niektóre usługi sztucznej inteligencji, które obsługują modele z uzupełnianiem czatów, to:

Model Semantyczna usługa sztucznej inteligencji jądra
Azure Open AI Microsoft.SemanticKernel.Connectors.AzureOpenAI
Bliźnięta Microsoft.SemanticKernel.Connectors.Google
HuggingFace Microsoft.SemanticKernel.Connectors.HuggingFace
Mistral Microsoft.SemanticKernel.Connectors.MistralAI
OpenAI Microsoft.SemanticKernel.Connectors.OpenAI
Onnx Microsoft.SemanticKernel.Connectors.Onnx

Agenci są obecnie niedostępni w języku Java.

Tworzenie agenta uzupełniania czatu

Agent uzupełniania czatu jest zasadniczo oparty na usługach sztucznej inteligencji. W związku z tym utworzenie agenta uzupełniania czatu rozpoczyna się od utworzenia wystąpienia jądra zawierającego co najmniej jedną usługę uzupełniania czatów, a następnie utworzenie wystąpienia agenta przy użyciu odwołania do tego wystąpienia 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>",
)

Agenci są obecnie niedostępni w języku Java.

Wybór usługi sztucznej inteligencji

Nie różni się od bezpośredniego używania usług AI jądra semantycznego, agent uzupełniania czatu obsługuje specyfikację selektora usług. Selektor usługi wcięcie, które usługa sztucznej inteligencji ma być docelowa, gdy jądro zawiera więcej niż jedną.

Uwaga: jeśli istnieje wiele usług sztucznej inteligencji i nie podano selektora usług, ta sama logika domyślna jest stosowana dla agenta, który można znaleźć w przypadku korzystania z usług sztucznej inteligencji poza strukturą agentów

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

Agenci są obecnie niedostępni w języku Java.

Konwersowanie z agentem uzupełniania czatu

Konwersowanie z agentem uzupełniania czatu jest oparte na wystąpieniu historii czatu, nie różni się od interakcji z usługą AI uzupełniania czatu.

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

Agenci są obecnie niedostępni w języku Java.

How-To:

Aby zapoznać się z przykładem kompleksowego agenta uzupełniania czatu, zobacz: