2 poin oleh GN⁺ 2025-06-29 | 1 komentar | Bagikan ke WhatsApp
  • SymbolicAI adalah framework pemrograman neuro-simbolik yang menggabungkan pemrograman Python dan LLM secara alami
  • Melalui objek Symbol sebagai unit dasar, framework ini mendukung manipulasi sintaktik (sintactic) dan semantik (semantic)
  • Fitur Contracts menerapkan validasi data dan logika perbaikan otomatis pada prediksi LLM untuk menjamin keandalan dan ketahanan
  • Dapat dioperasikan bersama berbagai engine eksternal (OpenAI, Anthropic, huggingface, dll.), pencarian web, pembuatan gambar, dan pemrosesan suara
  • Memiliki sistem manajemen konfigurasi berbasis prioritas serta kemampuan kustomisasi yang kuat

SymbolicAI: Gambaran Proyek dan Pentingnya

  • SymbolicAI adalah library neuro-simbolik (Neuro-Symbolic) yang secara alami mendukung penggabungan pemrograman Python klasik dengan LLM (large language model) yang dapat diprogram dan berbeda dari pendekatan biasa
  • Berkat desain modular, framework ini mudah untuk diperluas, mengganti engine, dan mengintegrasikan tool
  • Terhubung dengan berbagai alat seperti engine lokal, pencarian web, dan pembuatan gambar, sehingga cocok untuk penggunaan eksperimental maupun praktis

Pengenalan Konsep Utama

Primitives

  • Primitives adalah unit penyusun dasar, dengan inti berupa objek Symbol

  • Objek Symbol mendukung mode sintaktik (syntactic) dan semantik (semantic)

    • Sintaktik (syntactic): bekerja seperti nilai Python biasa, sehingga perbandingan, operasi, dan perilaku aman serta cepat dapat dijalankan
    • Semantik (semantic): terhubung ke engine neuro-simbolik untuk memahami makna dan konteks, serta memungkinkan perbandingan/manipulasi makna yang fleksibel
  • Mode sintaktik adalah default, dan pemrosesan semantik hanya diaktifkan saat operasi engine diperlukan

Cara Beralih antara Mode Semantik/Sintaktik

  • Menentukan opsi semantic=True saat pembuatan
  • Beralih bebas melalui properti .sem (semantic) dan .syn (syntactic)
  • Otomatis berubah ke mode semantik saat memanggil fungsi semantik (seperti map)

Contoh Operasi

  • == : pada mode sintaktik adalah perbandingan literal, pada mode semantik adalah kesetaraan semantik (mis.: 'Hi' == 'Hello' bernilai True)
  • +, &, .startswith(), .choice(), .foreach(), .cluster(), .similarity() dan lain-lain
  • Mendukung manipulasi berbasis makna yang kompleks dan chaining logis

Contracts

  • Mengadopsi prinsip Design by Contract untuk melengkapi ketidakpastian LLM
  • Model data dan aturan validasi ditentukan dengan dekorator
  • Mendukung berbagai fitur stabilitas seperti perbaikan kesalahan otomatis, percobaan ulang, dan akumulasi riwayat untuk input/output yang salah
  • Kompatibel dengan model data Pydantic dan memiliki validasi field, pembuatan prompt otomatis, penanganan error, dan lainnya secara bawaan

Fitur Utama Contracts

  • pre_remedy/post_remedy: perbaikan otomatis untuk kesalahan input/output
  • accumulate_errors: memasukkan riwayat kesalahan
  • remedy_retry_params: menetapkan parameter kontrol retry (jumlah percobaan, delay, backoff, dll.)

Contoh yang lebih rinci dan penjelasan tambahan tersedia di dokumentasi resmi dan halaman DeepWiki

Engine Eksternal dan Ekstensibilitas Fitur

  • Saat ini mendukung berbagai engine neuro-simbolik seperti OpenAI, Anthropic dan lainnya (API/lokal)
  • Dapat menjalankan engine sendiri secara lokal seperti {huggingface, llama.cpp}
  • Dapat diintegrasikan dengan engine tambahan seperti suara, gambar, dan pencarian web (memerlukan instalasi paket dependensi terpisah)
  • Menyediakan fitur ML/AI praktis secara terpadu seperti pencarian, clustering, OCR, dan indexing

Sistem Manajemen Konfigurasi

Manajemen File Konfigurasi Berbasis Prioritas

  • Mode debug (folder proyek): untuk pengembangan dan pengujian

  • Pengaturan per lingkungan Python ({python_env}/.symai/)

  • Pengaturan global (~/.symai/): untuk default/cadangan

  • Dari ketiga lokasi tersebut, item dengan prioritas lebih tinggi akan diterapkan secara otomatis

File Konfigurasi Utama

  • symai.config.json: mengelola opsi utama SymbolicAI
  • symsh.config.json, symserver.config.json: konfigurasi untuk shell dan server

