Exploración del kernel semántico y del agente de finalización de chat
Advertencia
El marco de agentes del Semantic Kernel está en versión preliminar y está sujeto a cambios.
La documentación detallada de la API relacionada con esta discusión está disponible en:
Los agentes no están disponibles actualmente en Java.
Finalización del chat en kernel semántico
La finalización del chat es fundamentalmente un protocolo para una interacción basada en chat con un modelo de IA donde el historial de chats se mantiene y se presenta al modelo con cada solicitud. Los servicios de inteligencia artificial de kernelsemántico ofrecen un marco unificado para integrar las funcionalidades de finalización de chat de varios modelos de IA.
Un agente de finalización de chat puede aprovechar cualquiera de estos servicios de IA para generar respuestas, ya sea dirigidas a un usuario u otro agente.
Para .NET, los servicios de IA de finalización de chat se basan en la IChatCompletionService
interfaz .
Para .NET, algunos de los servicios de IA que admiten modelos con finalización de chat incluyen:
Modelo | Servicio de inteligencia artificial de kernel semántico |
---|---|
Azure OpenAI | Microsoft.SemanticKernel.Connectors.AzureOpenAI |
Géminis | Microsoft.SemanticKernel.Connectors.Google |
HuggingFace | Microsoft.SemanticKernel.Connectors.HuggingFace |
Mistral | Microsoft.SemanticKernel.Connectors.MistralAI |
OpenAI | Microsoft.SemanticKernel.Connectors.OpenAI |
Onnx | Microsoft.SemanticKernel.Connectors.Onnx |
Los agentes no están disponibles actualmente en Java.
Creación de un agente de finalización de chat
Un agente de finalización de chat se basa fundamentalmente en los servicios de inteligencia artificial. Por lo tanto, la creación de un agente de finalización de chat comienza por crear una instancia de Kernel que contenga uno o varios servicios de finalización de chat y, a continuación, crear instancias del agente con una referencia a esa instancia de 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>",
)
Los agentes no están disponibles actualmente en Java.
Selección del servicio AI
No es diferente del uso de los servicios de inteligencia artificial de kernel semántico directamente, un agente de finalización de chat admite la especificación de un selector de servicios. Un selector de servicio indica a qué servicio de INTELIGENCIA ARTIFICIAL se debe tener como destino cuando el kernel contiene más de uno.
Nota: Si hay varios servicios de IA presentes y no se proporciona ningún selector de servicios, se aplica la misma lógica predeterminada al agente que encontraría al usar servicios de IA fuera del marco del agente.
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>",
)
Los agentes no están disponibles actualmente en Java.
Conversing with Chat Completion Agent
La conversación con el agente de finalización de chat se basa en una instancia de historial de chat, no es diferente de interactuar con un servicio de IA de finalizaciónde 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)
Los agentes no están disponibles actualmente en Java.
Procedimiento:
Para obtener un ejemplo de un extremo a otro para un agente de finalización de chat, consulte: