Sdílet prostřednictvím


Vytvoření a spuštění agenta pomocí agenta Framework

V tomto kurzu se dozvíte, jak vytvořit a spustit agenta pomocí Agent Framework využívající služby dokončování chatu Azure OpenAI.

Důležité

Agent Framework podporuje mnoho různých typů agentů. V tomto kurzu se používá agent založený na službě dokončení chatu, ale všechny ostatní typy agentů se spouštějí stejným způsobem. Další informace o jiných typech agentů a o tom, jak je sestavit, naleznete v uživatelské příručce k rozhraní Agent Framework.

Požadavky

Než začnete, ujistěte se, že máte následující požadavky:

Poznámka:

Rozhraní Microsoft Agent Framework je podporováno ve všech aktivně podporovaných verzích rozhraní .NET. Pro účely této ukázky doporučujeme sadu .NET 8 SDK nebo novější verzi.

Důležité

V tomto kurzu se pro službu dokončování chatu používá Azure OpenAI, ale můžete použít jakoukoli službu odvozování, která poskytuje implementaci IChatClient .

Instalace balíčků NuGet

Pokud chcete používat rozhraní Microsoft Agent Framework s Azure OpenAI, musíte nainstalovat následující balíčky NuGet:

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

Vytvoření agenta

  • Nejprve vytvořte klienta pro Azure OpenAI tím, že poskytnete koncový bod Azure OpenAI a použijete stejné přihlášení, jaké jste použili při ověřování pomocí Azure CLI v kroku Požadavky .
  • Pak získejte chatovacího klienta pro komunikaci se službou pro dokončování chatu, kde také zadáte konkrétní nasazení modelu, které se má použít. Použijte jedno z nasazení, která jste vytvořili v kroku Požadavky .
  • Nakonec vytvořte agenta a zadejte pokyny a název agenta.
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");

Spuštění agenta

Pokud chcete spustit agenta, zavolejte RunAsync metodu v instanci agenta a zadejte uživatelský vstup. Agent vrátí objekt AgentRunResponse, a zavoláním .ToString() nebo .Text na tento objekt odpovědi se získá textový výsledek od agenta.

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

Ukázkový výstup:

Why did the pirate go to school?

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

Spuštění agenta během streamování

Pokud chcete spustit agenta se streamováním, zavolejte RunStreamingAsync metodu v instanci agenta a zadejte uživatelský vstup. Agent vrátí objekty datového proudu AgentRunResponseUpdate a volání .ToString() nebo .Text pro každý aktualizační objekt poskytuje část výsledku textu obsaženého v této aktualizaci.

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

Ukázkový výstup:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Spuštění agenta pomocí ChatMessages

Místo jednoduchého řetězce můžete také poskytnout jeden nebo více ChatMessage objektů k RunAsync a RunStreamingAsync metodám.

Tady je příklad s jednou zprávou uživatele:

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

Ukázkový výstup:

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

Because he wanted to make a splash!

Tady je příklad se zprávou systému a uživatele:

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

Ukázkový výstup:

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.

V tomto kurzu se dozvíte, jak vytvořit a spustit agenta pomocí Agent Framework využívající služby dokončování chatu Azure OpenAI.

Důležité

Agent Framework podporuje mnoho různých typů agentů. V tomto kurzu se používá agent založený na službě dokončení chatu, ale všechny ostatní typy agentů se spouštějí stejným způsobem. Další informace o jiných typech agentů a o tom, jak je sestavit, naleznete v uživatelské příručce k rozhraní Agent Framework.

Požadavky

Než začnete, ujistěte se, že máte následující požadavky:

Důležité

Tento kurz používá Azure OpenAI pro službu dokončování chatu, ale můžete použít jakoukoli službu odvozování, která je kompatibilní s protokolem chatovacího klienta rozhraní Agent Framework.

Instalace balíčků Pythonu

Pokud chcete používat rozhraní Microsoft Agent Framework s Azure OpenAI, musíte nainstalovat následující balíčky Pythonu:

pip install agent-framework

Vytvoření agenta

  • Nejprve vytvořte chatovacího klienta pro komunikaci s Azure OpenAI a použijte stejné přihlašovací jméno, jaké jste použili při ověřování pomocí Azure CLI v kroku Požadavky .
  • Potom vytvořte agenta a zadejte pokyny a název agenta.
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"
)

Spuštění agenta

Pokud chcete spustit agenta, zavolejte run metodu v instanci agenta a zadejte uživatelský vstup. Agent vrátí objekt odpovědi a přístup k vlastnosti .text poskytuje textový výsledek z agenta.

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

asyncio.run(main())

Spuštění agenta během streamování

Pokud chcete spustit agenta se streamováním, zavolejte run_stream metodu v instanci agenta a zadejte uživatelský vstup. Agent bude streamovat seznam aktualizačních objektů a přístup k .text vlastnosti u každého aktualizačního objektu poskytuje část textového výsledku obsaženého v této aktualizaci.

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

Spuštění agenta pomocí ChatMessage

Místo jednoduchého řetězce můžete také poskytnout jeden nebo více ChatMessage objektů k run a run_stream metodám.

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

Další kroky