Compartilhar via


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: