AutoGen ile çok ajanlı uygulama geliştirme: kurulumdan takıma
AutoGen ile ajan tanımlama, araç ekleme, takım kurma, sonlandırma koşulu ve kod örnekleriyle çok ajanlı uygulama geliştirme adımları.
AutoGen nedir, katmanları nelerdir?
AutoGen, yapay zeka ajanları ve ajan tabanlı uygulamalar geliştirmek için Microsoft'un açık kaynak çerçevesidir. Resmî dokümantasyon çerçeveyi katmanlar halinde anlatır. Core, ölçeklenebilir çok ajanlı sistemler için olay güdümlü bir altyapı sunar. AgentChat, Core üzerine kurulu, konuşma temelli tek ve çok ajanlı uygulamalar için daha üst düzey bir Python arayüzüdür. Extensions, harici servis ve kütüphanelere bağlanan bileşenleri barındırır. Studio ise kod yazmadan ajanlarla prototip yapmaya yarayan web arayüzüdür.
Başlangıç için en pratik katman AgentChat'tir. Aşağıdaki adımlar bu katmanı baz alır. Çerçeve hızlı gelişen bir projedir; sürümler arasında sınıf adları ve paket yapısı değişebilir, bu yüzden kod yazmadan önce resmî dokümantasyonun güncel sürümünü açın ve aşağıdaki örnekleri kendi kurulumunuzda deneyin.
Çok ajanlı yaklaşım her problem için gerekli değildir. Tek bir ajan ve birkaç araçla çözülen iş için takım kurmak karmaşıklığı artırır. Çok ajanlı kurgu, işin gerçekten farklı rol, bakış açısı ya da uzmanlık gerektirdiği durumlarda anlam kazanır: bir üreticinin taslak yazması, bir eleştirmenin değerlendirmesi gibi.
Kurulum ve ilk ajan
Resmî dokümantasyondaki kurulum komutu, AgentChat paketini ve OpenAI model eklentisini birlikte kurar:
pip install -U "autogen-agentchat" "autogen-ext[openai]"
Kurulumu izole bir sanal ortamda yapın ve model sağlayıcınızın erişim anahtarını kod içine değil, ortam değişkeni olarak tutun. Anahtarı depoya yazmayın.
İlk ajan, bir model istemcisiyle oluşturulan AssistantAgent sınıfıdır. Dokümantasyondaki asgari örneğin sadeleştirilmiş hali:
import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main() -> None: agent = AssistantAgent("assistant", OpenAIChatCompletionClient(model="MODEL_ADI")) print(await agent.run(task="Merhaba de"))
asyncio.run(main())
Burada MODEL_ADI yerine kullandığınız sağlayıcının model adını yazın. Çalıştırma asenkron olduğundan await ve asyncio kullanmanız gerekir. Ajan durumludur: aynı ajana yeni görev verdiğinizde önceki konuşmanın bağlamını koruyabilir. Bu yüzden ilgisiz görevler için yeni ajan örneği oluşturmak ya da sıfırlamak gerekebilir.
Ajana araç vermek
Ajanı yalnızca metin üreten bir model olmaktan çıkarıp iş yapan bir bileşene çevirmenin yolu araçtır. AutoGen'de araç, sade bir Python fonksiyonudur ve AssistantAgent'a tools parametresiyle verilir. Dokümantasyondaki örnek örüntü şudur:
async def web_search(query: str) -> str: """Find information on the web""" return "sonuc metni"
agent = AssistantAgent( name="assistant", model_client=model_client, tools=[web_search], system_message="Use tools to solve tasks.", )
Fonksiyonun türlü parametre bildirimi ve açıklama metni önemlidir, çünkü model aracı ne zaman ve nasıl çağıracağını bu bilgiden çıkarır. Belgeye göre araçlar ajanın kendi çağrısı içinde çalışır ve varsayılan olarak araç sonucu nihai yanıt olarak döner.
Gerçek bir uygulamada araç; bir iç veri tabanı sorgusu, bir takvim servisi ya da bir şirket içi arama olabilir. Araçlara yalnızca ihtiyaç duyulan en dar yetkiyi verin: yazma yetkisi olan bir aracı eleştirmen ajana vermek gereksiz risktir.
Takım kurmak: üretici ve eleştirmen örneği
Çok ajanlı kurgunun temeli takımdır. Dokümantasyondaki yansıtma örneğinde bir birincil ajan taslak üretir, bir eleştirmen ajan geri bildirim verir ve eleştirmen yeterli bulduğunda belirlenen kelimeyi yazar. Takım RoundRobinGroupChat sınıfıyla kurulur; ajanlar sırayla konuşur, sonlandırma koşulu ise TextMentionTermination ile tanımlanır:
primary_agent = AssistantAgent("primary", model_client=model_client, system_message="You are a helpful assistant.") critic_agent = AssistantAgent("critic", model_client=model_client, system_message="Provide constructive feedback. Respond with 'APPROVE' when your feedback is addressed.")
text_termination = TextMentionTermination("APPROVE") team = RoundRobinGroupChat([primary_agent, critic_agent], termination_condition=text_termination)
result = await team.run(task="Kısa bir ürün duyurusu yaz.")
run metodu, takımın ürettiği tüm mesajları içeren bir TaskResult döndürür. Mesajları üretildikçe izlemek için run_stream kullanılır; konsolda biçimli çıktı için Console sarmalayıcısı vardır. Yeni bir görevden önce takımı team.reset() ile sıfırlamak, önceki konuşmanın bağlamının taşınmasını engeller.
Sonlandırma koşulları farklı biçimlerde tanımlanabilir: bir kelime geçince durmak, belirli bir ajan metin mesajı verince durmak ya da dışarıdan ExternalTermination ile durdurmak. Koşulları birleştirmek mümkündür. Koşulsuz bırakılan bir takım sonsuz konuşabilir ve gereksiz model maliyeti üretir.
Rolleri ve sistem mesajlarını tasarlamak
Çok ajanlı sistemlerde kalite, kod kadar rol tasarımına bağlıdır. Her ajanın sistem mesajı tek bir sorumluluk, nasıl çıktı vereceği ve ne zaman duracağı konusunda net olmalıdır. Belirsiz roller, ajanların aynı şeyi tekrar etmesine ya da birbirinin işini bozmasına yol açar.
Sık kullanılan örüntüler: üretici ve eleştirmen, planlayıcı ve uygulayıcı, araştırmacı ve yazar. Örneğin bir rapor taslağı için araştırmacı ajan kaynak toplar, yazar ajan taslağı kurar, eleştirmen ajan tutarlılığı ve eksik iddiaları kontrol eder. Aşamaları kısa tutun; her ek ajan, hem gecikmeyi hem maliyeti hem de hata ihtimalini artırır.
Ajanlara verdiğiniz talimatı çıktıdan ölçün: aynı görevi birkaç kez çalıştırın, sonuçlar kabul edilebilir aralıkta kalıyor mu bakın. Takımın başarısız olduğu örnekleri not edip sistem mesajını bu örneklerle güncelleyin.
Üretime geçmeden önce kontrol listesi
Prototip ile üretim arasındaki fark güvenlik, izleme ve maliyet kontrolüdür. • Yetki: araçlar en az ayrıcalıkla çalışsın; geri döndürülemez eylemler insan onayına bağlansın. • Kod çalıştırma: ajanların ürettiği kodu ana makinede değil yalıtılmış bir ortamda çalıştırın. Çerçevenin uzantı katmanı kod yürütme için konteyner tabanlı bileşenler sunar; ayrıntı için güncel dokümantasyona bakın. • Sonlandırma: her takımda sonlandırma koşulu ve üst sınır olsun. • Kayıt ve izleme: ajan mesajlarını ve araç çağrılarını kaydedin ki hata oluştuğunda neden olduğunu geriye doğru izleyebilesiniz. • Test: sabit bir senaryo kümesi oluşturun ve her değişiklikte çalıştırın. • Gizli veri: ajana gönderilen bağlamda kişisel veri ve sırlar bulunmasın. • Maliyet: görev başına ortalama model çağrısı sayısını izleyin.
Çok ajanlı sistemler, deterministik bir iş akışıyla çözülebilen işlerde gereksiz karmaşıklık olabilir. Adımların önceden belli olduğu işte düz bir iş akışı çoğu zaman daha güvenilirdir.
Bu beceriyi Mindset programlarında nerede çalışırsınız?
AutoGen ile Multi-Agent Sistemleri programı, yapay zeka uygulaması geliştiren yazılımcılar ve veri mühendisleri için uygundur. Müfredatta AutoGen ekosistemi ve kurulum, ajan rolleri ve sorumlulukları, ajan iletişimi ve koordinasyon, araç kullanımı ve dış sistem entegrasyonu, karmaşık görev çözümleme, üretim güvenliği ve ölçeklendirme ile kurumsal uygulama projeleri başlıkları yer alır.
Yukarıdaki rol tasarımı, araç ekleme ve üretim kontrolleri bu başlıklarla doğrudan örtüşür. Kurumsal ekipler, iç süreçlerine uygun bir ajan takımı prototipini kurum içi vakalarla çalışmak için programın kurumsal uygulama projesi kısmını kullanabilir.
İlgili Mindset programı
AutoGen ile Multi-Agent Sistemleri
Sık sorulan sorular
AutoGen kullanmak için hangi programlama bilgisi gerekir?
Python bilgisi gerekir; asenkron programlamaya (async ve await) aşina olmanız faydalıdır. Dokümantasyondaki örnekler Python ile yazılmıştır. Kod yazmadan denemek isterseniz Studio arayüzüyle prototip yapabilirsiniz, ama üretim kalitesinde bir uygulama için kod katmanını öğrenmek gerekir.
AutoGen yalnızca OpenAI modelleriyle mi çalışır?
Hayır. Çerçeve model istemcileri üzerinden çalışır ve OpenAI uyumlu istemci yalnızca bir örnektir. Başka sağlayıcılar için ayrı uzantılar bulunabilir. Kullanacağınız modelin desteklendiğini ve araç çağırma gibi özelliklerin çalıştığını resmî dokümantasyondan doğrulayın.
Çok ajanlı sistem ile tek ajan arasındaki fark nedir?
Tek ajan tek bir bağlamda, bir sistem mesajıyla ve araçlarla işi yürütür. Çok ajanlı sistemde farklı rollere sahip ajanlar birbirinin çıktısını değerlendirerek ya da işi bölerek çalışır. Kalite veya uzmanlık ayrımı gerektiren işlerde yararlıdır, ama gecikme ve maliyeti de artırır.
Ajanlar sonsuz döngüye girerse ne yapılır?
Sonlandırma koşulu ve üst mesaj sınırı tanımlayın. Dışarıdan durdurmak için ExternalTermination kullanabilirsiniz. Ayrıca ajanların sistem mesajlarında ne zaman duracaklarını açıkça yazın. Döngü sürekli oluşuyorsa roller muhtemelen belirsizdir; görev paylaşımını yeniden tasarlayın.
AutoGen ile LangGraph ya da CrewAI arasında nasıl seçim yapılır?
Seçim ekibin ihtiyacına ve altyapısına bağlıdır: konuşma temelli ajan etkileşimi, durum makinesi tarzı akış kontrolü ya da rol odaklı takım soyutlaması farklı çerçevelerde öne çıkar. Küçük bir senaryoyu her çerçevede deneyip bakım, gözlemlenebilirlik ve ekibin aşinalığını karşılaştırmak en sağlıklı yoldur.
İlgili rehberler
Kategori: Yapay Zeka ve Dijital Dönüşüm