Explorando o Semantic Kernel Open AI Assistant Agent (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:
Os agentes estão atualmente indisponíveis em Java.
O que é um Assistente?
A API OpenAI Assistant é uma interface especializada projetada para recursos de IA mais avançados e interativos, permitindo que os desenvolvedores criem agentes personalizados e orientados a tarefas em várias etapas. Ao contrário da API de conclusão de bate-papo, que se concentra em trocas conversacionais 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 Open AI Assistant
Criar um Open AI Assistant requer invocar 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 estático de fábrica, garantindo que o processo ocorra de maneira sem bloqueio. Esse método abstrai a complexidade da chamada assíncrona, retornando uma promessa ou futuro assim que 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>"
)
Os agentes estão atualmente indisponíveis em Java.
Recuperando um agente Open AI Assistant
Uma vez criado, o identificador do assistente pode ser acessado através do seu identificador. Esse identificador pode ser usado para criar um Open AI Assistant Agent a partir de uma definição de assistente existente.
Para .NET, o identificador do agente é exposto como um string
através 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)
Os agentes estão atualmente indisponíveis em Java.
Usando um agente Open AI Assistant
Como em todos os aspetos da API do Assistente, as conversas são armazenadas remotamente. Cada conversa é referida como um segmento e identificada por um identificador exclusivo string
. As interações com seu OpenAI Assistant Agent 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)
Os agentes estão atualmente indisponíveis em Java.
Excluindo um agente Open AI Assistant
Como a definição do assistente é armazenada remotamente, ele suporta a capacidade de autoexclusão. Isso permite que o agente seja removido do sistema quando não for mais necessário.
Nota: A tentativa de usar uma instância do agente depois de ser excluída resulta em uma exceção.
Para .NET, o identificador do agente é exposto como um string
através 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
Os agentes estão atualmente indisponíveis em Java.
Procedimentos
Para obter um exemplo completo de um Open AI Assistant Agent, consulte: