Exploración del agente de Open AI Assistant del kernel semántico (experimental)
Advertencia
El marco del agente de kernel semántico es experimental, todavía en desarrollo 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.
¿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.
Creación de un agente de Open AI Assistant
La creación de open AI Assistant requiere invocar un servicio remoto, que se controla de forma asincrónica. Para administrar esto, se crea una instancia del agente open AI Assistant a través de un método de fábrica estático, lo que garantiza que el proceso se produce de forma no bloqueada. 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.
OpenAIAssistantAgent agent =
await OpenAIAssistantAgent.CreateAsync(
OpenAIClientProvider.ForAzureOpenAI(/*<...service configuration>*/),
new OpenAIAssistantDefinition("<model name>")
{
Name = "<agent name>",
Instructions = "<agent instructions>",
},
new Kernel());
azure_agent = await AzureAssistantAgent.create(
kernel=kernel,
service_id=service_id,
name="<agent name>",
instructions="<agent instructions>"
)
# or
openai_agent = await OpenAIAssistantAgent.create(
kernel=kernel,
service_id=service_id,
name="<agent name>",
instructions="<agent instructions>"
)
Los agentes no están disponibles actualmente en Java.
Recuperación de un agente de Open AI Assistant
Una vez creado, el identificador del asistente puede tener acceso a través de su identificador. Este identificador se puede usar para crear un agente de Open AI Assistant a partir de una definición de asistente existente.
Para .NET, el identificador del agente se expone como a string
través de la propiedad definida por cualquier agente.
OpenAIAssistantAgent agent =
await OpenAIAssistantAgent.RetrieveAsync(
OpenAIClientProvider.ForAzureOpenAI(/*<...service configuration>*/),
"<your agent id>",
new Kernel());
agent = await OpenAIAssistantAgent.retrieve(id=agent_id, kernel=kernel)
# or
agent = await AzureAssistantAgent.retrieve(id=agent_id, kernel=kernel)
Los agentes no están disponibles actualmente en Java.
Uso de un agente de Open AI Assistant
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 agente de OpenAI Assistant están vinculadas a este identificador de subproceso específico que se debe especificar al llamar al agente o
// 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 agente de Open AI Assistant
Dado que la definición del asistente se almacena de forma remota, admite la capacidad de autoadministrar. Esto permite que el agente se quite del sistema cuando ya no sea necesario.
Nota: Al intentar usar una instancia de agente después de eliminarse, se produce una excepción.
Para .NET, el identificador del agente se expone como a string
través de la Agent.Id
propiedad definida por cualquier agente.
// Perform the deletion
await agent.DeleteAsync();
// Inspect whether an agent has been deleted
bool isDeleted = agent.IsDeleted();
await agent.delete()
is_deleted = agent._is_deleted
Los agentes no están disponibles actualmente en Java.
Procedimiento
Para obtener un ejemplo de un extremo a otro para un agente de Open AI Assistant, consulte: