Bagikan melalui


Agen dalam Alur Kerja

Tutorial ini menunjukkan cara mengintegrasikan agen AI ke dalam alur kerja menggunakan Agent Framework. Anda akan belajar membuat alur kerja yang memanfaatkan kekuatan agen AI khusus untuk pembuatan konten, peninjauan, dan tugas kolaboratif lainnya.

Apa yang akan Anda Bangun

Anda akan membuat alur kerja yang:

  • Menggunakan Azure Foundry Agent Service untuk membuat agen cerdas
  • Menerapkan agen terjemahan Bahasa Prancis yang menerjemahkan input ke bahasa Prancis
  • Menerapkan agen terjemahan Spanyol yang menerjemahkan bahasa Prancis ke Spanyol
  • Menerapkan agen terjemahan bahasa Inggris yang menerjemahkan bahasa Spanyol kembali ke bahasa Inggris
  • Menyambungkan agen dalam alur kerja berurutan
  • Mengalirkan pembaruan real-time saat agen memproses permintaan
  • Menunjukkan pembersihan sumber daya yang tepat untuk agen Azure Foundry

Konsep yang Tercakup

Prasyarat

Langkah 1: Instal paket NuGet

Pertama, instal paket yang diperlukan untuk proyek .NET Anda:

dotnet add package Azure.AI.Agents.Persistent --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.AzureAI --prerelease
dotnet add package Microsoft.Agents.AI.Workflows --prerelease

Langkah 2: Siapkan Klien Azure Foundry

Konfigurasikan klien Azure Foundry dengan variabel dan autentikasi lingkungan:

using System;
using System.Threading.Tasks;
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Workflows;
using Microsoft.Extensions.AI;

public static class Program
{
    private static async Task Main()
    {
        // Set up the Azure Foundry client
        var endpoint = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_ENDPOINT") ?? throw new Exception("AZURE_FOUNDRY_PROJECT_ENDPOINT is not set.");
        var model = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_MODEL_ID") ?? "gpt-4o-mini";
        var persistentAgentsClient = new PersistentAgentsClient(endpoint, new AzureCliCredential());

Langkah 3: Buat Metode Pabrik Agen

Terapkan metode pembantu untuk membuat agen Azure Foundry dengan instruksi tertentu:

    /// <summary>
    /// Creates a translation agent for the specified target language.
    /// </summary>
    /// <param name="targetLanguage">The target language for translation</param>
    /// <param name="persistentAgentsClient">The PersistentAgentsClient to create the agent</param>
    /// <param name="model">The model to use for the agent</param>
    /// <returns>A ChatClientAgent configured for the specified language</returns>
    private static async Task<ChatClientAgent> GetTranslationAgentAsync(
        string targetLanguage,
        PersistentAgentsClient persistentAgentsClient,
        string model)
    {
        var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync(
            model: model,
            name: $"{targetLanguage} Translator",
            instructions: $"You are a translation assistant that translates the provided text to {targetLanguage}.");

        return await persistentAgentsClient.GetAIAgentAsync(agentMetadata.Value.Id);
    }
}

Langkah 4: Buat Agen Azure Foundry Khusus

Buat tiga agen terjemahan menggunakan metode pembantu:

        // Create agents
        AIAgent frenchAgent = await GetTranslationAgentAsync("French", persistentAgentsClient, model);
        AIAgent spanishAgent = await GetTranslationAgentAsync("Spanish", persistentAgentsClient, model);
        AIAgent englishAgent = await GetTranslationAgentAsync("English", persistentAgentsClient, model);

Langkah 5: Bangun Alur Kerja

Sambungkan agen dalam alur kerja berurutan menggunakan WorkflowBuilder:

        // Build the workflow by adding executors and connecting them
        var workflow = new WorkflowBuilder(frenchAgent)
            .AddEdge(frenchAgent, spanishAgent)
            .AddEdge(spanishAgent, englishAgent)
            .Build();

Langkah 6: Jalankan dengan Streaming

Jalankan alur kerja dengan streaming untuk mengamati pembaruan real-time dari semua agen:

