Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Büyük Harf Yürütücüsü - Giriş metnini büyük harfe dönüştürür
- 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
-
WorkflowBuilderkullanarak 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
- .NET 8.0 SDK veya üzeri
- Bu temel örnek için dış yapay zeka hizmeti gerekmez
- Yeni bir konsol uygulaması
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:
-
WorkflowBuilderoluş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:
- Büyük Harf Yürütücüsü - Giriş metnini büyük harfe dönüştürür
- 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
@executordekoratörünü kullanma - Yürütücüleri
WorkflowBuilderile 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
@executorbu 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 belirterekNeverherhangi bir ileti göndermeyen ancak ikinci parametre olarak belirterekstriş 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ı