Megosztás:


Ügynök létrehozása és futtatása az Agent Framework használatával

Ez az oktatóanyag bemutatja, hogyan hozhat létre és futtathat ügynököt az Agent Framework használatával az Azure OpenAI Csevegés befejezése szolgáltatás alapján.

Fontos

Az Agent Framework számos különböző típusú ügynököt támogat. Ez az oktatóanyag egy Csevegés befejezése szolgáltatáson alapuló ügynököt használ, de minden más ügynöktípus ugyanúgy fut. A többi ügynöktípusról és azok felépítéséről az Agent Framework felhasználói útmutatójában talál további információt.

Előfeltételek

Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:

Megjegyzés:

A Microsoft Agent Framework a .NET összes aktívan támogatott verziójával támogatott. A minta alkalmazásában a .NET 8 SDK-t vagy egy újabb verziót javasoljuk.

Fontos

Ez az oktatóanyag az Azure OpenAI-t használja a Csevegés befejezése szolgáltatáshoz, de bármilyen következtetési szolgáltatást használhat, amely implementációt IChatClient biztosít.

NuGet-csomagok telepítése

A Microsoft Agent Framework azure OpenAI-val való használatához telepítenie kell a következő NuGet-csomagokat:

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

Az ügynök létrehozása

  • Először hozzon létre egy ügyfelet az Azure OpenAI számára az Azure OpenAI-végpont megadásával, valamint az Előfeltételek lépésben az Azure CLI-vel való hitelesítéskor használt bejelentkezéssel.
  • Ezután szerezze be a csevegőügyfélt a csevegés-befejező szolgáltatással való kommunikációhoz, ahol meg kell adnia a használni kívánt modell üzembe helyezését is. Használja az Előfeltételek között létrehozott telepítések egyikét.
  • Végül hozza létre az ügynököt, és adja meg az ügynök utasításait és nevét.
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");

Az ügynök futtatása

Az ügynök futtatásához hívja meg a RunAsync metódust az ügynök példányán, és adja meg a felhasználói bemenetet. Az ügynök visszaad egy AgentRunResponse objektumot, és ha meghívja a .ToString() vagy .Text metódusokat ezen a válaszobjektumon, az ügynök szöveges eredményét kapja meg.

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

A kimenet példája:

Why did the pirate go to school?

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

Az ügynök futtatása streameléssel

Ha streameléssel szeretné futtatni az ügynököt, hívja meg a RunStreamingAsync metódust az ügynökpéldányon, és adja meg a felhasználói bemenetet. Az ügynök egy stream AgentRunResponseUpdate objektumot ad vissza, és az egyes frissítési objektumokra történő .ToString() vagy .Text hívása biztosítja a frissítésben található szöveges eredmény részét.

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

A kimenet példája:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Az ügynök futtatása a ChatMessages használatával

Egyszerű sztring helyett egy vagy több ChatMessage objektumot is megadhat a RunAsync és RunStreamingAsync metódusoknak.

Íme egy példa egyetlen felhasználói üzenettel:

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

A kimenet példája:

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

Because he wanted to make a splash!

Íme egy példa egy rendszer- és felhasználói üzenettel:

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

A kimenet példája:

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.

Ez az oktatóanyag bemutatja, hogyan hozhat létre és futtathat ügynököt az Agent Framework használatával az Azure OpenAI Csevegés befejezése szolgáltatás alapján.

Fontos

Az Agent Framework számos különböző típusú ügynököt támogat. Ez az oktatóanyag egy Csevegés befejezése szolgáltatáson alapuló ügynököt használ, de minden más ügynöktípus ugyanúgy fut. A többi ügynöktípusról és azok felépítéséről az Agent Framework felhasználói útmutatójában talál további információt.

Előfeltételek

Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:

Fontos

Ez az oktatóanyag az Azure OpenAI-t használja a Csevegés befejezése szolgáltatáshoz, de bármilyen következtetési szolgáltatást használhat, amely kompatibilis az Agent Framework csevegési ügyfélprotokolljával.

Python-csomagok telepítése

A Microsoft Agent Framework azure OpenAI-val való használatához telepítenie kell a következő Python-csomagokat:

pip install agent-framework --pre

Az ügynök létrehozása

  • Először hozzon létre egy csevegőügyfélt az Azure OpenAI-val való kommunikációhoz, és használja ugyanazt a bejelentkezést, amelyet az Előfeltételek lépésben az Azure CLI-vel való hitelesítéskor használt.
  • Ezután hozza létre az ügynököt, és adja meg az ügynök utasításait és nevét.
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"
)

Az ügynök futtatása

Az ügynök futtatásához hívja meg a run metódust az ügynök példányán, és adja meg a felhasználói bemenetet. Az ügynök válaszobjektumot ad vissza, és a .text tulajdonság elérése hozzáférést biztosít az ügynök szöveges eredményéhez.

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

asyncio.run(main())

Az ügynök futtatása streameléssel

Ha streameléssel szeretné futtatni az ügynököt, hívja meg a run_stream metódust az ügynökpéldányon, és adja meg a felhasználói bemenetet. Az ügynök streameli a frissítési objektumok listáját, és az .text egyes frissítési objektumok tulajdonságának elérése biztosítja a frissítésben található szöveges eredmény részét.

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

Egy ügynök futtatása a ChatMessage használatával

Egyszerű sztring helyett egy vagy több ChatMessage objektumot is megadhat a run és run_stream metódusoknak.

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

Következő lépések