Aracılığıyla paylaş


Basit Sıralı İş Akışı Oluşturma

Bu öğreticide, Agent Framework İş Akışları kullanılarak basit bir sıralı iş akışının nasıl oluşturulacağı gösterilmektedir.

Sıralı iş akışları, karmaşık yapay zeka aracı sistemleri oluşturmanın temelini oluşturur. Bu öğreticide, her adımın verileri işlediği ve bir sonraki adıma geçirdiği basit bir iki adımlı iş akışının nasıl oluşturulacağı gösterilmektedir.

Genel Bakış

Bu öğreticide iki yürütücü ile bir iş akışı oluşturacaksınız:

  1. Büyük Harf Yürütücüsü - Giriş metnini büyük harfe dönüştürür
  2. Ters Metin Yürütücüsü - Metni ters çevirir ve nihai sonucu verir

İş akışı aşağıdaki gibi temel kavramları gösterir:

  • Bir işleyici ile özel yürütücü oluşturma
  • İşlevden özel yürütücü oluşturma
  • WorkflowBuilder kullanarak yürütücüleri kenarlarla bağlamak
  • Sıralı adımlar aracılığıyla verileri işleme
  • Olaylar aracılığıyla iş akışı yürütmeyi gözlemleme

Ele Alınan Kavramlar

Önkoşullar

Adım Adım Uygulama

Aşağıdaki bölümlerde sıralı iş akışının adım adım nasıl derlenmiş olduğu gösterilmektedir.

1. Adım: NuGet paketlerini yükleme

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

dotnet add package Microsoft.Agents.AI.Workflows --prerelease

2. Adım: Büyük Harf Yürütücüsü Tanımlama

Metni büyük harfe dönüştüren bir yürütücü tanımlayın:

using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Agents.AI.Workflows;

/// <summary>
/// First executor: converts input text to uppercase.
/// </summary>
Func<string, string> uppercaseFunc = s => s.ToUpperInvariant();
var uppercase = uppercaseFunc.BindExecutor("UppercaseExecutor");

Önemli Noktalar:

  • Bir dize alıp büyük harfli sürümünü döndüren bir fonksiyon oluşturun.
  • İşlevden yürütücü oluşturmak için kullanın BindExecutor()

3. Adım: Ters Metin Yürütücüsü Tanımlama

Metni tersine çeviren bir yürütücü tanımlayın:

/// <summary>
/// Second executor: reverses the input text and completes the workflow.
/// </summary>
internal sealed class ReverseTextExecutor() : Executor<string, string>("ReverseTextExecutor")
{
    public override ValueTask<string> HandleAsync(string input, IWorkflowContext context, CancellationToken cancellationToken = default)
    {
        // Reverse the input text
        return ValueTask.FromResult(new string(input.Reverse().ToArray()));
    }
}

ReverseTextExecutor reverse = new();

Önemli Noktalar:

  • öğesinden devralan bir sınıf oluşturma Executor<TInput, TOutput>
  • Girişi işlemek ve çıkışı döndürmek için uygulama HandleAsync()

4. Adım: İş Akışını Oluşturma ve Bağlama

Yürütücüleri bağlamak için WorkflowBuilder kullanarak bağlayın.

// Build the workflow by connecting executors sequentially
WorkflowBuilder builder = new(uppercase);
builder.AddEdge(uppercase, reverse).WithOutputFrom(reverse);
var workflow = builder.Build();

Önemli Noktalar:

  • WorkflowBuilder oluşturucu başlangıç yürütücüyü alır
  • AddEdge() büyük harften tersine yönlendirilmiş bir bağlantı oluşturur
  • WithOutputFrom() hangi yürütücülerin iş akışı çıkışları ürettiğini belirtir
  • Build() sabit iş akışını oluşturur

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

İş akışını çalıştırın ve sonuçları gözlemleyin:

// Execute the workflow with input data
await using Run run = await InProcessExecution.RunAsync(workflow, "Hello, World!");
foreach (WorkflowEvent evt in run.NewEvents)
{
    switch (evt)
    {
        case ExecutorCompletedEvent executorComplete:
            Console.WriteLine($"{executorComplete.ExecutorId}: {executorComplete.Data}");
            break;
    }
}

