Agent Frameworks

AutoGen ile Kendini Düzeltici Kodlama Ajanları Oluşturma

Büyük Dil Modelleri (LLM'ler) kod üretimini devrim niteliğinde değiştirdi, ancak ham çıktılar genellikle ince hatalar veya mantık hataları içerebilir. GPT-4 gibi son modeller yetenekli olsa da, üretim kalitesinde kod için yalnızca tek geçişli üretime güvenmek çoğu zaman yeterli değildir. İşte **Microsoft AutoGen**, farklı yapay zeka rollerinin etkileşime girebileceği, eleştirebileceği ve çıktıları iyileştirebileceği çoklu ajan konuşmaları oluşturmaya olanak tanıyan bir çerçeve. Bu yazıda, yüksek kaliteli ve güvenilir sonuçları sağlamak için **İnsan Döngü İçi (HITL)** doğrulaması içeren kendini düzeltici bir kodlama ajanı oluşturmayı inceleyeceğiz.

Çoklu Ajan Avantajı

Geleneksel RAG hatları veya basit istem zincirleri, karmaşık problem çözümü için gerekli dinamik geri bildirim döngüsünden yoksundur. AutoGen, bir Kodlayıcı, bir İnceleyici ve bir Kullanıcı Vekili gibi belirli rollere sahip ajanlar tanımlayarak bunu çözer. Kodlayıcı başlangıç kodunu üretir, İnceleyici potansiyel kusurlar için analiz eder ve Kullanıcı Vekili insan geliştiriciyle etkileşimi kolaylaştırır. Bu işbirlikçi ekosistem, sistemin insan onayı aramadan önce yüksek bir güven seviyesine ulaşana kadar içsel olarak yinelemesine olanak tanır.

Ajan Ekibini Uygulama

Başlamak için pyautogen kütüphanesini yüklemeniz gerekir. Aşağıdaki örnek, bir kodlama ajanının bir Python fonksiyonu oluşturduğu ve bir inceleme ajanının bunu eleştirdiği temel bir kurulumu göstermektedir. Yapay zeka rolleri için AutoGenAssistantAgent'ı, insan arayüzü için ise UserProxyAgent'ı kullanıyoruz.

import autogen
import os

# API'yi yapılandır
config_list = [{"model": "gpt-4", "api_key": os.environ["OPENAI_API_KEY"]}]

# Kodlayıcı Ajanını Tanımla
coder = autogen.AssistantAgent(
    name="Coder",
    llm_config={"config_list": config_list, "temperature": 0.1},
    system_message="You are a world-class Python developer. Write clean, efficient code. "
                   "If asked to fix code, provide the full corrected version."
)

# İnceleyici Ajanını Tanımla
reviewer = autogen.AssistantAgent(
    name="Reviewer",
    llm_config={"config_list": config_list, "temperature": 0.1},
    system_message="You are a senior code reviewer. Critically analyze the code for "
                   "logic errors, security vulnerabilities, and best practices. "
                   "If the code is flawed, explain why and ask the Coder to fix it. "
                   "If it is perfect, say 'APPROVED'."
)

# Kullanıcı Vekili Ajanını Tanımla
user_proxy = autogen.UserProxyAgent(
    name="user_proxy",
    human_input_mode="ALWAYS",  # HITL: Her zaman insandan girdi iste
    code_execution_config={"work_dir": "coding", "use_docker": False}
)

İnsan Döngü İçi Doğrulama Ekleme

Bu mimarinin gerçek gücü, human_input_mode özelliğinde yatar. Bunu "ALWAYS" olarak ayarlayarak, sistem kritik kavşaklarda insan geri bildirimi almak için duraklar. Bu, ajanların yineleme ve hata ayıklama gibi ağır işleri üstlenirken, insanın nihai otoriteyi elinde tutmasını sağlar. Örneğin, İnceleyici kodu onaylarsa, user_proxy nihai çözümü geliştiriciye sunar. Geliştirici ardından bunu kabul edebilir, ek değişiklikler isteyebilir veya tamamen reddedebilir.

Konuşmayı Çalıştırma

Görevi başlatmanın yolu budur. Kodlayıcıdan bir ikili arama fonksiyonu oluşturmamızı istiyoruz ve konuşma, bir uzlaşıya varılana veya insan müdahalesi tetiklenene kadar kodlama ve inceleme aşamaları arasında otomatik olarak döngüye girecektir.

task = "Create a Python function that performs a binary search on a sorted list of integers."

# Sohbeti başlat
user_proxy.initiate_chat(
    speaker=coder,
    message=task,
    max_rounds=5,  # Sonsuz döngüleri önle
    speaker_selection_method="round_robin" # Kodlayıcı ve İnceleyici arasında dönüşümlü
)

Pratik Düşünceler ve En İyi Uygulamalar

  • Token Yönetimi: Çoklu ajan konuşmaları token açısından pahalı olabilir. Etkileşimleri sınırlamak ve istemlerin öz olmasını sağlamak için max_rounds kullanın.
  • Kod Çalıştırma: Daha yüksek güvenilirlik için, user_proxy'de veya özel bir Tester ajanında kod çalıştırmayı etkinleştirin. Bu, ajanların üretilen kodu gerçekten çalıştırmasına ve yalnızca statik analiz sorunlarını değil, çalışma zamanı hatalarını da yakalamasına olanak tanır.
  • Günlükleme: Her zaman konuşma geçmişini günlüğe kaydedin. Bir ajanın neden bir kod parçasını reddettiğini incelemek, sistem istemlerinizi ayarlamak için paha biçilmezdir.

Sonuç

AutoGen, basit kod üretiminden öteye geçerek zeki ve işbirlikçi yazılım mühendisliğine doğru ilerlemek için sağlam bir temel sağlar. Çoklu ajan sistemlerinin yineleme gücünü insan döngü içi doğrulamanın nüanslarıyla birleştirerek, geliştiriciler yalnızca yaratıcı değil, aynı zamanda eleştirel olarak titiz ajanlar oluşturabilir. Bu yaklaşım, insan geliştiricilerin yükünü önemli ölçüde azaltarak, ajanların kalıplaşmış işleri ve hata ayıklama gibi zahmetli işleri üstlenirken, geliştiricilerin mimari ve karmaşık problem çözme üzerinde odaklanmasını sağlar.

Share: