SON DAKİKA

Nvdia

NVIDIA AgentIQ Açık Kaynak Aracıyla AI Kod Üretimini Geliştirme

NVIDIA, AI ajanlarını birbirine bağlama ve optimize etme amacıyla geliştirdiği AgentIQ adlı açık kaynak kütüphanesini tanıttı. Bu kütüphane sayesinde geliştiriciler, profesyoneller ve araştırmacılar, kendi agentik AI uygulamalarını oluşturma imkanı bulacaklar. Bu eğitim, AgentIQ ile yapay zeka kodu üreten bir eteği örnek alarak, uygulama geliştirmenizde size yol gösterecek. Bu süreçte, LangGraph ve akıl yürütme modellerini kullanarak test zamanı hesaplamalarını ölçeklendiren bir kodlama ajansı oluşturacağız.

Ölçekleme yasaları, ön eğitim, sonrası eğitim ve çıkarım süreçlerinde daha akıllı AI sistemlerinin gelişmesini sağlıyor. Büyük ölçekli ön eğitim, büyük dil modelleri (LLMs) ile olağanüstü sonuçlar sunuyor ama bu büyütmenin daha da zorlaştırdığı biliniyor. Otonom AI ajanları ve test zamanı hesaplama yöntemleri, Deepseek-R1 gibi modellerin kullanımıyla anlamlı gelişmeler sağlıyor. Bu, karmaşık görevlerin (mantık, matematik veya kodlama gibi) agentik iş akışları oluşturulurken önem kazanıyor.

NVIDIA AgentIQ ile birlikte bu yeni ölçekleme yöntemlerini benimsemek daha kolay hale geliyor. Kurumlar, AI ajan uygulamalarını daha iyi tasarlayıp, test edip, dağıtıp ve optimize edebiliyor. Şimdi, AgentIQ içinde AI kodu üretim iş akışlarını nasıl geliştirebileceğimize dalalım.

AgentIQ ile Kodlama Ajanları Neden Oluşturmalı?

Büyük dil modelleri (LLM’ler), kodlama görevlerinde oldukça başarılıdır ancak bir sohbet arayüzüne sınırlıdır ve otonomi ile gerçek dünya ile bütünleşme yetenekleri eksiktir. Buna karşın, bu LLM’lerden güç alan AI ajanları, gerçek dünya hedeflerine ulaşmak üzere tasarlanmıştır. Bu ajanlar, dosya düzenleme, kod yürütme veya bilgi araştırma gibi görevleri yerine getirmek için çevresiyle etkileşimde bulunur.

AI Ajanı Tasarımında Dikkat Edilecek Noktalar

AI ajanları, AI performansını artırmak için çıkarım zamanı hesaplamalarını ölçeklendirmeye bir örnektir. Bir ajan veya çoklu ajan sistemi oluşturmak için esneklik ile yapı arasındaki dengeyi korumak gereklidir.

Esnek bir ajan, bir shell, bir kod editörü ve bir web tarayıcısı ile donatılabilir ve minimum talimatla belirli görevleri yerine getirmesi istenebilir. Diğer yandan, yapılandırılmış bir ajan, daha önceden tanımlanmış adımlardan oluşabilir. Örneğin, daha büyük bir kod tabanındaki başarısız bir test durumu ile ilgili konumu belirlemek ve ardından hatayı çözene kadar kod değişiklikleri yapmak gibi. Popüler bir orta yol olan akış mühendisliği, durumların ve geçişlerin tanımlandığı, bir ajan veya aracın her durumda çalıştığı bir yaklaşımdır.

Ayrıca, çıkarım zamanı hesaplamalarının önemli olduğu bir diğer alan da akıl yürütme modelleri ve arama yöntemleridir. DeepSeek-R1 veya OpenAI O1 gibi akıl yürütme modelleri, bir düşünce zinciri içinde çeşitli akıl yürütme yollarını ve çözümlerini araştırmaya zaman harcayarak nihai bir çıktı sunar. Beam search gibi arama yöntemleri de, çeşitli dalları keşfederek ve geçerli bir sonuç veya bir yaklaşım gibi bir puanlama işlevinden yararlanarak çalışır.