        // Execute the workflow
        await using StreamingRun run = await InProcessExecution.StreamAsync(workflow, new ChatMessage(ChatRole.User, "Hello World!"));

        // Must send the turn token to trigger the agents.
        // The agents are wrapped as executors. When they receive messages,
        // they will cache the messages and only start processing when they receive a TurnToken.
        await run.TrySendMessageAsync(new TurnToken(emitEvents: true));
        await foreach (WorkflowEvent evt in run.WatchStreamAsync().ConfigureAwait(false))
        {
            if (evt is AgentResponseUpdateEvent executorComplete)
            {
                Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
            }
        }

Langkah 7: Pembersihan Sumber Daya

Bersihkan agen Azure Foundry dengan benar setelah digunakan:

        // Cleanup the agents created for the sample.
        await persistentAgentsClient.Administration.DeleteAgentAsync(frenchAgent.Id);
        await persistentAgentsClient.Administration.DeleteAgentAsync(spanishAgent.Id);
        await persistentAgentsClient.Administration.DeleteAgentAsync(englishAgent.Id);
    }

Cara Kerjanya

  1. Penyiapan Klien Azure Foundry: Menggunakan PersistentAgentsClient dengan kredensial Azure CLI untuk autentikasi
  2. Pembuatan Agen: Membuat agen persisten di Azure Foundry dengan instruksi khusus untuk terjemahan
  3. Pemrosesan Berurutan: Agen Prancis menerjemahkan input terlebih dahulu, lalu agen Spanyol, lalu agen Bahasa Inggris
  4. Mengubah Pola Token: Agen menyimpan pesan dan hanya memproses saat menerima pesan TurnToken
  5. Pembaruan Streaming: AgentResponseUpdateEvent menyediakan pembaruan token real-time saat agen menghasilkan tanggapan
  6. Manajemen Sumber Daya: Pembersihan agen Azure Foundry yang tepat menggunakan API Administrasi

Konsep Utama

  • Azure Foundry Agent Service: Agen AI berbasis cloud dengan kemampuan penalaran tingkat lanjut
  • PersistentAgentsClient: Klien untuk membuat dan mengelola agen di Azure Foundry
  • AgentResponseUpdateEvent: Pembaruan streaming real time selama eksekusi agen
  • TurnToken: Sinyal yang memicu pemrosesan agen sistem setelah cache pesan
  • Alur Kerja Berurutan: Agen yang tersambung dalam alur tempat output mengalir dari satu ke alur berikutnya

Implementasi Lengkap

Untuk implementasi kerja lengkap alur kerja agen Azure Foundry ini, lihat sampel foundryAgent Program.cs di repositori Kerangka Kerja Agen.

Apa yang akan Anda Bangun

Anda akan membuat alur kerja yang:

  • Menggunakan Azure AI Agent Service untuk membuat agen cerdas
  • Menerapkan agen Writer yang membuat konten berdasarkan perintah
  • Menerapkan agen Peninjau yang memberikan umpan balik tentang konten
  • Menyambungkan agen dalam alur kerja berurutan
  • Mengalirkan pembaruan real-time saat agen memproses permintaan
  • Menunjukkan manajemen konteks asinkron yang tepat untuk klien Azure AI

Konsep yang Tercakup

Prasyarat

  • Python 3.10 atau yang lebih baru
  • Kerangka Kerja Agen terinstal: pip install agent-framework-azure-ai --pre
  • Azure AI Agent Service dikonfigurasi dengan variabel lingkungan yang tepat
  • Autentikasi Azure CLI: az login

Langkah 1: Impor Dependensi yang Diperlukan

Mulailah dengan mengimpor komponen yang diperlukan untuk agen dan alur kerja Azure AI:

import asyncio
from collections.abc import Awaitable, Callable
from contextlib import AsyncExitStack
from typing import Any

from agent_framework import AgentResponseUpdateEvent, WorkflowBuilder, WorkflowOutputEvent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import AzureCliCredential

Langkah 2: Membuat Azure AI Agent Factory

Buat fungsi pembantu untuk mengelola pembuatan agen Azure AI dengan penanganan konteks asinkron yang tepat:

