Helium Agent Tasarımı

Helium Agent, Python ile oluşturulmuş hafif bir yapay zeka ajanıdır. Terminalinizde çalışır. Minimum karmaşıklık için tasarlanmıştır.

İşte yapım sürecindeki temel tasarım kararları:

• Mimari Sistem düz (flat) bir mimari kullanır. Ağır framework'lerden ve derin bağımlılık ağaçlarından kaçınırım. OpenAI fonksiyon çağırma (function calling) yerine <action> gibi XML etiketleri kullanırım. Bu, ajanı modelden bağımsız (agnostic) hale getirir. Herhangi bir LLM kullanabilirsiniz.

• Bağımlılık Enjeksiyonu (Dependency Injection) ile Birleştirilebilirlik AgenticLoop adlı basit bir döngü kullanıyorum. İki girdi kabul eder: bir model çağırıcı (model caller) ve bir araç yürütücü (tool executor). Bu tek seçim dört farklı moda olanak tanır:

  • Genel sohbet
  • Kodlama iş akışları
  • Alt ajanlar
  • Özel yetenekler Alt sınıflar (subclasses) veya karmaşık desenler kullanmıyorum. Sadece iki basit fonksiyon.

• Durum Yönetimi (State Management) Helium tek kullanıcılı bir araçtır. Konuşma geçmişi ve bellek için modül düzeyinde singleton'lar kullanıyorum. Global durum (global state), tek bir kullanıcı oturumunu temsil etmenin en basit yoludur. Aşırı mühendisliği (over-engineering) önler.

• Güvenlik Kapıları (Safety Gates) Araç yürütme için üç aşamalı bir sistem kullanıyorum:

  • Güvenli: Dosya okuma veya arama gibi görevleri otomatik olarak yürütür.
  • Riskli: Dosya yazma gibi görevler için kullanıcı izni gerektirir.
  • Koşullu: Tehlikeyi kontrol etmek için bash betikleri gibi komutları inceler. Bu, halüsinasyon gören bir modelin dosyalarınızı silmesini engeller.

• İletişim OpenAI SDK yerine ham (raw) HTTP istekleri kullanıyorum. Bu, bağımlılıkları azaltır ve kodu şeffaf tutar. API'ye tam olarak neyin gittiğini görürsünüz.

• Yetenek Sistemi (Skill System) Yetenekler sadece Markdown dosyalarıdır. YAML frontmatter içeren bir metin dosyası yazarak yeni bir yetenek ekleyebilirsiniz. Karmaşık bir kayıt (registration) API'si yoktur. Bu, eklenti sistemini herkes için kullanması kolay hale getirir.

• Çıkarılan Dersler

  1. Bağımlılık enjeksiyonu, düşük maliyetli bir birleştirilebilirlik sağlar.
  2. Sistem istemi (system prompt) sizin API'nizdir. Ona birinci sınıf bir kod parçası gibi davranın.
  3. Döngüsel bağımlılıkları (circular dependencies) düzeltmek için lazy import kullanmanız gerekiyorsa, modül sınırlarınız yanlıştır. Bunun yerine mimariyi düzeltin.

Basitlik ölçeklenir. Kendi özel kullanım durumunuz için çalışan en basit çözümü seçin.

Kaynak: https://dev.to/debmalyasen34/designing-helium-agent-1b39

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi