İş 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.Projects --prerelease
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.Foundry --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 Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Foundry;
using Microsoft.Agents.AI.Workflows;
using Microsoft.Extensions.AI;

public static class Program
{
    private static async Task Main()
    {
        // Set up the Azure AI Project 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 aiProjectClient = new AIProjectClient(new Uri(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="aiProjectClient">The AIProjectClient 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,
        AIProjectClient aiProjectClient,
        string model)
    {
        string agentName = $"{targetLanguage} Translator";
        var version = await aiProjectClient.AgentAdministrationClient.CreateAgentVersionAsync(
            agentName,
            new ProjectsAgentVersionCreationOptions(
                new DeclarativeAgentDefinition(model)
                {
                    Instructions = $"You are a translation assistant that translates the provided text to {targetLanguage}."
                }));

        return aiProjectClient.AsAIAgent(version);
    }
}

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", aiProjectClient, deploymentName);
        AIAgent spanishAgent = await GetTranslationAgentAsync("Spanish", aiProjectClient, deploymentName);
        AIAgent englishAgent = await GetTranslationAgentAsync("English", aiProjectClient, deploymentName);

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

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 aiProjectClient.AgentAdministrationClient.DeleteAgentAsync(frenchAgent.Id);
        await aiProjectClient.AgentAdministrationClient.DeleteAgentAsync(spanishAgent.Id);
        await aiProjectClient.AgentAdministrationClient.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 AIProjectClient
  2. Aracı Oluşturma: Azure Foundry'de belirli çeviri yönergeleriyle sürüm oluşturulmuş 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: AgentResponseUpdateEvent 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ı
  • AIProjectClient: Azure Foundry'de aracı oluşturma ve yönetme istemcisi
  • WorkflowEvent: Çıkış olayları (type="output") aracı çıkış verilerini içerir (AgentResponseUpdate akış için, AgentResponse akış dışı veriler için)
  • 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:

  • FoundryChatClient kullanarak akıllı aracılar oluşturur
  • İ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

Ele Alınan Kavramlar

Önkoşullar

  • Python 3.10 veya üzeri
  • Agent Framework yüklendi: pip install agent-framework
  • Uygun ortam değişkenleriyle yapılandırılmış Azure OpenAI Yanıtları
  • Azure CLI kimlik doğrulaması: az login

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

İş akışları ve Azure OpenAI Yanıtları aracıları için gerekli bileşenleri içeri aktararak başlayın:

import asyncio
import os

from agent_framework import AgentResponseUpdate, WorkflowBuilder
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential

2. Adım: Azure OpenAI Yanıt İstemcisi Oluşturma

Birden çok aracı oluşturmak için kullanabileceğiniz bir paylaşılan istemci oluşturun:

async def main() -> None:
    client = FoundryChatClient(
        project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
        model=os.environ["FOUNDRY_MODEL"],
        credential=AzureCliCredential(),
    )

3. Adım: Özel Aracılar Oluşturma

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

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

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

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

        # Build the workflow with agents as executors
        workflow = WorkflowBuilder(start_executor=writer_agent).add_edge(writer_agent, reviewer_agent).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_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)

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. İstemci Kurulumu: Kimlik doğrulaması için bir FoundryChatClient Azure CLI kimlik bilgilerini kullanır.
  2. Ajan Oluşturma: Aynı istemci yapılandırmasından Yazar ve Gözden Geçiren ajanları oluşturur.
  3. Sıralı İşleme: Yazar aracısı önce içeriği oluşturur, ardından Gözden Geçiren aracısına aktarır.
  4. Akış Güncelleştirmeleri: Veri içeren type="output" çıkış olayları (AgentResponseUpdate), aracılar yanıt oluştururken gerçek zamanlı belirteç güncelleştirmeleri sağlar.

Önemli Kavramlar

  • FoundryChatClient: Tutarlı yapılandırmaya sahip iş akışı aracıları oluşturmak için kullanılan paylaşılan istemci.
  • WorkflowEvent: Çıkış olayları (type="output") aracı çıkış verilerini içerir (AgentResponseUpdate akış için, AgentResponse akış dışı veriler için).
  • Sıralı İş Akışı: Çıkışların birinden diğerine aktığı bir işlem hattına bağlı aracılar.

Uygulamayı Tamamla

Tam çalışma uygulaması için bkz. Agent Framework deposundaki azure_ai_agents_streaming.py .

Sonraki Adımlar