Contoh File Konfigurasi

  • Menentukan secara eksplisit API Key, nama model, jenis engine, dan lain-lain
  • Opsi SUPPORT_COMMUNITY untuk persetujuan pengumpulan data (untuk riset dan peningkatan kualitas)
  • Dapat mengaktifkan/menonaktifkan peringatan pengguna melalui variabel lingkungan SYMAI_WARNINGS

Penyiapan Lingkungan dan Pengujian

  • Memerlukan paket eksternal seperti ffmpeg (suara), chromedriver (web crawler), dan lainnya
  • Pengujian dapat dijalankan dengan pytest, serta mendukung pemeriksaan cakupan

Materi Referensi dan Panduan Pemanfaatan

  • DeepWiki dan GitBook resmi menyediakan referensi yang kaya serta tutorial video
  • Paper yang dipublikasikan di Arxiv menjelaskan teori dan detail framework
  • Menggunakan lisensi BSD-3-Clause

Kesimpulan

  • SymbolicAI adalah framework yang sangat cocok untuk layanan berfokus keandalan berbasis LLM dan riset eksperimental, dengan menggabungkan kejelasan sistem simbolik dan fleksibilitas jaringan saraf
  • Dengan desain yang berfokus pada konfigurasi, ekstensibilitas, dan jaminan keandalan, framework ini menawarkan berbagai kemungkinan penerapan bagi startup dan praktisi IT

Dukungan untuk Pengembang dan Komunitas

  • Sumber daya kontribusi, kontak, dan kanal dukungan (email, website, Discord) tersedia secara terbuka

