Udostępnij przez


Tworzenie i uruchamianie agenta za pomocą programu Agent Framework

W tym samouczku pokazano, jak utworzyć i uruchomić agenta za pomocą platformy Agent Framework w oparciu o usługę uzupełniania czatów platformy Azure OpenAI.

Ważne

Struktura agentów obsługuje wiele różnych typów agentów. W tym samouczku używany jest agent oparty na usłudze uzupełniania rozmów, ale wszystkie inne typy agentów działają w taki sam sposób. Aby uzyskać więcej informacji na temat innych typów agentów i sposobu ich konstruowania, zobacz Podręcznik użytkownika platformy Agent Framework.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące wymagania wstępne:

Uwaga / Notatka

Program Microsoft Agent Framework jest obsługiwany ze wszystkimi aktywnie obsługiwanymi wersjami platformy .NET. Na potrzeby tego przykładu zalecamy zestaw .NET 8 SDK lub nowszą wersję.

Ważne

W tym samouczku jest używana usługa Azure OpenAI dla usługi uzupełniania czatów, ale możesz użyć dowolnej usługi wnioskowania, która zapewnia implementację IChatClient .

Instalowanie pakietów NuGet

Aby używać programu Microsoft Agent Framework z usługą Azure OpenAI, należy zainstalować następujące pakiety NuGet:

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

Tworzenie agenta

  • Najpierw utwórz klienta dla usługi Azure OpenAI, podając punkt końcowy usługi Azure OpenAI i używając tego samego identyfikatora logowania, które zostało użyte podczas uwierzytelniania za pomocą interfejsu wiersza polecenia platformy Azure w kroku Wymagania wstępne .
  • Następnie uzyskaj aplikację kliencką do komunikacji z serwisem uzupełniania czatu i określ konkretne wdrożenie modelu do wykorzystania. Użyj jednego z wdrożeń utworzonych w kroku Wymagania wstępne .
  • Na koniec utwórz agenta, podając instrukcje i nazwę 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");

Uruchamianie agenta

Aby uruchomić agenta, wywołaj metodę RunAsync w wystąpieniu agenta, podając dane wejściowe użytkownika. Agent zwróci obiekt AgentRunResponse, a wywołanie .ToString() lub .Text na tym obiekcie odpowiedzi dostarcza wynik tekstowy od agenta.

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

Przykładowe dane wyjściowe:

Why did the pirate go to school?

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

Uruchamianie agenta za pomocą przesyłania strumieniowego

Aby uruchomić agenta z przesyłaniem strumieniowym, wywołaj metodę RunStreamingAsync w wystąpieniu agenta, podając dane wejściowe użytkownika. Agent zwróci obiekty strumienia AgentRunResponseUpdate , a wywołanie .ToString() lub .Text na każdym obiekcie aktualizacji udostępnia część wyniku tekstowego zawartego w tej aktualizacji.

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

Przykładowe dane wyjściowe:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Uruchamianie agenta za pomocą funkcji ChatMessages

Zamiast prostego ciągu można również podać co najmniej jeden ChatMessage obiekt metodom RunAsync i RunStreamingAsync .

Oto przykład z pojedynczym komunikatem użytkownika:

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

Przykładowe dane wyjściowe:

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

Because he wanted to make a splash!

Oto przykład komunikatu systemowego i użytkownika:

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

Przykładowe dane wyjściowe:

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.

W tym samouczku pokazano, jak utworzyć i uruchomić agenta za pomocą platformy Agent Framework w oparciu o usługę uzupełniania czatów platformy Azure OpenAI.

Ważne

Struktura agentów obsługuje wiele różnych typów agentów. W tym samouczku używany jest agent oparty na usłudze uzupełniania rozmów, ale wszystkie inne typy agentów działają w taki sam sposób. Aby uzyskać więcej informacji na temat innych typów agentów i sposobu ich konstruowania, zobacz Podręcznik użytkownika platformy Agent Framework.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące wymagania wstępne:

Ważne

W tym samouczku jest używana usługa Azure OpenAI dla usługi uzupełniania czatów, ale możesz użyć dowolnej usługi wnioskowania zgodnej z protokołem klienta czatu platformy Agent Framework.

Instalowanie pakietów języka Python

Aby używać programu Microsoft Agent Framework z usługą Azure OpenAI, należy zainstalować następujące pakiety języka Python:

pip install agent-framework --pre

Tworzenie agenta

  • Najpierw utwórz klienta czatu do komunikowania się z usługą Azure OpenAI i użyj tego samego identyfikatora logowania, którego użyto podczas uwierzytelniania za pomocą interfejsu wiersza polecenia platformy Azure w kroku Wymagania wstępne .
  • Następnie utwórz agenta, podając instrukcje i nazwę 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"
)

Uruchamianie agenta

Aby uruchomić agenta, wywołaj metodę run w wystąpieniu agenta, podając dane wejściowe użytkownika. Agent zwróci obiekt odpowiedzi, a uzyskanie dostępu do właściwości .text zapewnia wynik tekstowy od agenta.

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

asyncio.run(main())

Uruchamianie agenta za pomocą przesyłania strumieniowego

Aby uruchomić agenta z przesyłaniem strumieniowym, wywołaj metodę run_stream w wystąpieniu agenta, podając dane wejściowe użytkownika. Agent będzie przesyłać strumieniowo listę obiektów aktualizacji, a dostęp do właściwości .text w każdym obiekcie aktualizacji dostarcza część wyniku tekstowego zawartego w tej aktualizacji.

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

Uruchamianie agenta za pomocą komunikatu ChatMessage

Zamiast prostego ciągu można również podać co najmniej jeden ChatMessage obiekt metodom run i run_stream .

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

Dalsze kroki