SymbolicAI: Perspektif Neuro-Simbolik terhadap LLM
(github.com/ExtensityAI)- 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
Symbolmendukung 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=Truesaat 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
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 samaSelain 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 kesimpulanFungsi
interpret()terlihat sangat powerfulAku 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 segarRasanya 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_sizestidak didefinisikan di 'correctness contracts')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
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
Dari awal memang dirancang secara fungsional
Bahkan di level rendah pun semuanya mengikuti prinsip fungsional, dan secara internal juga disebut
functional.pyataucore.pyDecorator 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
Jika LLM diminta menghasilkan sistem formal, verifikasinya jauh lebih mudah dibanding sistem serbaguna