Freigeben über


Erstellen und Ausführen eines Agents mit Agent Framework

In diesem Lernprogramm erfahren Sie, wie Sie einen Agent mit Agent Framework basierend auf dem Azure OpenAI Chat Completion-Dienst erstellen und ausführen.

Von Bedeutung

Agent Framework unterstützt viele verschiedene Arten von Agents. In diesem Lernprogramm wird ein Agent basierend auf einem Chatabschlussdienst verwendet, aber alle anderen Agenttypen werden auf die gleiche Weise ausgeführt. Weitere Informationen zu anderen Agenttypen und deren Erstellung finden Sie im Agent Framework-Benutzerhandbuch.

Voraussetzungen

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie beginnen:

Hinweis

Microsoft Agent Framework wird mit allen aktiv unterstützten Versionen von .NET unterstützt. Für die Zwecke dieses Beispiels empfehlen wir das .NET 8 SDK oder eine höhere Version.

Von Bedeutung

In diesem Lernprogramm wird Azure OpenAI für den Chatabschlussdienst verwendet, Sie können jedoch jeden Rückschlussdienst verwenden, der eine IChatClient Implementierung bereitstellt.

Installieren von NuGet-Paketen

Um Microsoft Agent Framework mit Azure OpenAI zu verwenden, müssen Sie die folgenden NuGet-Pakete installieren:

dotnet add package Azure.AI.OpenAI --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.OpenAI --prerelease

Erstellen des Agents

  • Erstellen Sie zunächst einen Client für Azure OpenAI, indem Sie den Azure OpenAI-Endpunkt bereitstellen und dieselbe Anmeldung wie bei der Authentifizierung mit der Azure CLI im Schritt "Voraussetzungen" verwenden.
  • Holen Sie sich dann einen Chatclient, um mit dem Chat-Completion-Dienst zu kommunizieren, bei dem Sie auch das spezifische Modell-Deployment angeben, das verwendet werden soll. Verwenden Sie eine der Bereitstellungen, die Sie im Schritt "Voraussetzungen" erstellt haben.
  • Erstellen Sie schließlich den Agent, und geben Sie Anweisungen und einen Namen für den Agent an.
using System;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using OpenAI;

AIAgent agent = new AzureOpenAIClient(
    new Uri("https://<myresource>.openai.azure.com"),
    new AzureCliCredential())
        .GetChatClient("gpt-4o-mini")
        .CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Ausführen des Agenten

Rufen Sie zum Ausführen des Agents die RunAsync Methode für die Agentinstanz auf, und stellen Sie die Benutzereingabe bereit. Der Agent gibt ein AgentRunResponse Objekt zurück, und das Aufrufen von .ToString() oder .Text auf dieses Antwortobjekt stellt das Textergebnis des Agenten bereit.

Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));

Beispielausgabe:

Why did the pirate go to school?

Because he wanted to improve his "arrr-ticulation"! 🏴‍☠️

Ausführen des Agents mit Streaming

Rufen Sie zum Ausführen des Agents mit Streaming die RunStreamingAsync Methode für die Agentinstanz auf, und stellen Sie die Benutzereingabe bereit. Der Agent gibt einen Strom aus AgentRunResponseUpdate-Objekten zurück, und das Aufrufen von .ToString() oder .Text bei jedem Update-Objekt liefert den Teil des Textergebnisses, der in diesem Update enthalten ist.

await foreach (var update in agent.RunStreamingAsync("Tell me a joke about a pirate."))
{
    Console.WriteLine(update);
}

Beispielausgabe:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Ausführen des Agents mit Chatnachrichten

Anstelle einer einfachen Zeichenfolge können Sie auch ein oder mehrere ChatMessage Objekte für die Methoden RunAsync und RunStreamingAsync bereitstellen.

Hier ist ein Beispiel für eine einzelne Benutzernachricht:

ChatMessage message = new(ChatRole.User, [
    new TextContent("Tell me a joke about this image?"),
    new UriContent("https://upload.wikimedia.org/wikipedia/commons/1/11/Joseph_Grimaldi.jpg", "image/jpeg")
]);

