Delen via


Een agent maken en uitvoeren met Agent Framework

In deze zelfstudie leert u hoe u een agent maakt en uitvoert met Agent Framework, op basis van de Azure OpenAI Chat Completion-service.

Belangrijk

Agent Framework ondersteunt veel verschillende typen agents. In deze zelfstudie wordt een agent gebruikt op basis van een Chat Completion-dienst, maar alle andere agenttypen worden op dezelfde manier uitgevoerd. Zie de gebruikershandleiding voor Agent Framework voor meer informatie over andere agenttypen en hoe u deze samenwerkt.

Vereiste voorwaarden

Zorg ervoor dat u aan de volgende vereisten voldoet voordat u begint:

Opmerking

Microsoft Agent Framework wordt ondersteund met alle actief ondersteunde versies van .NET. Voor dit voorbeeld raden we de .NET 8 SDK of een latere versie aan.

Belangrijk

In deze zelfstudie wordt Azure OpenAI gebruikt voor de chatvoltooiingsservice, maar u kunt elke deductieservice gebruiken die een IChatClient implementatie biedt.

NuGet-pakketten installeren

Als u Microsoft Agent Framework wilt gebruiken met Azure OpenAI, moet u de volgende NuGet-pakketten installeren:

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

De agent maken

  • Maak eerst een client voor Azure OpenAI door het Azure OpenAI-eindpunt op te geven en dezelfde aanmelding te gebruiken als u hebt gebruikt bij verificatie met de Azure CLI in de stap Vereisten .
  • Haal vervolgens een chatclient op voor communicatie met de chatvoltooiingsservice, waar u ook de specifieke modelimplementatie opgeeft die moet worden gebruikt. Gebruik een van de implementaties die u hebt gemaakt in de stap Vereisten .
  • Maak tot slot de agent, geef instructies en een naam voor de agent op.
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");

De agent uitvoeren

Als u de agent wilt uitvoeren, roept u de RunAsync methode aan op de agentinstantie en geeft u de gebruikersinvoer op. De agent retourneert een AgentRunResponse object, en door het aanroepen van .ToString() of .Text op dit antwoordobject wordt het tekstresultaat van de agent gegeven.

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

Voorbeelduitvoer:

Why did the pirate go to school?

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

De agent uitvoeren met streaming

Als u de agent wilt uitvoeren met streaming, roept u de RunStreamingAsync-methode aan op de agentinstantie en verstrekt u de gebruikersinvoer. De agent retourneert een stroom van objecten AgentRunResponseUpdate en het aanroepen van .ToString() of .Text op elk update-object levert het deel van het tekstresultaat dat in die update is opgenomen.

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

Voorbeelduitvoer:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

De agent draaien met ChatMessages

In plaats van een eenvoudige tekenreeks kunt u ook een of meer ChatMessage objecten voor de RunAsync en RunStreamingAsync methoden opgeven.

Hier volgt een voorbeeld met één gebruikersbericht:

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

Voorbeelduitvoer:

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

Because he wanted to make a splash!

Hier volgt een voorbeeld met een systeem- en gebruikersbericht:

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]));

Voorbeelduitvoer:

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 deze zelfstudie leert u hoe u een agent maakt en uitvoert met Agent Framework, op basis van de Azure OpenAI Chat Completion-service.

Belangrijk

Agent Framework ondersteunt veel verschillende typen agents. In deze zelfstudie wordt een agent gebruikt op basis van een Chat Completion-dienst, maar alle andere agenttypen worden op dezelfde manier uitgevoerd. Zie de gebruikershandleiding voor Agent Framework voor meer informatie over andere agenttypen en hoe u deze samenwerkt.

Vereiste voorwaarden

Zorg ervoor dat u aan de volgende vereisten voldoet voordat u begint:

Belangrijk

In deze zelfstudie wordt Azure OpenAI gebruikt voor de chatvoltooiingsservice, maar u kunt elke deductieservice gebruiken die compatibel is met het chatclientprotocol van Agent Framework.

Python-pakketten installeren

Als u Microsoft Agent Framework wilt gebruiken met Azure OpenAI, moet u de volgende Python-pakketten installeren:

pip install agent-framework --pre

De agent maken

  • Maak eerst een chatclient voor communicatie met Azure OpenAI en gebruik dezelfde aanmelding als u hebt gebruikt bij het verifiëren met de Azure CLI in de stap Vereisten .
  • Maak vervolgens de agent, geef instructies en een naam voor de agent op.
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"
)

De agent uitvoeren

Als u de agent wilt uitvoeren, roept u de run methode aan op de agentinstantie en geeft u de gebruikersinvoer op. De agent retourneert een antwoordobject en als u de .text eigenschap opent, krijgt u het tekstresultaat van de agent.

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

asyncio.run(main())

De agent uitvoeren met streaming

Als u de agent wilt uitvoeren met streaming, roept u de run_stream-methode aan op de agentinstantie en verstrekt u de gebruikersinvoer. De agent verzendt een lijst met updateobjecten en door de .text eigenschap van ieder updateobject te benaderen, verkrijgt u het deel van het tekstresultaat dat in die update is opgenomen.

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

De agent uitvoeren met een ChatMessage

In plaats van een eenvoudige tekenreeks kunt u ook een of meer ChatMessage objecten voor de run en run_stream methoden opgeven.

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

Volgende stappen