AgentIQ ile AI Ajanı Geliştirmenin Kolaylığı

Değerlendirme, dağıtım ve optimizasyon, AgentIQ ile çözülebilen yaygın zorluklardır. Aşağıdaki tabloda, AgentIQ’nin özellikleri ve avantajları özetlenmiştir.

Özellik Avantaj
AJAN çerçeve ekosistemini kapsıyor LangGraph ve CrewAI gibi favori araçlarınızla devam edebilirsiniz.
Ortak spesifikasyon Projeler arasında yeniden kullanılabilirlik ve uyumluluk sağlar, AgentIQ içinde birçok örneği içerir. Projeler AgentIQ kayıt sistemi aracılığıyla paylaşılabilir.
Değerlendirme ekipmanı İş akışlarında hızlı geliştirme ve yineleme sağlamaktadır. Beklenen çıktılardan oluşan bir set tanımlayarak, yapılandırma dosyasını güncelleyerek farklı modelleri, araçları ve iş akışlarını kolayca test edebilirsiniz.
Yerleşik dağıtım seçenekleri aiq serve komutuyla mikro hizmetleri kolayca başlatın veya açık kaynaklı sohbet arayüzünü kullanın.
Optimizasyon özellikleri İş akışındaki darboğazları tanımlayın ve en iyi performans için paralel araç çağrısı ve NVIDIA Dynamo ile entegrasyon gibi özelliklerden yararlanın.
Gözlemlenebilirlik Phoenix, OpenTelemetry Collector ve özel sağlayıcılarla sıkı entegrasyon ile izleme ve hata ayıklama yapın.
Tablo 1. AgentIQ’nin özellikleri ve avantajları

Daha fazla bilgi için dökümantasyona veya GitHub’a bakabilirsiniz.

Eğitim İçin Gereksinimler

Aşağıdaki kurulum gereklidir:

NVIDIA AgentIQ’da AI Kod Üretim Ajanı Nasıl Oluşturulur?

AI ajanları ve akıl yürütme modelleri ile entegre edilerek bir AI kod üretim ajanı oluşturma sürecinde sizi yönlendireceğiz. Temel ajanı LangGraph kullanarak oluşturarak, güvenlik ve kontrol için bir sandbox kod yürütme aracı entegre edeceğiz ve hata düzeltmeyi DeepSeek-R1 ile geliştireceğiz. Son olarak, ajanın nasıl bir üst düzey ajan ile daha büyük bir sistema entegre edileceğini göstereceğiz.

Proje Şablonunu Kurma

Öncelikle NVIDIA AgentIQ GitHub deposunu klonlayın. README’de belirtilen talimatları takip ederek AgentIQ kütüphanesini yükleyin.

Yeni bir proje şablonu oluşturmak için AIQ scaffold komutunu kullanın. Şablon, varsayılan bir iş akışı ve yapılandırma dosyası ile birlikte gelecektir.

aiq workflow create code_gen_example

NVIDIA AgentIQ, ajan iş akışları ve çağrılabilir araç kavramlarını tek bir sınıf altında birleştirir. Kod üretim ajanını bir işlev olarak uygulayabilir ve bunu bir üst düzey ajan içinde çağrılabilir bir araç olarak kullanabiliriz, örneğin bir ReACT ajanı. Araştırma ajanı, hata yerelleştirme ajanı veya test üretim ajanı gibi diğer ajanlar, üst düzey uygunluk tarafından yönetilebilir ve karmaşık görevleri ele almak üzere asenkron olarak başlatılabilir.

Kod üretim ajanının girişi, bir problem ifadesi, düzeltilmesi gereken kod ve birim testleridir. Ajan aşağıdaki basit süreci izler:

  1. Problem ifadesi (örneğin, bir GitHub sorunu), düzeltilmesi gereken kod ve geçmesi gereken birim testleri verilerek, ajanın bir kod üretim LLM’si kullanarak sorunu çözme için bir git yaması oluşturması istenir.
  2. Güncellenmiş kod, güvenli bir kod yürütme sandboxında birim testlerine tabi tutulur.
  3. Test başarısız olursa, bir akıl yürütme modeli çıktı temelinde değişiklikler önerir.
  4. Adımlar 1-3, oluşturulan kod ya istenen birim testlerini geçene kadar ya da maksimum tekrar sayısına ulaşılana kadar tekrarlanır.

