Sdílet prostřednictvím


Agenti v pracovních postupech

Tento kurz ukazuje, jak integrovat agenty AI do pracovních postupů pomocí rozhraní Agent Framework. Naučíte se vytvářet pracovní postupy, které využívají sílu specializovaných agentů umělé inteligence pro vytváření, kontrolu a další úlohy spolupráce.

Co budete vytvářet

Vytvoříte pracovní postup, který:

  • Používá službu agenta Azure Foundry k vytváření inteligentních agentů.
  • Implementuje francouzského překladového agenta, který překládá vstup do francouzštiny.
  • Implementuje agenta překladu španělštiny, který překládá francouzštinu do španělštiny.
  • Implementuje agenta překladu v angličtině, který překládá španělštinu zpět do angličtiny.
  • Připojuje agenty v sekvenčním řetězci pracovního postupu.
  • Streamuje aktualizace v reálném čase, když agenti zpracovávají požadavky.
  • Demonstruje správné vyčištění prostředků pro agenty Azure Foundry.

Pokryté koncepty

Požadavky

Krok 1: Instalace balíčků NuGet

Nejprve nainstalujte požadované balíčky pro váš projekt .NET:

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

Krok 2: Nastavení klienta Azure Foundry

Nakonfigurujte klienta Azure Foundry s proměnnými prostředí a ověřováním:

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

Krok 3: Vytvoření metody agenta factory

Implementujte pomocnou metodu pro vytvoření agentů Azure Foundry s konkrétními pokyny:

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

Krok 4: Vytvoření specializovaných agentů Azure Foundry

Pomocí pomocné metody vytvořte tři agenty překladu:

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

Krok 5: Sestavení pracovního postupu

Připojte agenty v sekvenčním pracovním postupu pomocí nástroje WorkflowBuilder:

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

Krok 6: Spuštění se streamováním

Spuštěním pracovního postupu se streamováním sledujte aktualizace ze všech agentů v reálném čase:

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

Krok 7: Vyčištění prostředků

Po použití správně vyčistíte agenty Azure Foundry:

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

Jak to funguje

  1. Nastavení klienta Azure Foundry: Používá PersistentAgentsClient pomocí přihlašovacích údajů Azure CLI k autentizaci
  2. Vytvoření agenta: Vytvoří v Azure Foundry trvalé agenty s konkrétními pokyny pro překlad.
  3. Sekvenční zpracování: Francouzský agent nejprve překládá vstup, pak španělského agenta, pak anglického agenta.
  4. Vzor tokenu turn: Agenti ukládají zprávy do mezipaměti a zpracovávají pouze v případech, kdy obdrží TurnToken
  5. Aktualizace přenosu: AgentResponseUpdateEvent Umožňuje aktualizace tokenů v reálném čase, zatímco agenti generují odpovědi.
  6. Správa prostředků: Řádné vyčištění agentů Azure Foundry pomocí rozhraní API pro správu

Klíčové koncepty

  • Služba agenta Azure Foundry: Cloudoví agenti umělé inteligence s pokročilými možnostmi odůvodnění
  • PersistentAgentsClient: Klient pro vytváření a správu agentů v Azure Foundry
  • WorkflowEvent: Výstupní události (type="output") obsahují výstupní data agenta (AgentResponseUpdate pro streamování, AgentResponse pro jiné než streamování)
  • TurnToken: Signál, který aktivuje zpracování agenta po ukládání zpráv do mezipaměti
  • Sekvenční pracovní postup: Agenti připojeni v potrubí, kde výstup proudí od jednoho k dalšímu

Dokončení implementace

Kompletní pracovní implementaci tohoto pracovního postupu agentů Azure Foundry najdete v ukázce FoundryAgent Program.cs v úložišti Agent Framework.

Co budete vytvářet

Vytvoříte pracovní postup, který:

  • Používá se k vytváření inteligentních agentů.AzureOpenAIResponsesClient
  • Implementuje agenta Writer, který vytváří obsah na základě výzev.
  • Implementuje agenta revidujících, který poskytuje zpětnou vazbu k obsahu.
  • Připojuje agenty v sekvenčním řetězci pracovního postupu.
  • Streamuje aktualizace v reálném čase, když agenti zpracovávají požadavky.

Pokryté koncepty

Požadavky

  • Python 3.10 nebo novější
  • Nainstalovaná architektura agenta: pip install agent-framework --pre
  • Odpovědi Azure OpenAI nakonfigurované se správnými proměnnými prostředí
  • Ověřování Azure CLI: az login

Krok 1: Import požadovaných závislostí

Začněte importem potřebných komponent pro pracovní postupy a agenty odpovědí Azure OpenAI:

import asyncio
import os

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

Krok 2: Vytvoření klienta odpovědí Azure OpenAI

Vytvořte jednoho sdíleného klienta, který můžete použít k vytvoření více agentů:

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

Krok 3: Vytvoření specializovaných agentů

Vytvořte dva specializované agenty pro vytváření obsahu a kontrolu:

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

Krok 4: Sestavení pracovního postupu

Připojte agenty v sekvenčním pracovním postupu pomocí tvůrce:

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

Krok 5: Spuštění se streamováním

Spusťte pracovní postup s přenosem dat, abyste mohli pozorovat aktualizace v reálném čase od obou agentů.

    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)

Krok 6: Dokončení hlavní funkce

Zahrňte vše v hlavní funkci pomocí správného asynchronního spuštění.

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

Jak to funguje

  1. Nastavení klienta: Pro ověřování se používá jeden AzureOpenAIResponsesClient s přihlašovacími údaji Azure CLI.
  2. Vytvoření agenta: Vytvoří agenty Writer a Recenzent ze stejné klientské konfigurace.
  3. Sekvenční zpracování: Agent Writer nejprve vygeneruje obsah a pak ho předá reviznímu agentovi.
  4. Streamovací aktualizace: Události výstupu (type="output") s daty AgentResponseUpdate poskytují aktualizace tokenů v reálném čase, zatímco agenti generují odpovědi.

Klíčové koncepty

  • AzureOpenAIResponsesClient: Sdílený klient používaný k vytváření agentů pracovních postupů s konzistentní konfigurací.
  • WorkflowEvent: Výstupní události (type="output") obsahují výstupní data agenta (AgentResponseUpdate pro streamování, AgentResponse pro jiné než streamování).
  • Sekvenční pracovní postup: Agenti připojeni v řetězci, kde výstup plyne z jednoho do druhého.

Dokončení implementace

Kompletní funkční implementaci najdete v tématu azure_ai_agents_streaming.py v úložišti Agent Framework.

Další kroky