Exploración del kernel semántico OpenAIAssistantAgent
Importante
Esta característica está en la fase candidata para lanzamiento. Las características de esta fase son casi completas y, por lo general, estables, aunque pueden someterse a pequeños refinamientos o optimizaciones antes de alcanzar la disponibilidad general completa.
La documentación detallada de la API relacionada con esta discusión está disponible en:
Los agentes no están disponibles actualmente en Java.
¿Qué es un asistente?
OpenAI Assistant API es una interfaz especializada diseñada para funcionalidades de inteligencia artificial más avanzadas e interactivas, lo que permite a los desarrolladores crear agentes personalizados y orientados a tareas de varios pasos. A diferencia de la API de finalización de chat, que se centra en intercambios conversacionales simples, la API assistant permite interacciones dinámicas controladas por objetivos con características adicionales, como el intérprete de código y la búsqueda de archivos.
Preparación del entorno de desarrollo
Para continuar con el desarrollo de una OpenAIAIAssistantAgent
, configure el entorno de desarrollo con los paquetes adecuados.
Agregue el paquete Microsoft.SemanticKernel.Agents.OpenAI
al proyecto:
dotnet add package Microsoft.SemanticKernel.Agents.AzureAI --prerelease
También puede querer incluir el paquete Azure.Identity
.
dotnet add package Azure.Identity
Instale el paquete semantic-kernel
con las dependencias opcionales de Azure.
pip install semantic-kernel[azure]
Los agentes no están disponibles actualmente en Java.
Creación de un OpenAIAssistantAgent
La creación de un OpenAIAssistant
requiere invocar un servicio remoto, que se controla de forma asincrónica. Para gestionar esto, el OpenAIAssistantAgent
se instancia a través de un método de fábrica estático, asegurando que el proceso ocurra de forma no bloqueante. Este método abstrae la complejidad de la llamada asincrónica, devolviendo una promesa o un futuro una vez que el asistente esté completamente inicializado y listo para su uso.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant =
await this.AssistantClient.CreateAssistantAsync(
"<model name>",
"<agent name>",
instructions: "<agent instructions>");
OpenAIAssistantAgent agent = new(assistant, client);
from semantic_kernel.agents.open_ai import AzureAssistantAgent, OpenAIAssistantAgent
# Set up the client and model using Azure OpenAI Resources
client, model = AzureAssistantAgent.setup_resources()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=model,
instructions="<instructions>",
name="<agent name>",
)
# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
client=client,
definition=definition,
)
# or
# Set up the client and model using OpenAI Resources
client, model = OpenAIAssistantAgent.setup_resources()
# Define the assistant definition
definition = await client.beta.assistants.create(
model=model,
instructions="<instructions>",
name="<agent name>",
)
# Create the OpenAIAssistantAgent instance using the client and the assistant definition
agent = OpenAIAssistantAgent(
client=client,
definition=definition,
)
Los agentes no están disponibles actualmente en Java.
Recuperar un OpenAIAssistantAgent
Una vez creado, se puede acceder al asistente mediante su identificador. Este identificador se puede usar para crear una OpenAIAssistantAgent
a partir de una definición de asistente existente.
Para .NET, el identificador del agente se expone como string
a través de la propiedad definida por cualquier agente.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.GetAssistantAsync("<assistant id>");
OpenAIAssistantAgent agent = new(assistant, client);
# Using Azure OpenAI Resources
# Create the client using Azure OpenAI resources and configuration
client, model = AzureAssistantAgent.setup_resources()
# Create the assistant definition
definition = await client.beta.assistants.create(
model=model,
name="<agent name>",
instructions="<instructions>",
)
# Store the assistant ID
assistant_id = definition.id
# Retrieve the assistant definition from the server based on the assistant ID
new_asst_definition = await client.beta.assistants.retrieve(assistant_id)
# Create the AzureAssistantAgent instance using the client and the assistant definition
agent = AzureAssistantAgent(
client=client,
definition=new_asst_definition,
)
Los agentes no están disponibles actualmente en Java.
Uso de un OpenAIAssistantAgent
Al igual que con todos los aspectos de la API assistant, las conversaciones se almacenan de forma remota. Cada conversación se conoce como un subproceso y se identifica mediante un identificador único string
. Las interacciones con el OpenAIAssistantAgent
están vinculadas a este identificador de hilo específico que se debe especificar al llamar al agente.
// Define agent
OpenAIAssistantAgent agent = ...;
// Create a thread for the agent conversation.
string threadId = await agent.CreateThreadAsync();
// Add a user message to the conversation
chat.Add(threadId, new ChatMessageContent(AuthorRole.User, "<user input>"));
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(threadId))
{
// Process agent response(s)...
}
// Delete the thread when it is no longer needed
await agent.DeleteThreadAsync(threadId);
# Define agent
openai_agent = await ...
# Create a thread for the agent conversation
thread_id = await agent.create_thread()
# Add a user message to the conversation
await agent.add_chat_message(
thread_id=thread_id,
message=ChatMessageContent(role=AuthorRole.USER, content="<user input>"),
)
# Generate the agent response(s)
async for response in agent.invoke(thread_id=thread_id):
# process agent response(s)...
# Delete the thread when it is no longer needed
await agent.delete_thread(thread_id)
Los agentes no están disponibles actualmente en Java.
Eliminación de un OpenAIAssistantAgent
Dado que la definición del asistente se almacena de forma remota, se conservará si no se elimina.
La eliminación de una definición de asistente se puede realizar directamente con el AssistantClient
.
Nota: Al intentar usar una instancia de agente después de eliminarse, se producirá una excepción de servicio.
Para .NET, el identificador del agente se expone como string
a través de la Agent.Id
propiedad definida por cualquier agente.
AssistantClient client = OpenAIAssistantAgent.CreateAzureOpenAIClient(...).GetAssistantClient();
Assistant assistant = await this.AssistantClient.DeleteAssistantAsync("<assistant id>");
await agent.delete()
is_deleted = agent._is_deleted
Los agentes no están disponibles actualmente en Java.
Procedimiento
Para un ejemplo completo de una OpenAIAssistantAgent
, consulte:
-
cómo hacerlo:
OpenAIAssistantAgent
intérprete de código -
Guía de: Búsqueda de archivos
OpenAIAssistantAgent