6. Adım: İş Akışı Çıkışını Anlama

İş akışını çalıştırdığınızda aşağıdaki gibi bir çıkış görürsünüz:

UppercaseExecutor: HELLO, WORLD!
ReverseTextExecutor: !DLROW ,OLLEH

"Hello, World!" girişi önce büyük harfe ("HELLO, WORLD!") dönüştürülür, ardından ters çevrilir ("! DLROW,OLLEH").

Temel Kavramlar Açıklandı

Yürütücü Arabirimi

İşlevlerden yürütücüler:

  • Bir işlevden yürütücü oluşturmak için BindExecutor() kullanın

Yürütücüler Executor<TInput, TOutput> uygular.

  • TInput: Bu yürütücü tarafından kabul edilen veri türü
  • TOutput: Bu yürütücü tarafından oluşturulan veri türü
  • HandleAsync: Girişi işleyen ve çıkışı döndüren yöntem

.NET İş Akışı Oluşturucu Düzeni

, WorkflowBuilder iş akışları oluşturmak için akıcı bir API sağlar:

  • Oluşturucu: Başlangıç yürütücüsünü alır
  • AddEdge(): Yürütücüler arasında yönlendirilmiş bağlantılar oluşturur
  • WithOutputFrom(): Hangi yürütücülerin iş akışı çıkışları ürettiğini belirtir
  • Build(): Son sabit iş akışını oluşturur

.NET Olay Türleri

Yürütme sırasında şu olay türlerini gözlemleyebilirsiniz:

  • ExecutorCompletedEvent - Yürütücü işlemeyi bitirdiğinde

Tam Tamamlanmış .NET Örneği

Tam, çalışmaya hazır uygulama için Agent Framework deposundaki 01_ExecutorsAndEdges örneğine bakın.

Bu örnek şunları içerir:

  • Tüm using deyimleri ve sınıf yapısı ile tam kod uygulaması
  • İş akışı kavramlarını açıklayan ek açıklamalar
  • Proje kurulumunu ve yapılandırmasını tamamlama

Genel Bakış

Bu öğreticide iki yürütücü ile bir iş akışı oluşturacaksınız:

  1. Büyük Harf Yürütücüsü - Giriş metnini büyük harfe dönüştürür
  2. Ters Metin Yürütücüsü - Metni ters çevirir ve nihai sonucu verir

İş akışı aşağıdaki gibi temel kavramları gösterir:

  • İş akışı düğümleri oluşturmak için @executor dekoratörünü kullanma
  • Yürütücüleri WorkflowBuilder ile bağlamak.
  • Adımlar arasında ctx.send_message() ile veri aktarımı
  • ctx.yield_output() ile son çıktıyı verme
  • Gerçek zamanlı gözlemlenebilirlik amacıyla olay akışı.

Ele Alınan Kavramlar

Önkoşullar

  • Python 3.10 veya üzeri
  • Agent Framework Core Python paketi yüklendi: pip install agent-framework-core --pre
  • Bu temel örnek için dış yapay zeka hizmeti gerekmez

Adım Adım Uygulama

Aşağıdaki bölümlerde sıralı iş akışının adım adım nasıl derlenmiş olduğu gösterilmektedir.

1. Adım: Gerekli Modülleri İçeri Aktarma

İlk olarak, Agent Framework'ten gerekli modülleri içeri aktarın:

import asyncio
from typing_extensions import Never
from agent_framework import WorkflowBuilder, WorkflowContext, WorkflowOutputEvent, executor

2. Adım: İlk Yürütücü oluşturma

İşleyici yöntemine sahip bir yürütücü uygulayarak metni büyük harfe dönüştüren bir yürütücü oluşturun:

class UpperCase(Executor):
    def __init__(self, id: str):
        super().__init__(id=id)

    @handler
    async def to_upper_case(self, text: str, ctx: WorkflowContext[str]) -> None:
        """Convert the input to uppercase and forward it to the next node.

        Note: The WorkflowContext is parameterized with the type this handler will
        emit. Here WorkflowContext[str] means downstream nodes should expect str.
        """
        result = text.upper()

        # Send the result to the next executor in the workflow.
        await ctx.send_message(result)

