2 puan yazan GN⁺ 2025-06-29 | 1 yorum | WhatsApp'ta paylaş
  • SymbolicAI, nöro-sembolik programlama çerçevesi olarak Python programlama ile LLM'leri doğal biçimde birleştirir
  • Temel birim olan Symbol nesnesi üzerinden hem sözdizimsel (syntactic) hem de anlamsal (semantic) işlemleri destekler
  • Contract'lar özelliği, LLM tahminlerine veri doğrulama ve otomatik düzeltme mantığı uygulayarak güvenilirlik ve dayanıklılık sağlar
  • Çeşitli harici motorlarla (OpenAI, Anthropic, huggingface vb.), web araması, görsel üretimi ve ses işleme ile entegre çalışabilir
  • Öncelik tabanlı yapılandırma yönetim sistemi ve güçlü özelleştirme yetenekleriyle öne çıkar

SymbolicAI: proje özeti ve önemi

  • SymbolicAI, klasik Python programlama ile farklılaştırılmış, programlanabilir LLM'lerin (büyük dil modelleri) birleşimini doğal şekilde destekleyen bir nöro-sembolik (Neuro-Symbolic) kütüphanedir
  • Modüler tasarımı sayesinde genişletme, motor değiştirme ve araç entegrasyonu kolayca yapılabilir
  • Local motorlar, web araması, görsel üretimi gibi çeşitli araçlarla entegre olduğundan hem deneysel hem de pratik kullanım için uygundur

Temel kavramlara giriş

Primitives

  • Primitives, temel yapı taşlarıdır; bunların merkezinde Symbol nesnesi yer alır

  • Symbol nesnesi hem sözdizimsel (syntactic) hem de anlamsal (semantic) modu destekler

    • Sözdizimsel (syntactic): Normal Python değerleri gibi davranır; karşılaştırma, işlemler vb. için güvenli ve hızlı çalışma sağlar
    • Anlamsal (semantic): Nöro-sembolik motora bağlanarak anlamı ve bağlamı kavrar, esnek anlamsal karşılaştırma/işlem yapabilir
  • Varsayılan mod sözdizimsel olandır; yalnızca motor çalışması gerektiğinde anlamsal işleme geçilebilir

Anlamsal/sözdizimsel modlar arasında geçiş

  • Oluşturulurken semantic=True seçeneğini belirtme
  • .sem (semantic), .syn (syntactic) özellikleriyle serbestçe geçiş
  • Anlamsal fonksiyon çağrılarında (map vb.) otomatik olarak anlamsal moda dönüşüm

İşlem örnekleri

  • == : sözdizimsel modda birebir karşılaştırma, anlamsal modda anlamsal eşdeğerlik (ör. 'Hi' == 'Hello' True)
  • +, &, .startswith(), .choice(), .foreach(), .cluster(), .similarity() vb.
  • Karmaşık anlam temelli işlemler ve mantıksal zincirleme mümkündür

Contracts

  • LLM'lerin belirsizliğini telafi etmek için Design by Contract ilkesi benimsenmiştir
  • Veri modeli ve doğrulama kuralları dekoratörlerle tanımlanır
  • Hatalı giriş/çıkışlar için otomatik hata düzeltme, yeniden deneme, geçmiş biriktirme gibi çeşitli dayanıklılık özellikleri sunar
  • Pydantic veri modelleriyle uyumluluk, alan doğrulaması, otomatik prompt üretimi ve hata işleme gibi yetenekler yerleşik olarak gelir

Contract özelliğinin başlıca özellikleri

  • pre_remedy/post_remedy: giriş/çıkış hatalarını otomatik düzeltme
  • accumulate_errors: hata geçmişini girdiye ekleme
  • remedy_retry_params: yeniden deneme kontrol parametrelerini belirtme (deneme sayısı, gecikme, backoff vb.)

Ayrıntılı örnekler ve ek açıklamalar için resmi dokümantasyon ve DeepWiki sayfasına bakılabilir

Harici motorlar ve işlev genişletilebilirliği

  • Şu anda OpenAI, Anthropic gibi çeşitli nöro-sembolik motorları destekler (API/local)
  • {huggingface, llama.cpp} gibi kendi motorları local olarak çalıştırılabilir
  • Ses, görsel, web araması gibi ek motorlarla entegrasyon mümkündür (ayrı bağımlılık paketlerinin kurulması gerekir)
  • Arama, kümeleme, OCR, indeksleme gibi gerçek dünya ML/yapay zeka işlevlerini bütünleşik şekilde sunar

Yapılandırma (Configuration) yönetim sistemi

Öncelik tabanlı yapılandırma dosyası yönetimi

  • Debug modu (proje klasörü): geliştirme ve test için

  • Python ortamına özel ayarlar ({python_env}/.symai/)

  • Global ayarlar (~/.symai/): varsayılan/yedek amaçlı

  • Bu üç konumdaki yüksek öncelikli öğeler otomatik olarak uygulanır

Başlıca yapılandırma dosyaları

  • symai.config.json: SymbolicAI'nin temel seçeneklerini yönetir
  • symsh.config.json, symserver.config.json: shell ve sunucu ayarları

Yapılandırma dosyası örnekleri

  • API key, model adı, motor türü vb. açıkça belirtilebilir
  • SUPPORT_COMMUNITY seçeneğiyle veri toplama onayı verilebilir (araştırma ve kalite iyileştirme amacıyla)
  • Kullanıcı uyarıları SYMAI_WARNINGS ortam değişkeniyle açılıp kapatılabilir

Ortam kurulumu ve test

  • ffmpeg (ses), chromedriver (web crawler) gibi harici paketler gerekir
  • Test çalıştırma için pytest kullanılır, kapsam kontrolü de desteklenir

Referans materyalleri ve kullanım rehberi

  • DeepWiki ve resmi GitBook üzerinde zengin referans materyalleri ve video eğitimleri sunulur
  • Arxiv'de yayımlanan makalede teori ve çerçevenin ayrıntıları açıklanır
  • BSD-3-Clause lisansı uygulanır

Sonuç

  • SymbolicAI, sembolik sistemlerin açıklığını ve sinir ağlarının esnekliğini birleştirerek LLM tabanlı, güvenilirlik odaklı servisler ve deneysel araştırmalar için son derece uygun bir çerçeve sunar
  • Yapılandırma, genişletilebilirlik ve güvenilirlik sağlamaya odaklanan tasarımıyla startup'lara ve IT profesyonellerine çeşitli uygulama olanakları sağlar

Geliştirici ve topluluk desteği

  • Katkı kaynakları, iletişim bilgileri ve destek kanalları (e-posta, web sitesi, Discord) açık biçimde paylaşılır