Yapılandırma Dosyasını Güncelleme

AgentIQ’daki yapılandırma dosyası, tüm iş akışını tanımlar. Dosyayı güncelleyerek (örneğin, araçlar ekleyerek, LLM’leri değiştirerek veya diğer bileşenleri değiştirerek), aiq eval komutu aracılığıyla ajans iş akışları hızlı bir şekilde yinelemeye tabi tutulabilir.

Şablon komutu varsayılan bir yapılandırma dosyası oluşturur. Üç bölümü güncelleyin: işlevler, llms ve iş akışı. İşlevler bölümü, ajanın erişebileceği araçları içerir, llms bölümü ajana ve araçlara hangi modellerin mevcut olduğunu tanımlar, iş akışı ise ana giriş noktasıdır. Burada iş akışı türünü react_agent olarak belirtin; bu, AgentIQ araç setindeki varsayılan ReACT ajanını kullanacaktır.

functions:
  code_gen_tool:
    _type: code_gen_tool
    debug_llm: reasoning_llm
    code_llm: code_generation_llm
    max_iterations: 3

llms:
  reasoning_llm: 
    _type: nim 
    model_name: deepseek-ai/deepseek-r1
    max_tokens: 8000
  code_generation_llm:
    _type: nim 
    model_name: qwen/qwen2.5-coder-32b-instruct 
    max_tokens: 2048
  general_llm:
    _type: nim 
    model_name: meta/llama-3.3-70b-instruct  
    max_tokens: 2048

workflow:
  _type: react_agent
  tool_names:
    - code_gen_tool
  llm_name: general_llm
  verbose: true
  retry_parsing_errors: true

Bu örnekte, tüm üç LLM NVIDIA NIM ile sunulur ki, bu NVIDIA API kataloğu üzerinden erişilebilir ya da yerel olarak barındırılabilir. OpenAI ve diğer LLM sağlayıcıları da desteklenmektedir. Daha fazla bilgi için dökümantasyona göz atmayı unutmayın.

Kod Üretim İşlevini Uygulama

Yapılandırma dosyasında referans verilen kod üretim işlevini oluşturun. Proje şablonunda register.py dosyasını açın ve aşağıdakileri ekleyin:

class CodeGenToolConfig(FunctionBaseConfig, name="code_gen_tool"):

    reasoning_llm: str

    code_llm: str

    max_iterations: int = 5

@register_function(config_type=CodeGenToolConfig)

async def code_generation(config: CodeGenToolConfig, builder: Builder):

Bu işlev içinde, yardımcı işlevler ve çağrıldığında çalışacak bir ana işlev _code_gen_tool tanımlayacağız. Dört aşamadan oluşan bir LangGraph iş akışı oluşturun:

1. Kullanıcı (veya başka bir ajan) bir problem ifadesi (örneğin, bir GitHub sorunu) verir; düzeltilmesi gereken kod ve geçmesi gereken birim testler. Ajan, yapılandırılmış kodlama LLM’sini kullanarak sorunu çözmek için bir git yaması oluşturmaya teşvik edilir.

2. Güncellenmiş kod, bir kod yürütme aracında değerlendirilir.

3. Eğer test başarısız olursa, akıl yürütme modeli problem ifadesine, koda ve test çıktısına göre değişiklikler önerecektir.

4. Adımlar 1-3, oluşturulan kod istenen birim testlerini geçene kadar veya maksimum tekrar sayısına ulaşılana kadar tekrarlanır.

workflow = StateGraph(CodeState)

workflow.add_node("code_generation", generate_code)

workflow.add_node("run_unit_test", test_code)

workflow.add_node("debug", debug_code)

workflow.add_edge(START, "code_generation")

workflow.add_edge("code_generation", "run_unit_test")

workflow.add_conditional_edges(

    "run_unit_test",

    should_continue,

    {

        "end": END,

        "debug": "debug"

    }

)

workflow.add_edge("debug", "code_generation")

agent = workflow.compile()

