Explorando o Agente do Assistente de IA Aberta do Kernel Semântico (Experimental)
Aviso
O Semantic Kernel Agent Framework é experimental, ainda está em desenvolvimento e está sujeito a alterações.
A documentação detalhada da API relacionada a esta discussão está disponível em:
No momento, os agentes não estão disponíveis em Java.
O que é um assistente?
A API do OpenAI Assistant é uma interface especializada projetada para recursos de IA mais avançados e interativos, permitindo que os desenvolvedores criem agentes orientados a tarefas personalizados e em várias etapas. Ao contrário da API Chat Completion (conclusão de bate-papo), que se concentra em trocas de conversas simples, a API do Assistente permite interações dinâmicas e orientadas por objetivos com recursos adicionais, como interpretador de código e pesquisa de arquivos.
Criando um agente do Open AI Assistant
A criação de um Open AI Assistant requer a invocação de um serviço remoto, que é tratado de forma assíncrona. Para gerenciar isso, o Open AI Assistant Agent é instanciado por meio de um método de fábrica estático, garantindo que o processo ocorra de maneira sem bloqueio. Esse método abstrai a complexidade da chamada assíncrona, retornando uma promessa ou futuro quando o assistente estiver totalmente inicializado e pronto para 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>"
)
No momento, os agentes não estão disponíveis em Java.
Recuperando um agente do Open AI Assistant
Uma vez criado, o identificador do assistente pode ser acessado por meio de seu identificador. Esse identificador pode ser usado para criar um Agente do Open AI Assistant a partir de uma definição de assistente existente.
Para o .NET, o identificador do agente é exposto como um string
por meio da propriedade definida por qualquer 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)
No momento, os agentes não estão disponíveis em Java.
Usando um agente do Open AI Assistant
Como acontece com todos os aspectos da API do Assistente, as conversas são armazenadas remotamente. Cada conversa é chamada de thread e identificada por um identificador exclusivo string
. As interações com seu agente assistente OpenAI estão vinculadas a esse identificador de thread específico, que deve ser especificado ao chamar o 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)
No momento, os agentes não estão disponíveis em Java.
Excluir um agente do Open AI Assistant
Como a definição do assistente é armazenada remotamente, ela dá suporte à capacidade de autoexclusão. Isso permite que o agente seja removido do sistema quando não for mais necessário.
Observação: a tentativa de usar uma instância do agente após ser excluída resulta em uma exceção.
Para o .NET, o identificador do agente é exposto como um string
por meio da Agent.Id
propriedade definida por qualquer 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
No momento, os agentes não estão disponíveis em Java.
Instruções
Para obter um exemplo de ponta a ponta para um agente do Open AI Assistant, consulte: