Microsoft Foundry Routines ile Ajanları Otomatik Çalıştırma
Sohbet penceresinde mesaj bekleyen ajanlar, kurumsal senaryoların ancak bir kısmını karşılıyor. Microsoft, Foundry Agent Service içindeki routines özelliğini genel kullanıma (GA) açtı. Routines, bir ajanı belirli bir zamanda, tekrarlayan bir takvimde ya da bağlı bir sistemde olay gerçekleştiğinde çalıştıran yönetilen bir mekanizma. Zamanlayıcıyı, kuyruğu, webhook dinleyicisini ve çalışma geçmişi veritabanını kendiniz kurmadan otomatik ajan davranışı elde ediyorsunuz.
Neden ayrı bir otomasyon katmanı gerekiyordu?
Bir chatbot’tan otomatik ajana geçiş, farklı bir mühendislik yükü doğuruyor. Kaynaktaki örnek net: ekibinize atanan her yeni GitHub issue’şunu sınıflandıran bir ajan. Ajan konuyu kategorize etmeyi, ilgili dokümantasyonu bulmayı ve sahip önermeyi zaten biliyor olabilir, ama bundan önce birilerinin şunları çözmesi gerekiyor:
- GitHub’ı doğru olay için izlemek
- Repoya kimlik doğrulamak
- Olay payload’ını ajana iletmek
- Ajanı güvenilir biçimde tetiklemek
- Ajanı kendi araçlarına karşı yetkilendirmek
- Çalışmanın başarılı olup olmadığını takip etmek
- Denetlenebilir bir iz (audit trail) tutmak
Tekrarlayan bir ajanın yükü de benzer: zamanlayıcı, barındırma altyapısı, yeniden deneme mantığı, kimlik bilgileri, çalıştırma geçmişi için bir veritabanı. Her yeni otomasyon, bakımını üstleneceğiniz altyapıyı biraz daha büyütüyor.
Routines bu yürütmeyi Foundry Agent Service’in içine taşıyor. Bir tetikleyici oluşturuyor, ajanı seçiyor, talimatını veriyor, routine’i başlatıyorsunuz. Gerisini Foundry yapıyor, çağrıyı kuyruğa alıyor, ajanı çalıştırıyor, sonucu sonradan incelenebilecek şekilde kaydediyor. Tetikleyici, ajan aksiyonu, kimlik, bağlantılar ve çalışma geçmişi aynı Foundry projesinde bir arada duruyor.
Üç tetikleyici tipi
| Tetikleyici | Ne zaman çalışır | Örnek kullanım |
|---|---|---|
| Timer | Gelecekteki belirli bir tarih ve saatte bir kez | Sürüm günü hazırlığı, son tarih hatırlatmaları, planlı takipler |
| Recurring | Bir takvime göre tekrarlı | Günlük özetler, haftalık raporlar, uyumluluk kontrolleri, backlog gözden geçirme, operasyonel izleme |
| Event-based | Bağlı sistemde bir olay gerçekleştiğinde | GitHub issue triyajı, Microsoft Teams kanalına gelen yeni mesajlara yanıt |
Timer tipi, tam olarak belirli bir anda yapılması gereken işler için. Recurring tetikleyiciler, ayrı bir zamanlayıcı ve çağrı servisi işletmek yerine takvimi doğrudan ajanın yanında yönetmenizi sağlıyor. Event-based tetikleyicilerde ise ajan bir şey değiştiğinde tepki veriyor, birinin sormayı hatırlamasını beklemeden.
Başlangıç entegrasyonları GitHub issue olayları ile Microsoft Teams kanallarındaki yeni mesajları kapsıyor, duyuruda daha fazla olay kaynağının planlandığı belirtiliyor. Olay gerçekleştiğinde Foundry, yapılandırılmış bağlantı üzerinden olayı alıp payload’ı ajana iletiyor. Ajan olay üzerinde muhakeme yapabiliyor, araçlarını kullanabiliyor, uygun aksiyonu alabiliyor.
Reminder tool: ajanın kendi işine geri dönmesi
Bazı işler tek çalıştırmada bitmiyor. Ajan bir veri dışa aktarımı başlatabilir, onay talep edebilir, bir dağıtım tetikleyebilir ya da birkaç dakika süren bir API çağrısı yapabilir. Böyle durumlarda ajanın, bir insanın yeniden başlatmasına gerek kalmadan durumu sonradan kontrol etmesi gerekiyor.
Reminder tool (preview aşamasında), Foundry Agent Service üzerindeki bir Hosted Agent’ın belirli bir gecikmeden sonra kendisini yeniden çalışacak şekilde planlamasına izin veriyor. Hatırlatma tetiklendiğinde Foundry aynı ajanı aynı konuşma üzerinde çağırıyor, devam etmek için gereken bağlam da böylece korunuyor.
Kaynakta uzun süren bir görevi izleyen ajan için verilen akış şöyle:
- Ajan görevi başlatır ve bir task ID alır.
- 15 dakika sonrası için bir hatırlatma planlar.
- Foundry ajanı aynı oturumda yeniden çağırır.
- Ajan görevin durumunu kontrol eder.
- Görev hala çalışıyorsa yeni bir hatırlatma planlar.
- Görev bittiğinde sonucu özetler ve kullanıcıyı bilgilendirir.
Devam kararını ajanın kendisi veriyor. Geliştiricinin ayrı bir polling servisi yazması, konuşma durumunu bağımsız olarak saklaması ya da ajanı yeniden çağıracak özel kod üretmesi gerekmiyor. Routines ile reminder tool otomasyonun iki ucunu karşılıyor: dışarıdan tanımlanan tetikleyiciler ajanı başlatıyor, ajanın kendi planladığı hatırlatmalar işi zaman içinde sürdürüyor.
Gözetimsiz ajanlarda kimlik modeli
Otomasyon beraberinde bir soru getiriyor: ajan kimin kimliğiyle çalışıyor? Timer, recurring ve event-based tetikleyicilerin hepsinde, ajanın ve araçlarının hangi kimlikle çağrılacağını seçebiliyorsunuz.
- Creator identity: Routine, oluşturan kişinin devredilmiş erişimiyle hareket eder; aksiyonlar o kişinin izin ve erişim sınırları içinde kalır. OAuth gibi kullanıcı kimliğiyle kimlik doğrulayan araçlar yapılandırdıysanız bu modeli kullanın.
- Agent identity: Routine, Microsoft Entra ID’de tanımlı kendi izinleriyle bağımsız bir ajan olarak çalışır. Tüm araçlarınız yalnızca anahtar tabanlı veya managed identity kimlik doğrulamasına ihtiyaç duyuyorsa bu modeli seçin.
Altta yatan kimlik doğrulamayı ve token değişimini Foundry kendisi yönetiyor. Kimlik altyapısı ajan kodunun dışında kalıyor, otomatik çalışan aktivite de yönetilebilir ve denetlenebilir hale geliyor.
Python ile hızlı başlangıç
Gerekli paketleri kurun:
pip install azure-ai-projects azure-identity
Aşağıdaki örnek, hafta içi her gün 07:00 UTC’de bir ajanı çağıran tekrarlayan bir routine oluşturur:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
project = AIProjectClient(
endpoint=os.environ["PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
routine = project.beta.routines.create_or_update(
routine_name="daily-summary",
description="Runs a daily summary agent on weekday mornings.",
enabled=True,
triggers={
"weekday-morning": {
"type": "schedule",
"cron_expression": "0 7 * * 1-5",
"time_zone": "UTC",
}
},
action={
"type": "invoke_agent_responses_api",
"agent_name": os.environ["AGENT_NAME"],
"input": "Summarize activity from the last 24 hours.",
},
)
print(f"Created routine: {routine.name}")
Ajanın ve ardından gelen araç çağrılarının routine’i oluşturan kişinin kimliğiyle doğrulanmasını istiyorsanız authorization parametresini kullanabilirsiniz:
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import RoutineAuthorization
from azure.identity import AzureCliCredential
project = AIProjectClient(
endpoint=os.environ["PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
)
routine = project.beta.routines.create_or_update(
routine_name="daily-summary",
description="Runs a daily summary agent on weekday mornings.",
enabled=True,
authorization=RoutineAuthorization(identity="creator"),
triggers={
"weekday-morning": {
"type": "schedule",
"cron_expression": "0 7 * * 1-5",
"time_zone": "UTC",
}
},
action={
"type": "invoke_agent_responses_api",
"agent_name": os.environ["AGENT_NAME"],
"input": "Summarize activity from the last 24 hours.",
},
)
print(f"Created routine: {routine.name}")
PROJECT_ENDPOINT değerini Foundry proje endpoint’inize, AGENT_NAME değerini dağıtılmış ajanınızın adına ayarlayın. Routine’leri Microsoft Foundry portalından, REST API üzerinden, JavaScript ve.NET SDK’larıyla veya Azure Developer CLI ile de oluşturup yönetebilirsiniz. Event-based bir routine için önce ilgili proje bağlantısını oluşturup yetkilendirmeniz, tetikleyiciyi tanımlarken de bu bağlantıya referans vermeniz gerekiyor.
Pratikte ne anlama geliyor?
Routines’in getirdiği temel değişim, ajan mantığı ile onu ayakta tutan otomasyon altyapısının ayrışması. Tetikleyici tanımı, ajan aksiyonu, kimlik seçimi ve çalışma geçmişi tek bir Foundry projesinde toplandığı için yeni bir otomasyon eklemek artık yeni bir servis işletmek anlamına gelmiyor. Reminder tool ise tek turda bitmeyen işlerde ajanın kendi devamlılığını yönetmesini mümkün kılıyor; özelliğin hala preview aşamasında olduğunu ve Hosted Agent’lar için tanımlandığını hesaba katmak gerekiyor.
Değerlendirmede belirleyici olan kimlik modeli. Araçlarınız kullanıcı kimliğiyle mi doğrulanıyor, anahtar ya da managed identity ile mi? Bu sorunun cevabı creator ile agent identity arasındaki tercihi doğrudan belirliyor.
Kaynaklar ve İleri Okuma
- From Chatbots to Automated Agents: Routines in Microsoft Foundry Are Now Generally Available — Linda Li, Microsoft Foundry Blog
- Microsoft Learn: Foundry Agent Service’te routine kullanımı
- Microsoft Learn: Reminder tool (preview)
- Microsoft Foundry portalı
- Microsoft Foundry Blog
- Foundry Hosted Agents ile MAF’ı Prod’a Taşımak
- azd ile AI Ajanınızı Microsoft Foundry’ye Taşımak







Yorum gönder