LangGraph ajansındaki her düğüm bir Python işlevi olarak tanımlanır; bu, otonom bir ajan, bir araç çağrısı ya da başka bir şey olabilir. generate_code düğümü, kodu üretmek için Qwen NIM kullanır, run_unit_test düğümü güncellenmiş koda karşı testleri yürütür ve debug düğümü, hatalar ile ilgili derin bir akıl yürütme sağlamak için Deepseek-R1’i kullanır.

AgentIQ, bir işlevi, diğer herhangi bir işlevden çağrılabilir hale getirmek için yield ifadesini kullanır. İşlevler için kesin ve doğru tanımlar sağlamak, ajansların birbirleriyle etkili bir şekilde etkileşim kurmalarında kritik öneme sahiptir.

yield FunctionInfo.from_fn(

    _code_generation,
    description=("Bu araç, test odaklı geliştirme kullanarak kod üreten bir ajandır. Girdi olarak sorunu, mevcut kodu ve birim testleri sağlayın."))
Flowchart showing the code modification agent workflow: user input, code generation with NVIDIA NIM, unit test execution with a sandbox code execution tool, and reflection and debugging with NVIDIA NIM reasoning model.
Şekil 1. Bir kod değişiklik ajanı diyagramı

Bu eğitimde, LangGraph hattının bazı uygulama detaylarını atladık. AgentIQ örnekleri dizini, başlangıç için çeşitli tamamlanmış örnekleri içerir.

Örnek İş Akışını Çalıştırma

AgentIQ, bir iş akışını çalıştırma, bir sunucu başlatma ve değerlendirme yapma gibi çeşitli özellikler sunan bir CLI sağlar.

İş akışını doğrudan çalıştırın:

aiq run --config_file=examples/code_gen_example/configs/config.yml --input 'Bir Python işlevi yazın adı olan largest_rectangle , histogramdaki en büyük dikdörtgenin alanını hesaplar. Alanın oluşturulabileceği histogram oluşturur. Geçmesi gereken şu birim testleri dosyalarını kullanın:
test_path: "/home/aiq/rectangle_tests.py",
solution_path: "/home/aiq/rectangle_solution.py"'

Günlükler konsolda görüntülenecek ve ajan, AgentIQ kullanıcı arayüzü ile kolayca entegre edilebilir.

Aşağıda, aldığı girdilerle ilgili bir örnek çıktı bulunmaktadır.

Configuration Summary:
--------------------
Workflow Type: react_agent
Number of Functions: 1
Number of LLMs: 3
Number of Embedders: 0
Number of Memory: 0
Number of Retrievers: 0

2025-02-27 17:33:27,459 - aiq.agent.react_agent.agent - INFO - Kullanıcının sorusu: 'Bir Python işlevi yazın adı olan largest_rectangle , histogramdaki en büyük dikdörtgenin alanını hesaplar. Alanın oluşturulabileceği histogram oluşturur. Geçmesi gereken şu birim testleri dosyalarını kullanın:
test_path: "/home/aiq/rectangle_tests.py",
solution_path: "/home/aiq/rectangle_solution.py"'
2025-02-27 17:33:27,460 - aiq.agent.react_agent.agent - INFO - Ajanın düşünceleri:
Thought: Bu problemi çözmek için, bir Python işlevi yazmamız gerekiyor ve histogramda en büyük dikdörtgenin alanını hesaplamak için.
Action: code_gen_tool
Action Input: {"problem_statement": "Bir Python işlevi yazın adı olan largest_rectangle , histogramdaki en büyük dikdörtgenin alanını hesaplar. Alanın oluşturulabileceği histogram oluşturur. Geçmesi gereken şu birim testleri dosyalarını kullanın:
test_path: "/home/aiq/rectangle_tests.py",
solution_path: "/home/aiq/rectangle_solution.py"}
===============================================================================
YENİ KOD ÜRETİM GÖREVİ BAŞLATILIYOR
===============================================================================
Başlangıç Kodu:

def largest_rectangle(heights):
-------------------------------------------------------------------------------
Çözüm üretiyor...

largest_rectangle(heights):
    stack = []
    max_area = 0
    index = 0
    while index < len(heights):
        if not stack or heights[index] >= heights[stack[-1]]:
            stack.append(index)
            index += 1
        else:
            top_of_stack = stack.pop()
            width = index if not stack else index - stack[-1] - 1
            area = heights[top_of_stack] * width
            max_area = max(max_area, area)

    while stack:
        top_of_stack = stack.pop()
        width = index if not stack else len(heights) - stack[-1] - 1
        area = heights[top_of_stack] * width
        max_area = max(max_area, area)

    return max_area
-------------------------------------------------------------------------------
Test Sonuçları:

BAŞARISIZ: Beklenen -1, 0 alındı
PASS
PASS
-------------------------------------------------------------------------------
Test başarısız - Girişim 1/3
-------------------------------------------------------------------------------
Hataları analiz etme:

Hata, giriş listesinin boş olduğu durumu ele almadığı için muhtemelen meydana geldi. Bu durumda, işlev -1 döndürmelidir, ancak şu anda 0 döndürüyor.
------------------------------------------------------------------ Güncellenmiş çözüm üretiyor... largest_rectangle(heights): if not heights: return -1 stack = [] max_area = 0 index = 0 while index < len(heights): if not stack or heights[index] >= heights[stack[-1]]: stack.append(index) index += 1 else: top_of_stack = stack.pop() width = index if not stack else index - stack[-1] - 1 area = heights[top_of_stack] * width max_area = max(max_area, area) while stack: top_of_stack = stack.pop() width = index if not stack else len(heights) - stack[-1] - 1 area = heights[top_of_stack] * width max_area = max(max_area, area) return max_area ------------------------------------------------------------------------------- Güncellenmiş Test Sonuçları: PASS PASS PASS ------------------------------------------------------------------------------- Testler başarılı! Ajanın düşünceleri: Thought: Kod üretim aracı, bir Python işlevi olan largest_rectangle'i oluşturdu ve birim testleri başarılı olmuş; bu da işlevin doğru olduğunu göstermektedir. Son Cevap: Son cevap; en büyük dikdörtgenin alanını doğru bir şekilde hesaplayan Python işlevi largest_rectangle başarıyla oluşturulmuş ve test edilmiştir.

Farklı Görevler İçin Yapılandırma Dosyasına İşlevler Eklemek

Üst düzey ajana web araması veya hesap makinesi kullanma gibi yetenekler eklemek sadece yapılandırma dosyasına işlevler ekleyerek mümkündür. AgentIQ, başlangıç için birçok yararlı araç sunar. Ajanlar için varsayılan olarak mevcut olan araçların tam listesini AgentIQ araçlar klasöründe bulabilirsiniz.

Sonuç

Kod üretim problemleri, test zamanı hesaplama ölçeklendirmesi için mükemmel adaylar olarak öne çıkıyor çünkü bir çözümün doğru olup olmadığını belirlemek mümkün. Örneğin, test odaklı bir geliştirme ajansı önerilen çözümler üzerinde yineleme yapabilir ve yineleme sayısı yalnızca bir hesaplama bütçesi ile sınırlıdır. DeepSeek’in R1 modeli gibi akıl yürütme LLM’leri, bir hata ayıklama sürecinde kod üretim modelini doğru bir şekilde yönlendiren yansımalar sağlayabilir. Agentik araç kullanımı, hafıza ve planlama ile sisteme entegre edilebilir.

NVIDIA AgentIQ kütüphanesi, ajans sistemlerinin geliştirilmesini basit hale getiriyor ve yeniden kullanılabilir bileşenler ile tüm ekosistemle uyumlu, en iyi performans için optimize edilmiş basit bir araç seti sağlıyor. Farklı modelleri, çerçeveleri ve araçları kapsamlı ve optimize edilmiş bir araç seti altında birleştirerek, karmaşık, gerçek dünya görevlerini çözerek iş dünyasının geleceğini dönüştürüyoruz.

AgentIQ profil aracını kullanmayı öğrenmek için bu videoyu izleyin. AgentIQ Hackathon’a kaydolun ve açık kaynak araç setini kullanarak uygulamalı beceriler geliştirin, böylece ajans sistemlerinizi ilerletebilirsiniz.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri