Delen via


De Semantische Kernel verkennen met de Open AI Assistant Agent

Waarschuwing

Het Semantic Kernel Agent Framework is een voorbeeldversie en kan worden gewijzigd.

Gedetailleerde API-documentatie met betrekking tot deze discussie is beschikbaar op:

Agents zijn momenteel niet beschikbaar in Java.

Wat is een assistent?

De OpenAI Assistant-API is een gespecialiseerde interface die is ontworpen voor geavanceerdere en interactieve AI-mogelijkheden, zodat ontwikkelaars persoonlijke en taakgerichte agents met meerdere stappen kunnen maken. In tegenstelling tot de CHAT-voltooiings-API, die zich richt op eenvoudige gesprekken, biedt de Assistent-API dynamische, doelgestuurde interacties met aanvullende functies, zoals code-interpreter en file-search.

Een Open AI Assistant-agent maken

Het maken van een Open AI Assistant vereist het aanroepen van een externe service, die asynchroon wordt afgehandeld. Om dit te beheren, wordt de Open AI Assistant-agent geïnstantieerd via een statische factory-methode, zodat het proces op een niet-blokkerende manier plaatsvindt. Deze methode abstraheert de complexiteit van de asynchrone aanroep, retourneert een belofte of toekomst zodra de assistent volledig is geïnitialiseerd en klaar voor gebruik.

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>"
)

Agents zijn momenteel niet beschikbaar in Java.

Een Open AI Assistant-agent ophalen

Zodra de assistent is gemaakt, kan de id van de assistent toegankelijk zijn via de id. Deze id kan worden gebruikt om een Open AI Assistant-agent te maken op basis van een bestaande definitie van een assistent.

Voor .NET wordt de agent-id weergegeven als een string via de eigenschap die door een agent is gedefinieerd.

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)

Agents zijn momenteel niet beschikbaar in Java.

Een Open AI Assistant-agent gebruiken

Net als bij alle aspecten van de Assistent-API worden gesprekken extern opgeslagen. Elk gesprek wordt een thread genoemd en geïdentificeerd door een unieke string id. Interacties met uw OpenAI Assistant-agent zijn gekoppeld aan deze specifieke thread-id die moet worden opgegeven bij het aanroepen van de agent/

// 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)

Agents zijn momenteel niet beschikbaar in Java.

Een Open AI Assistant-agent verwijderen

Omdat de definitie van de assistent extern wordt opgeslagen, ondersteunt deze de mogelijkheid om zelf te verwijderen. Hierdoor kan de agent worden verwijderd uit het systeem wanneer deze niet meer nodig is.

Opmerking: Als u een agentexemplaren probeert te gebruiken nadat deze is verwijderd, resulteert dit in een uitzondering.

Voor .NET wordt de agent-id weergegeven als een string via de Agent.Id eigenschap die door een agent is gedefinieerd.

// 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

Agents zijn momenteel niet beschikbaar in Java.

Uitleg:

Zie voor een end-to-end-voorbeeld voor een Open AI Assistant-agent: