Condividi tramite


Esplorazione dell'agente di assistente open AI open ai del kernel semantico (sperimentale)

Avviso

Il framework dell'agente del kernel semantico è sperimentale, ancora in fase di sviluppo ed è soggetto a modifiche.

La documentazione dettagliata dell'API relativa a questa discussione è disponibile all'indirizzo:

Gli agenti non sono attualmente disponibili in Java.

Che cos'è un assistente?

L'API Assistente OpenAI è un'interfaccia specializzata progettata per funzionalità di intelligenza artificiale più avanzate e interattive, consentendo agli sviluppatori di creare agenti personalizzati e orientati alle attività in più passaggi. A differenza dell'API completamento chat, che si concentra su semplici scambi di conversazioni, l'API Assistente consente interazioni dinamiche basate su obiettivi con funzionalità aggiuntive come l'interprete del codice e la ricerca di file.

Creazione di un agente Open AI Assistant

La creazione di open AI Assistant richiede la chiamata di un servizio remoto, gestito in modo asincrono. Per gestirlo, viene creata un'istanza dell'agente Open AI Assistant tramite un metodo factory statico, assicurando che il processo venga eseguito in modo non bloccante. Questo metodo astrae la complessità della chiamata asincrona, restituendo una promessa o un futuro dopo che l'assistente è completamente inizializzato e pronto per l'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>"
)

Gli agenti non sono attualmente disponibili in Java.

Recupero di un agente Open AI Assistant

Dopo la creazione, l'identificatore dell'assistente può essere accessibile tramite il relativo identificatore. Questo identificatore può essere usato per creare un agente Open AI Assistant da una definizione di assistente esistente.

Per .NET, l'identificatore dell'agente viene esposto come tramite string la proprietà definita da qualsiasi 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)

Gli agenti non sono attualmente disponibili in Java.

Uso di un agente Open AI Assistant

Come per tutti gli aspetti dell'API Assistente, le conversazioni vengono archiviate in remoto. Ogni conversazione viene definita thread e identificata da un identificatore univoco string . Le interazioni con l'agente assistente OpenAI sono associate a questo identificatore di thread specifico che deve essere specificato quando si chiama l'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)

Gli agenti non sono attualmente disponibili in Java.

Eliminazione di un agente Open AI Assistant

Poiché la definizione dell'assistente viene archiviata in modalità remota, supporta la funzionalità di eliminazione automatica. In questo modo l'agente deve essere rimosso dal sistema quando non è più necessario.

Nota: il tentativo di usare un'istanza dell'agente dopo l'eliminazione comporta un'eccezione.

Per .NET, l'identificatore dell'agente viene esposto come tramite string la Agent.Id proprietà definita da qualsiasi 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

Gli agenti non sono attualmente disponibili in Java.

Procedure

Per un esempio end-to-end per un agente Open AI Assistant, vedere: