Aracılığıyla paylaş


İş Akışlarında Aracılar

Bu öğreticide, Agent Framework kullanarak yapay zeka aracılarını iş akışlarıyla tümleştirme gösterilmektedir. İçerik oluşturma, gözden geçirme ve diğer işbirliğine dayalı görevler için özelleştirilmiş yapay zeka aracılarının gücünden yararlanan iş akışları oluşturmayı öğreneceksiniz.

Neler Oluşturacaksınız

Şu şekilde bir iş akışı oluşturacaksınız:

  • Akıllı aracılar oluşturmak için Azure Foundry Agent Hizmetini kullanır
  • Girişi Fransızcaya çeviren bir Fransızca çeviri aracısı uygular
  • Fransızcayı İspanyolcaya çeviren bir İspanyolca çeviri aracısı uygular
  • İspanyolcayı İngilizceye çeviren bir İngilizce çeviri aracısı uygular
  • Aracıları sıralı iş akışı işlem hattına bağlar
  • Aracılar istekleri işlerken gerçek zamanlı güncelleştirmelerin akışını sağlar
  • Azure Foundry aracıları için doğru kaynak temizlemeyi gösterir

Ele Alınan Kavramlar

Önkoşullar

1. Adım: NuGet paketlerini yükleme

İlk olarak, .NET projeniz için gerekli paketleri yükleyin:

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. Adım: Azure Foundry İstemcisi'nin ayarlanması

Azure Foundry istemcisini ortam değişkenleri ve kimlik doğrulaması ile yapılandırın:

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. Adım: Agent Factory Yöntemi Oluşturma

Belirli yönergelerle Azure Foundry aracıları oluşturmak için bir yardımcı yöntemi uygulayın:

    /// <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. Adım: Özelleştirilmiş Azure Döküm Aracıları Oluşturma

Yardımcı yöntemini kullanarak üç çeviri aracısı oluşturun:

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

5. Adım: İş Akışını Oluşturma

WorkflowBuilder'ı kullanarak aracıları sıralı bir iş akışına bağlayın:

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

6. Adım: Akışla Yürütme

Tüm aracılardan gerçek zamanlı güncelleştirmeleri gözlemlemek için akışla iş akışını çalıştırın:

        // 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. Adım: Kaynak Temizleme

Kullanımdan sonra Azure Foundry aracılarını düzgün bir şekilde temizleyin:

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

Nasıl Çalışır?

  1. Azure Foundry İstemci Kurulumu: Kimlik doğrulaması için Azure CLI kimlik bilgileriyle birlikte kullanılır PersistentAgentsClient
  2. Aracı Oluşturma: Azure Foundry'de belirli çeviri yönergeleriyle kalıcı aracılar oluşturur
  3. Sıralı İşleme: Fransızca aracısı önce girişi, ardından İspanyolca aracıyı, sonra İngilizce aracıyı çevirir
  4. Belirteç Desenini Çevir: Aracılar iletileri önbelleğe alır ve yalnızca bir ileti aldığında işler TurnToken
  5. Akış Güncelleştirmeleri: AgentRunUpdateEvent Aracılar yanıt oluştururken gerçek zamanlı belirteç güncelleştirmeleri sağlar
  6. Kaynak Yönetimi: Yönetim API'sini kullanarak Azure Foundry aracılarının düzgün temizlenmesi

Önemli Kavramlar

  • Azure Foundry Agent Hizmeti: Gelişmiş mantık özelliklerine sahip bulut tabanlı yapay zeka aracıları
  • PersistentAgentsClient: Azure Foundry'de aracı oluşturma ve yönetme istemcisi
  • AgentRunUpdateEvent: Aracı yürütme sırasında gerçek zamanlı akış güncelleştirmeleri
  • TurnToken: İleti önbelleğe aldıktan sonra aracı işlemeyi tetikleyen sinyal
  • Sıralı İş Akışı: Çıkışların bir işlem hattından diğerine aktığı bir işlem hattına bağlı aracılar

