Bagikan melalui


Membuat dan menjalankan agen dengan Agent Framework

Tutorial ini menunjukkan kepada Anda cara membuat dan menjalankan agen dengan Agent Framework, berdasarkan layanan Penyelesaian Obrolan Azure OpenAI.

Penting

Agent Framework mendukung berbagai jenis agen. Tutorial ini menggunakan agen berdasarkan layanan Penyelesaian Obrolan, tetapi semua jenis agen lainnya dijalankan dengan cara yang sama. Untuk informasi selengkapnya tentang jenis agen lain dan cara membangunnya, lihat panduan pengguna Agent Framework.

Prasyarat

Sebelum memulai, pastikan Anda memiliki prasyarat berikut:

Nota

Microsoft Agent Framework didukung dengan semua versi .NET yang didukung secara aktif. Untuk tujuan sampel ini, kami merekomendasikan .NET 8 SDK atau versi yang lebih baru.

Penting

Tutorial ini menggunakan Azure OpenAI untuk layanan Penyelesaian Obrolan, tetapi Anda dapat menggunakan layanan inferensi apa pun yang menyediakan IChatClient implementasi.

Menginstal paket NuGet

Untuk menggunakan Microsoft Agent Framework dengan Azure OpenAI, Anda perlu menginstal paket NuGet berikut:

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

Membuat agen

  • Pertama, buat klien untuk Azure OpenAI dengan menyediakan titik akhir Azure OpenAI dan gunakan login yang sama dengan yang Anda gunakan saat mengautentikasi dengan Azure CLI di langkah Prasyarat .
  • Kemudian, dapatkan klien obrolan untuk berkomunikasi dengan layanan penyelesaian obrolan, di mana Anda juga menentukan penyebaran model tertentu untuk digunakan. Gunakan salah satu deployment yang Anda buat di langkah Prasyarat.
  • Terakhir, buat agen, berikan instruksi dan nama untuk agen.
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")
        .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Menjalankan agen

Untuk menjalankan agen, panggil RunAsync metode pada instans agen, berikan input pengguna. Agen akan mengembalikan AgentResponse objek, dan memanggil .ToString() atau .Text pada objek respons ini, memberikan hasil teks dari agen.

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

Contoh output:

Why did the pirate go to school?

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

Menjalankan agen dengan streaming

Untuk menjalankan agen dengan streaming, panggil metode RunStreamingAsync pada instans agen, sambil memberikan input pengguna. Agen akan mengembalikan objek aliran AgentResponseUpdate , dan memanggil .ToString() atau .Text pada setiap objek pembaruan menyediakan bagian dari hasil teks yang terkandung dalam pembaruan tersebut.

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

Contoh output:

Why
 did
 the
 pirate
 go
 to
 school
?


To
 improve
 his
 "
ar
rrrr
rr
tic
ulation
!"

Menjalankan agen dengan ChatMessages

Alih-alih string sederhana, Anda juga dapat menyediakan satu atau beberapa ChatMessage objek ke RunAsync metode dan RunStreamingAsync .

Berikut adalah contoh dengan satu pesan pengguna:

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

Contoh output:

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

Because he wanted to make a splash!

Berikut adalah contoh dengan sistem dan pesan pengguna:

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

Contoh output:

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.

Tutorial ini menunjukkan kepada Anda cara membuat dan menjalankan agen dengan Agent Framework, berdasarkan layanan Penyelesaian Obrolan Azure OpenAI.

Penting

Agent Framework mendukung berbagai jenis agen. Tutorial ini menggunakan agen berdasarkan layanan Penyelesaian Obrolan, tetapi semua jenis agen lainnya dijalankan dengan cara yang sama. Untuk informasi selengkapnya tentang jenis agen lain dan cara membangunnya, lihat panduan pengguna Agent Framework.

Prasyarat

Sebelum memulai, pastikan Anda memiliki prasyarat berikut:

Penting

Tutorial ini menggunakan Azure OpenAI untuk layanan Penyelesaian Obrolan, tetapi Anda dapat menggunakan layanan inferensi apa pun yang kompatibel dengan protokol klien obrolan Agent Framework.

Memasang paket Python

Untuk menggunakan Microsoft Agent Framework dengan Azure OpenAI, Anda perlu menginstal paket Python berikut:

pip install agent-framework --pre

Membuat agen

  • Pertama, buat klien obrolan untuk berkomunikasi dengan Azure OpenAI dan gunakan login yang sama seperti yang Anda gunakan saat mengautentikasi dengan Azure CLI di langkah Prasyarat .
  • Kemudian, buat agen, berikan instruksi dan nama untuk agen.
import asyncio
from agent_framework.azure import AzureOpenAIChatClient
from azure.identity import AzureCliCredential

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

Menjalankan agen

Untuk menjalankan agen, panggil run metode pada instans agen, berikan input pengguna. Agen akan mengembalikan objek respons, dan mengakses properti .text menyediakan hasil teks dari agen.

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

asyncio.run(main())

Menjalankan agen dengan streaming

Untuk menjalankan agen dengan streaming, panggil metode run_stream pada instans agen, sambil memberikan input pengguna. Agen akan menyampaikan daftar objek pembaruan, dan mengakses properti .text pada setiap objek pembaruan menyediakan bagian hasil teks yang terkandung dalam pembaruan tersebut.

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

Menjalankan agen dengan ChatMessage

Alih-alih string sederhana, Anda juga dapat menyediakan satu atau beberapa ChatMessage objek ke run metode dan 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())

Langkah selanjutnya