Önemli Noktalar:

  • Dekoratör @executor bu işlevi iş akışı düğümü olarak kaydeder
  • WorkflowContext[str] bu yürütücü, ilk tür parametresini belirterek bir dizeyi aşağıya doğru gönderir.
  • ctx.send_message() verileri bir sonraki adıma geçirir

3. Adım: İkinci Yürütücü oluşturma

Metni ters çeviren ve @executor ile dekore edilmiş bir yöntemden son çıkışı veren bir yürütücü oluşturun.

@executor(id="reverse_text_executor")
async def reverse_text(text: str, ctx: WorkflowContext[Never, str]) -> None:
    """Reverse the input and yield the workflow output."""
    result = text[::-1]

    # Yield the final output for this workflow run
    await ctx.yield_output(result)

Önemli Noktalar:

  • WorkflowContext[Never, str] bunun, ilk tür parametresi olarak belirterek Never herhangi bir ileti göndermeyen ancak ikinci parametre olarak belirterek str iş akışı çıkışları üreten bir terminal yürütücüsü olduğunu gösterir
  • ctx.yield_output() son iş akışı sonucunu sağlar
  • İş akışı boşta kaldığında tamamlanır

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

Yürütücüleri bağlamak için WorkflowBuilder kullanarak bağlayın.

upper_case = UpperCase(id="upper_case_executor")

workflow = (
    WorkflowBuilder()
    .add_edge(upper_case, reverse_text)
    .set_start_executor(upper_case)
    .build()
)

Önemli Noktalar:

  • add_edge() yürütücüler arasında yönlendirilmiş bağlantılar oluşturur
  • set_start_executor() giriş noktasını tanımlar
  • build() iş akışını son haline ayarlar

5. Adım: Akışla İş Akışını Çalıştırma

İş akışını yürütür ve olayları gerçek zamanlı olarak gözlemler:

async def main():
    # Run the workflow and stream events
    async for event in workflow.run_stream("hello world"):
        print(f"Event: {event}")
        if isinstance(event, WorkflowOutputEvent):
            print(f"Workflow completed with result: {event.data}")

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

6. Adım: Çıkışı Anlama

İş akışını çalıştırdığınızda aşağıdaki gibi olayları görürsünüz:

Event: ExecutorInvokedEvent(executor_id=upper_case_executor)
Event: ExecutorCompletedEvent(executor_id=upper_case_executor)
Event: ExecutorInvokedEvent(executor_id=reverse_text_executor)
Event: ExecutorCompletedEvent(executor_id=reverse_text_executor)
Event: WorkflowOutputEvent(data='DLROW OLLEH', source_executor_id=reverse_text_executor)
Workflow completed with result: DLROW OLLEH

Temel Kavramlar Açıklandı

İş Akışı Bağlam Türleri

Genel WorkflowContext tür, yürütücüler arasında hangi verilerin aktığını tanımlar:

  • WorkflowContext[str] - Sonraki yürütücüye bir dize gönderir
  • WorkflowContext[Never, str] - Dize türünde iş akışı çıkışı veren terminal yürütücüsü

Olay Türleri

Akış yürütme sırasında şu olay türlerini gözlemlersiniz:

  • ExecutorInvokedEvent - Yürütücü işlemeye başladığında
  • ExecutorCompletedEvent - Yürütücü işlemeyi bitirdiğinde
  • WorkflowOutputEvent - Son iş akışı sonucunu içerir

Python İş Akışı Oluşturucu Düzeni

, WorkflowBuilder iş akışları oluşturmak için akıcı bir API sağlar:

  • add_edge(): Yürütücüler arasında yönlendirilmiş bağlantılar oluşturur
  • set_start_executor(): İş akışı giriş noktasını tanımlar
  • build(): Sabit bir iş akışı nesnesini son haline getirir ve döndürür

Tam Örnek

Tam, çalışmaya hazır uygulama için Agent Framework deposundaki örneğe bakın.

Bu örnek şunları içerir:

  • Tüm aktarım ve belgelerle uygulamanın tam uygulanması
  • İş akışı kavramlarını açıklayan ek açıklamalar
  • Beklenen sonuçları gösteren örnek çıktı

Sonraki Adımlar