Uygulamayı Tamamla

Bu Azure Foundry aracıları iş akışının tam çalışma uygulaması için Agent Framework deposundaki FoundryAgent Program.cs örneğine bakın.

Neler Oluşturacaksınız

Şu şekilde bir iş akışı oluşturacaksınız:

  • Akıllı aracılar oluşturmak için Azure AI Agent Hizmetini kullanır
  • İstemlere göre içerik oluşturan bir Yazıcı etkeni oluşturur
  • İçerik hakkında geri bildirim sağlayan bir Gözden Geçiren aracısı uygular
  • Aracıları sıralı iş akışı işlem hattına bağlar
  • Aracılar istekleri işlerken gerçek zamanlı güncelleştirmelerin akışını sağlar
  • Azure AI istemcileri için uygun zaman uyumsuz bağlam yönetimini gösterir

Ele Alınan Kavramlar

Önkoşullar

  • Python 3.10 veya üzeri
  • Agent Framework yüklendi: pip install agent-framework-azure-ai --pre
  • Uygun ortam değişkenleriyle yapılandırılmış Azure AI Aracısı Hizmeti
  • Azure CLI kimlik doğrulaması: az login

1. Adım: Gerekli Bağımlılıkları İçeri Aktarma

Başlangıç olarak Azure AI aracıları ve iş akışları için gerekli bileşenleri içeri aktarın:

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. Adım: Azure AI Agent Factory oluşturma

Azure AI aracısı oluşturmayı asenkron bağlam işleme ile yönetmek için bir yardımcı işlev oluşturun.

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. Adım: Özelleştirilmiş Azure AI Aracıları Oluşturma

İçerik oluşturmak ve gözden geçirmek için iki özel aracı oluşturun:

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. Adım: İş Akışını Oluşturma

Akıcı oluşturucuyu kullanarak aracıları sıralı bir iş akışına bağlayın:

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

5. Adım: Akışla Yürütme

Her iki aracıdan da gerçek zamanlı güncelleştirmeleri gözlemlemek için akışla iş akışını çalıştırın:

        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. Adım: Ana İşlevi Tamamlama

Ana işlevdeki her şeyi uygun zaman uyumsuz yürütmeyle sarmala:

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

Nasıl Çalışır?

  1. Azure AI İstemciSi Kurulumu: Kimlik doğrulaması için Azure CLI kimlik bilgileriyle birlikte kullanılır AzureAIAgentClient
  2. Agent Factory Deseni: Birden çok aracı için zaman uyumsuz bağlam yaşam döngüsünü yöneten bir fabrika işlevi oluşturur
  3. Sıralı İşleme: Yazıcı aracısı önce içerik oluşturur, ardından gözden geçiren aracısına geçirir
  4. Akış Güncelleştirmeleri: AgentRunUpdateEvent Aracılar yanıt oluştururken gerçek zamanlı belirteç güncelleştirmeleri sağlar
  5. Bağlam Yönetimi: Azure AI kaynaklarını AsyncExitStack ile düzgün şekilde temizleme

Önemli Kavramlar

  • Azure AI Aracısı Hizmeti: Gelişmiş akıl yürütme özelliklerine sahip bulut tabanlı yapay zeka aracıları
  • AgentRunUpdateEvent: Aracı yürütme sırasında gerçek zamanlı akış güncelleştirmeleri
  • AsyncExitStack: Birden çok kaynak için doğru async çevre yönetimi
  • Aracı Fabrikası Deseni: Paylaşılan istemci yapılandırmasıyla yeniden kullanılabilir aracı oluşturma
  • Sıralı İş Akışı: Çıkışların bir işlem hattından diğerine aktığı bir işlem hattına bağlı aracılar

Uygulamayı Tamamla

Bu Azure AI aracıları iş akışının tam çalışma uygulaması için Agent Framework deposundaki azure_ai_agents_streaming.py örneğine bakın.

Sonraki Adımlar