1 komentar

 
GN⁺ 2025-06-29
Komentar Hacker News
  • Sihir voodoo seperti ini benar-benar menarik.
    Contoh yang menurutku seru adalah penggunaan semantic map lambda,
    misalnya jika ada daftar Symbol bernama S, saat memanggil S.map('ubah semua buah menjadi sayuran'), hanya buah yang berubah menjadi sayuran sementara yang lain tetap sama
    Selain itu, parameter juga bisa diterima untuk perbandingan berdasarkan konteks. Misalnya menentukan apakah 'Hello, good morning!' dan 'Hi there, good day!' bermakna sama dalam konteks salam, atau membandingkan 'Good morning, sir.' dan 'Hey, what’s up?' berdasarkan tingkat kesopanan
    Operasi logis juga tampaknya bisa digabungkan secara semantik seperti operator bit. Aturan dan observasi bisa digabungkan dengan & layaknya bullet untuk menarik kesimpulan
    Fungsi interpret() terlihat sangat powerful
    Aku penasaran apa yang menginspirasi OP membuat proyek ini, di bidang apa sudah diterapkan, dan contoh penggunaan favoritnya apa

    • Merekomendasikan library dataframe Python bernama Lotus
      Semua operasi relasional inti bisa dengan mudah diperluas secara semantik
      Setiap pemanggilan menjadi titik 'model', jadi nanti juga mudah diperluas ke arah machine learning
      Cloud SQL seperti Snowflake juga terasa makin bergerak ke arah ini
      Di louie.ai kami membuat sistem serupa. Melalui AI notebook, dashboard, dan API, kami menangani data secara percakapan dari sumber seperti Splunk, Databricks, graph db, dan lain-lain, lalu secara otomatis memahami symbolic + semantic operator berdasarkan konteks
      Ini sangat membantu di pekerjaan nyata
      Use case utamaku adalah:
      mengambil alert dari indeks Splunk dengan semantic map, menambahkan flag pada yang mencurigakan, serta mengisi kolom deskripsi,
      lalu merangkumnya dengan semantic reduce hingga akhirnya menghasilkan laporan dalam bahasa alami

    • Pertanyaan tentang mengapa wortel menjadi hasil transformasi sayuran dari apel

    • Ini akan jadi jawaban yang sangat panjang
      Proyek ini dimulai sejak akhir 2022, tetapi belakangan ini modelnya saja yang makin bagus; fondasi dasarnya sebenarnya sudah ada sejak era GPT-3
      DbC (Design by Contract) yang muncul belakangan benar-benar unik
      Ini menyelesaikan semua masalah yang pernah kualami terkait agen. Terutama jika beberapa contract dirangkai berantai, guardrail menyebar secara alami sehingga sangat efektif
      Hampir semua tool kustom kuimplementasikan sendiri
      Misalnya, web search milik OpenAI memang bagus, tetapi kurang bisa dikustomisasi, jadi aku mengembangkan dan memakai deep research agent milikku sendiri
      Thread contoh hasil hari pertama
      Aku juga sedang menjalankan perusahaan, dan dengan menghubungkan 3 contract, aku sudah membangun otomatisasi pembuatan dokumen end-to-end
      Lihat demo PDF
      Prompt inputnya adalah,
      “analisis pola dalam file, bandingkan secara menyeluruh berbagai format prompt (XML, markdown, dll.), kecenderungan menjilat, cara penggunaan tool, guardrail etis, karakteristik arsitektural, dan buat laporan”
      Contract diperkenalkan pada Maret 2025 dalam posting ini, dan sejak itu sudah banyak berkembang, tetapi tujuan dasar dan motivasinya tetap sama

  • Fakta bahwa operator semantik seperti == dan + bisa digunakan terasa seperti pupuk bagi ide-ide segar
    Rasanya mirip saat pertama kali melihat aljabar konsep di masa awal word embedding, seperti 'King - Man + Woman = Queen'
    Namun integrasi antara jaringan saraf dan simbol (logika) di sini, seperti kebanyakan sistem lain, masih dangkal atau terpisah
    Referensi
    Terobosan nyata baru akan mungkin saat integrasi yang jauh lebih mendasar tercapai
    Di perusahaan kami (Onton) kami juga meneliti ke arah sana
    Tujuannya adalah 1) representasi yang sepenuhnya terintegrasi, bukan simbolik maupun deep learning semata, 2) pembelajaran berkelanjutan meski dengan data berisik yang sedikit tanpa pelupaan, 3) keandalan 100% untuk operasi matematika/simbol, 4) nol halusinasi
    Saat ini pendekatan menempelkan banyak sistem seperti lem panas memang berguna, tetapi arsitektur yang benar-benar terintegrasi rasanya akan mengubah permainan

  • Membagikan tautan ke notebook kode resmi dan PDF paper resmi yang berisi penjelasan dan contoh dengan baik

  • Laporan bug di kode (valid_sizes tidak didefinisikan di 'correctness contracts')

    • Terima kasih atas masukannya. Itu sisa dari proses refactoring. Sekarang sudah diperbaiki
  • Terima kasih kepada semua yang telah memberi pendapat dan dukungan tentang topik ini
    Aku tidak menyangka reaksinya akan seperti ini, dan siapa pun boleh menghubungiku lewat email atau tweet kapan saja
    Senang sekali bisa berbincang dengan kalian

  • Ada satu hal yang disayangkan
    Istilah 'Symbolic AI' sendiri sudah punya definisi yang mapan

    • Pendapat itu sudah sering kudengar
      Sepertinya mungkin namanya akan diganti dalam waktu dekat
      Di paper juga aku menambahkan catatan kaki tentang alasan penamaan ini, dan proyek ini dinamai sebagai bentuk penghormatan kepada Newell dan Simon yang memimpin riset dasarnya
  • Ada hal yang membuat penasaran
    Bagaimana kebijakan biayanya
    Apakah setiap kali menjalankan satu baris yang berisi operasi bahasa alami, apalagi jika memakai API eksternal, biaya inferensi LLM akan terus muncul
    Misalnya apakah itu juga terjadi saat fungsi "symbolic" dipanggil terus-menerus di dalam loop

    • Ya
      Misalnya jika memakai API OpenAI, setiap operasi semantik akan memicu panggilan OpenAI dan menimbulkan biaya
      Jika meng-host LLM lokal sendiri dengan llama.cpp atau yang sejenis, hanya ada biaya hosting tanpa biaya inferensi terpisah

    • Sepertinya cache semacam itu pasti diperlukan

  • Aku tidak menyangka ini akan mendadak begitu populer jadi agak kaget
    Sebenarnya aku seharusnya sedang tidur, tapi sekarang aku terus ikut berdiskusi sambil memanfaatkan pengalaman kurang tidur

  • Seperti functional programming (FP), semua Symbol berperan sebagai nilai murni
    Operasi-operasinya tersusun menjadi alur yang bersih dan bisa ditelusuri
    Model ikut campur hanya di tahap yang ambigu
    Seperti operasi IO dalam FP, pemanggilan model generatif diperlakukan sebagai efek samping yang dibatasi ruang lingkupnya
    Biasanya graph reasoning bersifat deterministik dan hanya didelegasikan ke model saat diperlukan
    Demonya benar-benar menakjubkan

    • Hampir tepat
      Dari awal memang dirancang secara fungsional
      Bahkan di level rendah pun semuanya mengikuti prinsip fungsional, dan secara internal juga disebut functional.py atau core.py
      Decorator juga dipakai di mana-mana, jadi sangat membantu untuk refactoring, ekspansi, dan penanganan bug
  • Sekarang LLM bahkan bisa menulis seluruh kode,
    jadi aku penasaran kelebihan struktur seperti Symbol yang menyimpan konteks dan bisa dimanipulasi dengan mudah lewat operator Python
    dibanding manusia menulis kode sambil memeriksa semuanya satu per satu
    Misalnya transformasi semantik bisa saja ditulis langsung dengan sintaks seperti itu, tetapi bukankah kita juga bisa cukup mem-prompt LLM untuk membuat program yang mengubah daftar buah menjadi sayuran
    Aku ingin memahami apa perbedaan yang mendasarinya

    • Menurutku ini membantu mencegah halusinasi
      Jika LLM diminta menghasilkan sistem formal, verifikasinya jauh lebih mudah dibanding sistem serbaguna