Console.WriteLine(await agent.RunAsync(message));

Beispielausgabe:

Why did the clown bring a bottle of sparkling water to the show?

Because he wanted to make a splash!

Hier ist ein Beispiel mit einer System- und Benutzernachricht:

ChatMessage systemMessage = new(
    ChatRole.System,
    """
    If the user asks you to tell a joke, refuse to do so, explaining that you are not a clown.
    Offer the user an interesting fact instead.
    """);
ChatMessage userMessage = new(ChatRole.User, "Tell me a joke about a pirate.");

Console.WriteLine(await agent.RunAsync([systemMessage, userMessage]));

Beispielausgabe:

I'm not a clown, but I can share an interesting fact! Did you know that pirates often revised the Jolly Roger flag? Depending on the pirate captain, it could feature different symbols like skulls, bones, or hourglasses, each representing their unique approach to piracy.

In diesem Lernprogramm erfahren Sie, wie Sie einen Agent mit Agent Framework basierend auf dem Azure OpenAI Chat Completion-Dienst erstellen und ausführen.

Von Bedeutung

Agent Framework unterstützt viele verschiedene Arten von Agents. In diesem Lernprogramm wird ein Agent basierend auf einem Chatabschlussdienst verwendet, aber alle anderen Agenttypen werden auf die gleiche Weise ausgeführt. Weitere Informationen zu anderen Agenttypen und deren Erstellung finden Sie im Agent Framework-Benutzerhandbuch.

Voraussetzungen

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie beginnen:

Von Bedeutung

In diesem Lernprogramm wird Azure OpenAI für den Chatabschlussdienst verwendet, Sie können jedoch einen beliebigen Rückschlussdienst verwenden, der mit dem Chatclientprotokoll von Agent Framework kompatibel ist.

Installieren von Python-Paketen

Um Microsoft Agent Framework mit Azure OpenAI zu verwenden, müssen Sie die folgenden Python-Pakete installieren:

pip install agent-framework --pre

Erstellen des Agents

  • Erstellen Sie zunächst einen Chatclient für die Kommunikation mit Azure OpenAI, und verwenden Sie dieselbe Anmeldung wie bei der Authentifizierung mit der Azure CLI im Schritt "Voraussetzungen" .
  • Erstellen Sie dann den Agent, und geben Sie Anweisungen und einen Namen für den Agent an.
import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential

agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent(
    instructions="You are good at telling jokes.",
    name="Joker"
)

Ausführen des Agenten

Rufen Sie zum Ausführen des Agents die run Methode für die Agentinstanz auf, und stellen Sie die Benutzereingabe bereit. Der Agent gibt ein Antwortobjekt zurück, und der Zugriff auf die .text Eigenschaft stellt das Textergebnis des Agents bereit.

async def main():
    result = await agent.run("Tell me a joke about a pirate.")
    print(result.text)

asyncio.run(main())

Ausführen des Agents mit Streaming

Rufen Sie zum Ausführen des Agents mit Streaming die run_stream Methode für die Agentinstanz auf, und stellen Sie die Benutzereingabe bereit. Der Agent streamt eine Liste von Aktualisierungsobjekten, und der Zugriff auf die .text Eigenschaft für jedes Updateobjekt stellt den Teil des Textergebnisses bereit, das in dieser Aktualisierung enthalten ist.

async def main():
    async for update in agent.run_stream("Tell me a joke about a pirate."):
        if update.text:
            print(update.text, end="", flush=True)
    print()  # New line after streaming is complete

asyncio.run(main())

Ausführen des Agents mit einer Chat-Nachricht

Anstelle einer einfachen Zeichenfolge können Sie auch ein oder mehrere ChatMessage Objekte für die Methoden run und run_stream bereitstellen.

from agent_framework import ChatMessage, TextContent, UriContent, Role

message = ChatMessage(
    role=Role.USER,
    contents=[
        TextContent(text="Tell me a joke about this image?"),
        UriContent(uri="https://samplesite.org/clown.jpg", media_type="image/jpeg")
    ]
)

async def main():
    result = await agent.run(message)
    print(result.text)

asyncio.run(main())

Nächste Schritte