Freigeben über


Erkunden des Semantischen KernelsOpen AI Assistant Agent

Warnung

Das Semantische Kernel-Agent-Framework befindet sich in der Vorschau und kann geändert werden.

Detaillierte API-Dokumentation zu dieser Diskussion finden Sie unter:

Agents sind derzeit in Java nicht verfügbar.

Was ist ein Assistent?

Die OpenAI-Assistent-API ist eine spezielle Schnittstelle, die für erweiterte und interaktive KI-Funktionen entwickelt wurde, sodass Entwickler personalisierte und mehrstufige aufgabenorientierte Agents erstellen können. Im Gegensatz zur Chat-Vervollständigungs-API, die sich auf einfachen Unterhaltungsaustausch konzentriert, ermöglicht die Assistenten-API dynamische, zielgesteuerte Interaktionen mit zusätzlichen Features wie Code-Interpreter und Dateisuche.

Erstellen eines Open AI-Assistenten-Agents

Das Erstellen eines Open AI-Assistenten erfordert das Aufrufen eines Remotediensts, der asynchron behandelt wird. Um dies zu verwalten, wird der Open AI Assistant Agent über eine statische Factorymethode instanziiert, um sicherzustellen, dass der Prozess auf nicht blockierende Weise erfolgt. Diese Methode abstrahiert die Komplexität des asynchronen Aufrufs und gibt eine Zusage oder zukunft zurück, sobald der Assistent vollständig initialisiert und einsatzbereit ist.

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 sind derzeit in Java nicht verfügbar.

Abrufen eines Open AI Assistant-Agents

Nach der Erstellung kann der Bezeichner des Assistenten über seinen Bezeichner zugreifen. Dieser Bezeichner kann verwendet werden, um einen Open AI Assistant Agent aus einer vorhandenen Assistentendefinition zu erstellen.

Für .NET wird der Agentbezeichner über string die eigenschaft verfügbar gemacht, die von einem beliebigen Agent definiert wurde.

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 sind derzeit in Java nicht verfügbar.

Verwenden eines Open AI-Assistenten-Agents

Wie bei allen Aspekten der Assistenten-API werden Unterhaltungen remote gespeichert. Jede Unterhaltung wird als Thread bezeichnet und durch einen eindeutigen string Bezeichner identifiziert. Interaktionen mit Ihrem OpenAI-Assistenten-Agent sind an diesen spezifischen Threadbezeichner gebunden, der beim Aufrufen des Agents angegeben werden muss/

// 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 sind derzeit in Java nicht verfügbar.

Löschen eines Open AI-Assistenten-Agents

Da die Definition des Assistenten remote gespeichert wird, unterstützt er die Funktion zum Selbstlöschen. Dadurch kann der Agent aus dem System entfernt werden, wenn er nicht mehr benötigt wird.

Hinweis: Der Versuch, eine Agentinstanz nach dem Löschen zu verwenden, führt zu einer Ausnahme.

Für .NET wird der Agentbezeichner über string die eigenschaft verfügbar gemacht, die Agent.Id von einem beliebigen Agent definiert wurde.

// 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 sind derzeit in Java nicht verfügbar.

Vorgehensweise

Ein End-to-End-Beispiel für einen Open AI Assistant Agent finden Sie unter: