Megosztás:


Ügynökök a munkafolyamatokban

Ez az oktatóanyag bemutatja, hogyan integrálhatók az AI-ügynökök munkafolyamatokba az Agent Framework használatával. Megtudhatja, hogyan hozhat létre olyan munkafolyamatokat, amelyek a speciális AI-ügynökök előnyeit használják ki tartalomlétrehozáshoz, áttekintéshez és egyéb együttműködési feladatokhoz.

Mit fog felépíteni?

Létre fog hozni egy munkafolyamatot, amely:

  • Intelligens ügynökök létrehozása az Azure Foundry Agent Service használatával
  • Francia fordítóügynököt implementál, amely a bemenetet francia nyelvre fordítja le
  • Implementál egy spanyol fordítóügynököt, amely franciát fordít spanyolra
  • Implementál egy angol fordítóügynököt, amely a spanyolt angolra fordítja vissza
  • Ügynökök csatlakoztatása szekvenciális munkafolyamatban
  • Valós idejű frissítések streamelése, miközben az ügynökök kérdéseket dolgoznak fel.
  • Az Azure Foundry-ügynökök megfelelő erőforrás-tisztításának bemutatása

A tárgyalt fogalmak

Előfeltételek

1. lépés: NuGet-csomagok telepítése

Először telepítse a szükséges csomagokat a .NET-projekthez:

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

2. lépés: Az Azure Foundry-ügyfél beállítása

Az Azure Foundry-ügyfél konfigurálása környezeti változókkal és hitelesítéssel:

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

3. lépés: Az Agent Factory metódus létrehozása

Implementáljon egy segédmetódust az Azure Foundry-ügynökök létrehozásához a következő útmutatással:

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

4. lépés: Specializált Azure Foundry-ügynökök létrehozása

Hozzon létre három fordítóügynököt a segédmetódus használatával:

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

5. lépés: A munkafolyamat létrehozása

Csatlakoztassa az ügynököket egy szekvenciális munkafolyamatban a WorkflowBuilder használatával:

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

6. lépés: Végrehajtás streameléssel

Futtassa a munkafolyamatot streameléssel az összes ügynök valós idejű frissítéseinek megfigyeléséhez:

        // 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 AgentRunUpdateEvent executorComplete)
            {
                Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
            }
        }

7. lépés: Erőforrás-karbantartás

Az Azure Foundry-ügynökök megfelelő tisztítása használat után:

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

Hogyan működik?

  1. Azure Foundry-ügyfél beállítása: Azure CLI-hitelesítő adatokkal történő hitelesítés PersistentAgentsClient
  2. Ügynöklétrehozás: Állandó ügynököket hoz létre az Azure Foundryben a fordításra vonatkozó konkrét utasítások segítségével
  3. Szekvenciális feldolgozás: a francia ügynök először a bemenetet, majd a spanyol ügynököt, majd az angol ügynököt fordítja le
  4. Váltás token minta: Az egységek tárolják az üzeneteket, és csak akkor dolgozzák fel, ha kapnak egy TurnToken
  5. Streamelési frissítések: AgentRunUpdateEvent valós idejű token frissítéseket biztosít az ügynökök válaszának generálásakor
  6. Erőforrás-kezelés: Az Azure Foundry-ügynökök megfelelő tisztítása a Felügyeleti API használatával

Alapfogalmak

  • Azure Foundry Agent Service: Felhőalapú AI-ügynökök speciális érvelési képességekkel
  • PersistentAgentsClient: Ügyfél ügynökök létrehozására és kezelésére az Azure Foundryben
  • AgentRunUpdateEvent: Valós idejű streamelési frissítések az ügynök végrehajtása során
  • TurnToken: Az ügynökfeldolgozást az üzenet gyorsítótárazása után aktiváló jel
  • Szekvenciális munkafolyamat: Olyan folyamathoz csatlakoztatott ügynökök, ahol a kimeneti folyamatok egyikről a másikra haladnak

Implementáció befejezése

Az Azure Foundry-ügynökök munkafolyamatának teljes körű megvalósításáért tekintse meg a FoundryAgent Program.cs mintát az Agent Framework-adattárban.

Mit fog felépíteni?

Létre fog hozni egy munkafolyamatot, amely:

  • Intelligens ügynökök létrehozása az Azure AI Agent Service használatával
  • Olyan Íróügynököt implementál, amely kérések alapján hoz létre tartalmat
  • Egy véleményező ügynököt implementál, amely visszajelzést ad a tartalomról
  • Ügynökök csatlakoztatása szekvenciális munkafolyamatban
  • Valós idejű frissítések streamelése, miközben az ügynökök kérdéseket dolgoznak fel.
  • Bemutatja az Azure AI-ügyfelek megfelelő aszinkron környezetkezelését

A tárgyalt fogalmak

Előfeltételek

  • Python 3.10 vagy újabb
  • Telepített Ügynök-keretrendszer: pip install agent-framework-azure-ai --pre
  • Megfelelő környezeti változókkal konfigurált Azure AI Agent Service
  • Azure CLI-hitelesítés: az login

1. lépés: Kötelező függőségek importálása

Először importálja az Azure AI-ügynökökhöz és munkafolyamatokhoz szükséges összetevőket:

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

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

2. lépés: Az Azure AI Agent Factory létrehozása

Hozzon létre egy segédfüggvényt az Azure AI-ügynökök létrehozásának megfelelő aszinkron környezetkezeléssel történő kezeléséhez:

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.create_agent(**kwargs))

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

    return agent, close

3. lépés: Speciális Azure AI-ügynökök létrehozása

Hozzon létre két speciális ügynököt a tartalom létrehozásához és áttekintéséhez:

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."
            ),
        )

4. lépés: A munkafolyamat létrehozása

Csatlakoztassa az ügynököket szekvenciális munkafolyamatban a fluent builder használatával:

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

5. lépés: Végrehajtás streameléssel

Futtassa a munkafolyamatot streameléssel a két ügynök valós idejű frissítéseinek megfigyeléséhez:

        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, AgentRunUpdateEvent):
                # 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()

6. lépés: Fő függvény befejezése

A fő függvény minden elemének körbefuttatása megfelelő aszinkron végrehajtással:

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

Hogyan működik?

  1. Azure AI-ügyfél beállítása: Azure CLI-hitelesítő adatokkal történő hitelesítés AzureAIAgentClient
  2. Ügynök-előállító minta: Létrehoz egy gyárfüggvényt, amely több ügynök aszinkron környezeti életciklusát kezeli
  3. Szekvenciális feldolgozás: Az íróügynök először létrehozza a tartalmat, majd átadja azt a Véleményező ügynöknek
  4. Streamelési frissítések: AgentRunUpdateEvent valós idejű token frissítéseket biztosít az ügynökök válaszának generálásakor
  5. Környezetkezelés: Az Azure AI erőforrások megfelelő tisztítása a AsyncExitStack használatával.

Alapfogalmak

  • Azure AI Agent Service: Felhőalapú AI-ügynökök speciális érvelési képességekkel
  • AgentRunUpdateEvent: Valós idejű streamelési frissítések az ügynök végrehajtása során
  • AsyncExitStack: Megfelelő aszinkron környezetkezelés több erőforráshoz
  • Ügynök-előállító minta: Újrahasználható ügynök létrehozása megosztott ügyfélkonfigurációval
  • Szekvenciális munkafolyamat: Olyan folyamathoz csatlakoztatott ügynökök, ahol a kimeneti folyamatok egyikről a másikra haladnak

Implementáció befejezése

Az Azure AI-ügynökök munkafolyamatának teljes körű megvalósításáért tekintse meg az Ügynök keretrendszer adattárában található azure_ai_agents_streaming.py mintát.

Következő lépések