1 yorum

 
GN⁺ 2025-06-29
Hacker News görüşleri
  • Bu tür bir vodoo büyüsü gerçekten çok ilginç.
    Hoşuma giden örneklerden biri anlamsal map lambda kullanımıydı,
    örneğin S adında bir Symbol listesi varken S.map('tüm meyveleri sebzeye dönüştür') çağrıldığında yalnızca meyveler sebzeye dönüşüyor, diğerleri olduğu gibi kalıyor
    Ayrıca bağlama göre parametre alıp karşılaştırma da yapılabiliyor. Örneğin selamlama bağlamında 'Hello, good morning!' ile 'Hi there, good day!' ifadelerinin aynı anlama gelip gelmediğini belirlemek ya da nezaket seviyesi açısından 'Good morning, sir.' ile 'Hey, what’s up?' ifadelerini karşılaştırmak mümkün
    Bunun yanında bit operatörleri gibi anlamsal olarak mantıksal birleştirmeler de yapılabiliyor. Madde işaretleri gibi kurallar ve gözlemler & ile birleştirilip sonuç çıkarılabiliyor
    interpret() fonksiyonu güçlü görünüyor
    OP’ye bu projeye ilham veren şeylerin ne olduğunu, bunu hangi alanlarda gerçekten uyguladığını ve en sevdiği kullanım örneğinin hangisi olduğunu merak ediyorum

    • python dataframe kütüphanesi Lotus’u tavsiye ederim
      Tüm temel ilişkisel işlemleri kolayca anlamsal olarak genişletip kullanmayı sağlıyor
      Her çağrı bir "model" noktası haline geliyor, bu da sonradan makine öğrenmesi tarafına genişletmeyi kolaylaştırıyor
      snowflake gibi bulut SQL sistemleri de giderek bu yöne gidiyor gibi hissettiriyor
      louie.ai’de benzer bir sistem kurduk. AI notebook, dashboard ve API üzerinden (splunk, databricks, graph db vb.) verilerle etkileşimli biçimde çalışıyor ve bağlama göre symbolic + semantic operator’ları otomatik olarak tespit ediyor
      Gerçek iş ortamında gerçekten çok yardımcı oluyor
      Benim başlıca kullanım senaryom şu:
      semantic map ile splunk indeksinden uyarıları alıp şüpheli olanlara işaret eklemek, açıklama alanı da doldurmak,
      sonra bunu semantic reduce ile özetleyip doğal dilde rapora dönüştürmek

    • Havuç neden elmanın sebzeye dönüştürülmüş hali diye soruyor

    • Yanıtlamaya kalkarsam çok uzun olacak bir konu
      Proje 2022 sonlarında başladı ama son dönemde sadece modeller iyileşti; temel kısımların çoğu zaten GPT-3 döneminden beri vardı
      Yakın zamanda ortaya çıkan DbC (Design by Contract) gerçekten çok özgün
      Ajanlarla ilgili yaşadığım tüm sorunları çözüyor. Özellikle birden fazla contract zincirlenince guardrail’ler doğal biçimde yayılıyor ve çok etkili oluyor
      Neredeyse tüm özel araçları kendim geliştirdim
      Mesela OpenAI’nin web search aracı iyi ama özelleştirme açısından yetersiz, bu yüzden kendi deep research agent’ımı geliştirip kullanıyorum
      İlk gün çıktısına örnek thread
      Bir şirket işletiyorum ve 3 contract’ı zincirleyerek uçtan uca belge üretim otomasyonu da kurdum
      Demo PDF incelenebilir
      Girdi prompt’u şuydu:
      “Dosyalardaki kalıpları analiz et, çeşitli prompt formatlarını (XML, markdown vb.), dalkavukluk eğilimini, araç kullanım biçimini, etik guardrail’leri, mimari özellikleri ve benzer unsurları genel olarak karşılaştıran bir rapor üret”
      Contract kavramını 2025 Mart’ında bu yazıda tanıtmıştım; o zamandan beri çok gelişti ama temel niyet ve motivasyon aynı kaldı

  • Anlamsal ==, + gibi operatörleri kullanabilmek, yeni fikirleri besleyen bir gübre gibi geliyor
    Word embedding’in ilk çıktığı dönemde “King - Man + Woman = Queen” örneğiyle kavramsal cebir fikriyle ilk kez karşılaştığım zamanki heyecana benziyor
    Yine de buradaki sinir ağı ve sembolik (logic) bütünleşmesi, çoğu sistemde olduğu gibi, hâlâ yüzeysel ya da birbirinden ayrık durumda
    Referans
    Gerçek devrim, ileride çok daha temel bir bütünleşme sağlandığında mümkün olacak
    Biz de şirketimizde (Onton) bunun üzerine çalışıyoruz
    Hedeflerimiz: 1) tamamen bütünleşik bir temsil (ne sadece sembolik ne de sadece derin öğrenme), 2) az gürültülü veriyle bile sürekli öğrenme (unutma yok), 3) matematiksel/sembolik işlemlerde %100 güvenilirlik, 4) sıfır halüsinasyon
    Şu anda sıcak silikon tabancası misali farklı sistemleri birbirine yapıştırmak işe yarıyor ama birleşik mimariler oyunun kurallarını değiştirecek gibi görünüyor

  • Açıklamaların ve örneklerin iyi verildiği resmî kod notebook’u ile resmî makale PDF’i bağlantılarını paylaşıyor

  • Koddaki bir hatayı bildiriyor (correctness contracts içinde valid_sizes tanımlı değil)

    • Geri bildirim için teşekkürler. Refactor sürecinden kalan bir izdi. Şimdi düzelttim
  • Bu konuda görüş bildiren ve destek veren herkese teşekkürler
    Böyle bir tepki beklemiyordum ve isteyen herkes e-posta ya da tweet ile ulaşabilir
    Sizinle sohbet etmek gerçekten çok güzeldi

  • Bir rahatsızlığım var
    “Symbolic AI” teriminin kendisi zaten açıkça tanımlanmış

    • Bu görüşü fazlasıyla duydum
      Yakında ismi değiştirebilirim
      Makalede de adlandırma gerekçesini dipnotta açıkladım; projeyi, bu temel araştırma alanına öncülük eden Newell ve Simon’a saygı göstergesi olarak böyle adlandırdım
  • Merak ettiğim bir şey var
    Maliyet politikası nasıl
    Doğal dil işlemleri içeren tek bir satır her çalıştırıldığında (özellikle dış API kullanılıyorsa) sürekli LLM çıkarım maliyeti mi oluşuyor
    Örneğin "symbolic" fonksiyonu bir döngü içinde sürekli çağrıldığında da durum böyle mi

    • Evet
      Örneğin OpenAI API kullanıldığında, her anlamsal işlem için bir OpenAI çağrısı yapılıyor ve maliyet oluşuyor
      llama.cpp gibi bir araçla yerel LLM’i kendiniz host ederseniz yalnızca barındırma maliyeti olur, ayrıca çıkarım ücreti ödemezsiniz

    • Kesinlikle cache benzeri bir şeye ihtiyaç olacaktır

  • Bunu hiç beklemiyordum ama bir anda çok popüler olmasına biraz şaşırdım
    Normalde şu anda uyuyor olmam gerekirdi ama mevcut uykusuzluk XP’mi kullanarak sohbete katılmayı sürdürüyorum

  • Fonksiyonel programlamadaki (FP) gibi, tüm Symbol’ler saf değerler gibi davranıyor
    İşlemler temiz ve izlenebilir bir akış halinde birleştiriliyor
    Belirsiz aşamalarda model devreye giriyor
    FP’deki IO işlemleri gibi, üretici model çağrıları da kapsam içindeki yan etkiler olarak ele alınıyor
    Normal durumda reasoning grafiği deterministik; yalnızca gerektiğinde modele devrediliyor
    Demo gerçekten etkileyici

    • Neredeyse doğru
      En baştan beri fonksiyonel olacak şekilde tasarladım
      Düşük seviyede bile her şey fonksiyonel ilkelere dayanıyor ve içeride de functional.py ya da core.py gibi adlar kullanılıyor
      Refactor, genişletme ve bug yönetimi açısından çok yardımcı olduğu için dekoratörler de her yere yayılmış durumda
  • Bu aralar LLM’ler tüm kodu da yazabiliyor,
    bu yüzden Symbol gibi bağlam taşıyan ve python operator’larıyla kolayca manipüle edilen bir yapının,
    insanların tek tek kontrol ederek kod yazmasına kıyasla hangi avantajı sağladığını merak ediyorum
    Mesela anlamsal dönüşümü bu tür bir söz dizimiyle doğrudan yazmak mümkün ama, meyve listesini sebzeye dönüştüren programı üretmesini LLM’den istemek de mümkün değil mi
    Temel farkın ne olduğunu anlamak istiyorum

    • Bunun halüsinasyonu azaltma etkisi olduğunu düşünüyorum
      LLM’nin biçimsel bir sistem üretmesini sağlarsanız, bunu doğrulamak genel amaçlı bir sisteme göre çok daha kolay olur