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 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 OpenAI client
        var endpoint = Environment.GetEnvironmentVariable("AZURE_AI_PROJECT_ENDPOINT")
            ?? throw new InvalidOperationException("AZURE_AI_PROJECT_ENDPOINT is not set.");
        var deploymentName = Environment.GetEnvironmentVariable("AZURE_AI_MODEL_DEPLOYMENT_NAME") ?? "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, deploymentName);
        AIAgent spanishAgent = await GetTranslationAgentAsync("Spanish", persistentAgentsClient, deploymentName);
        AIAgent englishAgent = await GetTranslationAgentAsync("English", persistentAgentsClient, deploymentName);

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.RunStreamingAsync(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())
        {
            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
  • WorkflowEvent: Peristiwa output (type="output") berisi data output agen (AgentResponseUpdate untuk streaming, AgentResponse untuk non-streaming)
  • 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 AzureOpenAIResponsesClient 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

Konsep yang Tercakup

Prasyarat

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

Langkah 1: Impor Dependensi yang Diperlukan

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

import asyncio
import os

from agent_framework import AgentResponseUpdate, WorkflowBuilder
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity import AzureCliCredential

Langkah 2: Membuat Klien Respons Azure OpenAI

Buat satu klien bersama yang dapat Anda gunakan untuk membuat beberapa agen:

async def main() -> None:
    client = AzureOpenAIResponsesClient(
        project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
        deployment_name=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
        credential=AzureCliCredential(),
    )

Langkah 3: Buat Agen Khusus

Buat dua agen khusus untuk pembuatan dan peninjauan konten:

    # Create a Writer agent that generates content
    writer_agent = client.as_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_agent = client.as_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

Sambungkan agen dalam alur kerja berurutan menggunakan pembangun:

        # Build the workflow with agents as executors
        workflow = WorkflowBuilder(start_executor=writer_agent).add_edge(writer_agent, reviewer_agent).build()

Langkah 5: Jalankan dengan Streaming

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

    last_author: str | None = None

    events = workflow.run("Create a slogan for a new electric SUV that is affordable and fun to drive.", stream=True)
    async for event in events:
        if event.type == "output" and isinstance(event.data, AgentResponseUpdate):
            update = event.data
            author = update.author_name
            if author != last_author:
                if last_author is not None:
                    print()
                print(f"{author}: {update.text}", end="", flush=True)
                last_author = author
            else:
                print(update.text, end="", flush=True)

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: Menggunakan satu AzureOpenAIResponsesClient dengan kredensial Azure CLI untuk autentikasi.
  2. Pembuatan Agen: Membuat agen Penulis dan Peninjau dari konfigurasi klien yang sama.
  3. Pemrosesan Berurutan: Agen penulis menghasilkan konten terlebih dahulu, lalu meneruskannya ke agen Peninjau.
  4. Pembaruan Streaming: Peristiwa output (type="output") dengan AgentResponseUpdate data menyediakan pembaruan token real-time saat agen menghasilkan respons.

Konsep utama

  • AzureOpenAIResponsesClient: Klien bersama digunakan untuk membuat agen alur kerja dengan konfigurasi yang konsisten.
  • WorkflowEvent: Peristiwa output (type="output") berisi data output agen (AgentResponseUpdate untuk streaming, AgentResponse untuk non-streaming).
  • Alur Kerja Berurutan: Agen yang tersambung dalam alur tempat output mengalir dari satu ke alur berikutnya.

Implementasi Lengkap

Untuk implementasi kerja lengkap, lihat azure_ai_agents_streaming.py di repositori Kerangka Kerja Agen.

Langkah Selanjutnya