async def create_azure_ai_agent() -> tuple[Callable[..., Awaitable[Any]], Callable[[], Awaitable[None]]]:
    """Helper method to create an Azure AI agent factory and a close function.

    This makes sure the async context managers are properly handled.
    """
    stack = AsyncExitStack()
    cred = await stack.enter_async_context(AzureCliCredential())

    client = await stack.enter_async_context(AzureAIAgentClient(async_credential=cred))

    async def agent(**kwargs: Any) -> Any:
        return await stack.enter_async_context(client.as_agent(**kwargs))

    async def close() -> None:
        await stack.aclose()

    return agent, close

Langkah 3: Membuat Agen Azure AI Khusus

Buat dua agen khusus untuk pembuatan dan peninjauan konten:

async def main() -> None:
    agent, close = await create_azure_ai_agent()
    try:
        # Create a Writer agent that generates content
        writer = await agent(
            name="Writer",
            instructions=(
                "You are an excellent content writer. You create new content and edit contents based on the feedback."
            ),
        )

        # Create a Reviewer agent that provides feedback
        reviewer = await agent(
            name="Reviewer",
            instructions=(
                "You are an excellent content reviewer. "
                "Provide actionable feedback to the writer about the provided content. "
                "Provide the feedback in the most concise manner possible."
            ),
        )

Langkah 4: Bangun Alur Kerja

Menghubungkan agen dalam alur kerja berurutan menggunakan pembangun berorientasi objek.

        # Build the workflow with agents as executors
        workflow = WorkflowBuilder().set_start_executor(writer).add_edge(writer, reviewer).build()

Langkah 5: Jalankan dengan Streaming

Jalankan alur kerja dengan streaming untuk mengamati pembaruan real time dari kedua agen:

        last_executor_id: str | None = None

        events = workflow.run_stream("Create a slogan for a new electric SUV that is affordable and fun to drive.")
        async for event in events:
            if isinstance(event, AgentResponseUpdateEvent):
                # Handle streaming updates from agents
                eid = event.executor_id
                if eid != last_executor_id:
                    if last_executor_id is not None:
                        print()
                    print(f"{eid}:", end=" ", flush=True)
                    last_executor_id = eid
                print(event.data, end="", flush=True)
            elif isinstance(event, WorkflowOutputEvent):
                print("\n===== Final output =====")
                print(event.data)
    finally:
        await close()

Langkah 6: Selesaikan Fungsi Utama

Bungkus semuanya dalam fungsi utama dengan eksekusi asinkron yang tepat:

if __name__ == "__main__":
    asyncio.run(main())

Cara Kerjanya

  1. Penyiapan Klien Azure AI: Menggunakan AzureAIAgentClient dengan kredensial Azure CLI untuk autentikasi
  2. Pola Pabrik Agen: Mengembangkan fungsi pabrik yang mengatur siklus hidup konteks asinkron untuk berbagai agen
  3. Pemrosesan Berurutan: Agen penulis menghasilkan konten terlebih dahulu, lalu meneruskannya ke agen Peninjau
  4. Pembaruan Streaming: AgentResponseUpdateEvent menyediakan pembaruan token real-time saat agen menghasilkan tanggapan
  5. Manajemen Konteks: Pembersihan sumber daya Azure AI yang tepat menggunakan AsyncExitStack

Konsep Utama

  • Azure AI Agent Service: Agen AI berbasis cloud dengan kemampuan penalaran tingkat lanjut
  • AgentResponseUpdateEvent: Pembaruan streaming real time selama eksekusi agen
  • AsyncExitStack: Manajemen konteks asinkron yang tepat untuk beberapa sumber daya
  • Pola Pabrik Agen: Pembuatan agen yang dapat digunakan kembali dengan konfigurasi klien yang dibagikan bersama
  • Alur Kerja Berurutan: Agen yang tersambung dalam alur tempat output mengalir dari satu ke alur berikutnya

Implementasi Lengkap

Untuk implementasi kerja lengkap alur kerja agen Azure AI ini, lihat sampel azure_ai_agents_streaming.py di repositori Kerangka Kerja Agen.

Langkah Selanjutnya