Alat CLI LLM saya sekarang bisa menjalankan tool dari kode Python atau plugin
(simonwillison.net)- LLM 0.26 menambahkan berbagai kemampuan eksekusi tool, sehingga beragam model LLM seperti OpenAI, Anthropic, Gemini, dan Ollama dapat memanfaatkan alat yang diimplementasikan sebagai fungsi Python atau plugin
- Tool dapat dipasang langsung atau diteruskan sebagai fungsi dari command line maupun Python API, sehingga ekstensibilitas dan fleksibilitas meningkat signifikan
- Melalui plugin tool, berbagai kemampuan seperti perhitungan matematika, eksekusi JavaScript, kueri SQL, dan integrasi layanan eksternal dapat ditambahkan ke model dengan mudah
- Semua vendor LLM utama dan model lokal semakin umum mengadopsi pola pemanggilan tool, dan LLM 0.26 juga mengintegrasikannya dengan cara yang terstandarisasi
- Untuk rencana dan arah pengembangan ke depan, sedang dibahas dukungan standar MCP, perluasan ekosistem pengembangan plugin, dan peningkatan log eksekusi tool
LLM 0.26: Dukungan menjalankan tool dengan model bahasa besar di terminal
Per 27 Mei 2025, versi LLM 0.26 telah dirilis. Ini merupakan perubahan terbesar sejak proyek LLM dimulai, dengan ditambahkannya dukungan alat (tool). Kini berbagai model LLM seperti OpenAI, Anthropic, Gemini, dan Ollama dapat dihubungkan dengan alat CLI dan library Python milik LLM, sehingga bisa mengakses tool apa pun yang dapat direpresentasikan sebagai fungsi Python.
Fitur dan perubahan utama
- Memasang dan memuat tool dari plugin: tool dapat didaftarkan dan digunakan melalui plugin yang terpasang dengan opsi
--tool/-T - Mengirim kode Python lewat command line: tool dapat digunakan dengan langsung meneruskan kode fungsi Python menggunakan opsi
--functions - Dukungan tool di Python API juga tersedia: tool dapat dihubungkan dengan mudah dengan meneruskan
tools=[nama_fungsi]ke metode.chain - Dukungan konteks sinkron dan asinkron: pemanggilan tool dapat dilakukan baik dalam situasi sync maupun async
Contoh penggunaan tool
Persiapan penggunaan
-
Perlu memasang atau meningkatkan ke versi LLM terbaru
-
Daftarkan API key seperti OpenAI:
llm keys set openai # masukkan API key -
Contoh menjalankan tool pertama:
llm --tool llm_version "What version?" --td- llm_version adalah tool demo sederhana yang disediakan bawaan
--tdadalah opsi output debug tool, untuk melihat proses pemanggilan tool dan isi respons
-
Mengganti model:
llm models default gpt-4.1-mini- Beragam model juga dapat digunakan lewat opsi (
-m o4-mini, dll.)
- Beragam model juga dapat digunakan lewat opsi (
-
Memanggil tool waktu bawaan:
llm --tool llm_time "What time is it?" --td -m o4-mini- Menampilkan informasi waktu dan zona waktu secara rinci
Dukungan berbagai model dan plugin
- Antarmuka tool yang sama bekerja di berbagai lingkungan model LLM seperti Anthropic Claude 4, Google Gemini 2.5 Flash, dan Ollama Qwen3:4b
- Contoh perintah:
llm install llm-anthropic -U llm keys set anthropic llm --tool llm_version "What version?" --td -m claude-4-sonnet
Operasi matematika dan eksekusi kode
- Keterbatasan LLM yang lemah dalam matematika dapat diatasi dengan tool Python
- Plugin llm-tools-simpleeval menyediakan dukungan operasi aritmetika yang aman
llm install llm-tools-simpleeval llm -T simpleeval llm -T simple_eval 'Calculate 1234 * 4346 / 32414 and square root it' --td- Jika
sqrt()tidak didukung, dapat diganti dengan** 0.5, sehingga fleksibilitas eksekusi kode tetap terjaga
- Jika
Pengenalan plugin tool
- [llm-tools-simpleeval]: perhitungan aritmetika dan ekspresi sederhana
- [llm-tools-quickjs]: tool interpreter sandbox JavaScript QuickJS
- [llm-tools-sqlite]: kueri SQL hanya-baca untuk database SQLite lokal
- [llm-tools-datasette]: mendukung eksekusi kueri SQL ke instance Datasette jarak jauh
Contoh:
llm install llm-tools-datasette
llm -T 'Datasette("https://datasette.io/content")' --td "What has the most stars?"
- Karena berupa plugin berbentuk toolbox, tool dapat dikonfigurasi lewat argumen seperti URL
- Saat kolom yang disebutkan salah, terjadi deteksi error tool dan percobaan ulang → melihat skema → lalu membuat kueri yang benar, yang menunjukkan kemampuan adaptif LLM
Mendefinisikan tool langsung dengan kode Python
- Dengan opsi
--functionsdi command line, fungsi Python arbitrer dapat diteruskan dan langsung dijadikan tool - Contoh:
llm --functions ' import httpx def search_blog(q): "Search Simon Willison blog" return httpx.get("https://simonwillison.net/search/", params={"q": q}).content ' --td 'Three features of sqlite-utils' -s 'use Simon search'- Dapat digunakan untuk membuat alat pencarian web sederhana
- Penting untuk mengarahkan model lewat system prompt agar arah penggunaan tool jelas
Pemanfaatan terintegrasi lewat library Python
- LLM mendukung baik CLI maupun Python API
- Metode
.chain()secara otomatis menangani rangkaian proses dari mendeteksi permintaan pemanggilan tool → mengeksekusinya → mencerminkan hasilnya - Contoh:
import llm def count_char_in_text(char: str, text: str) -> int: "How many times does char appear in text?" return text.count(char) model = llm.get_model("gpt-4.1-mini") chain_response = model.chain( "Rs in strawberry?", tools=[count_char_in_text], after_call=print ) for chunk in chain_response: print(chunk, end="", flush=True) - Fungsi asinkron (
async def) juga didukung sehingga dapat dijalankan secara bersamaan - Plugin toolbox juga dapat dihubungkan apa adanya dalam bentuk
tools=[Datasette(...)]
Perkembangan paradigma tool
- Pola pemanggilan tool diperkenalkan lewat makalah ReAcT tahun 2022 dan kemudian diadopsi oleh semua vendor LLM utama serta model lokal
- Tiap API memakai nama berbeda seperti "Function calling" atau "penggunaan tool", tetapi bentuknya makin seragam
- Ollama, llama.cpp, dan lainnya juga sudah menambahkan dukungan tool serta memperluas fiturnya
Cerita di balik pengembangan dan operasional
- LLM sudah lama menyadari perlunya dukungan integrasi tool, tetapi sulit merancang lapisan abstraksi yang bekerja di berbagai model
- Seiring standarisasi pola tool di antara vendor, implementasi terpadu di LLM 0.26 akhirnya menjadi mungkin
- Ini juga didemonstrasikan sebagai kasus penggunaan praktis di workshop PyCon US 2025
Hubungannya dengan “agent”
- Istilah "agent" masih memicu perdebatan, tetapi dalam ekosistem LLM saat ini bentuk "tool in the loop" semakin menjadi standar
- Implementasi LLM 0.26 juga cocok untuk pengembangan agent
- Ke depan, template untuk pembuatan plugin, isu peningkatan, dan dokumentasi plugin lanjutan sedang aktif dikerjakan
Dukungan Model Context Protocol (MCP) yang direncanakan
- MCP sedang naik daun sebagai protokol standar baru agar LLM dapat mengakses tool
- Dalam 8 hari terakhir, API vendor besar seperti OpenAI, Anthropic, dan Mistral juga dengan cepat mulai mengadopsinya
- Ke depan ada rencana menjadikan LLM sebagai klien MCP agar dapat terhubung mudah ke berbagai server MCP
Komunitas dan ekspansi
- Komunitas Discord dijalankan untuk membahas plugin proyek LLM, pengembangan tool, dan perluasan ekosistem
- Ditekankan bahwa kemungkinan pemanfaatan LLM berbasis tool di ekosistem open source nyaris tak terbatas
Dengan pendekatan tersebut, LLM 0.26 sedang berevolusi menjadi platform integrasi tool yang serbaguna dan dapat diperluas, serta terhubung dengan semua model LLM utama. Karena tool secara signifikan memperluas cakupan pemanfaatan model bahasa, ini menjadi alat yang sangat bermakna bagi developer dan praktisi IT.
1 komentar
Komentar Hacker News
Saya punya renderer Markdown streaming yang saya buat sendiri untuk alat ini
Detailnya bisa dilihat di Streamdown
Ada juga hal lain yang mungkin relevan di sini
Saya juga membuat alat tmux bernama llmehelp, yang dibangun di atas llm milik Simon
Sekarang sudah jadi alat wajib yang saya pakai setiap hari
Pustaka ini kelihatan sangat keren
Saya jadi berpikir akan bagus kalau ada hook yang memungkinkan plugin mengontrol sendiri bagian tampilan konten
Saya sudah membuat issue tentang itu di sini
Saya sertakan beberapa opsi desain, tapi saya masih belum merasa 100% yakin
Saya benar-benar ingin mendapat masukan
Ada satu hal lagi yang tadi saya lupa sebut
Kali ini plugin ZSH yang saya buat berbasis llm
Saya memakainya dengan zle untuk menerjemahkan bahasa Inggris langsung menjadi perintah shell sekaligus
Namanya Zummoner
Alat ini benar-benar mengubah hidup saya
Contohnya, perintah yang saya buat hari ini
Itu adalah perintah yang saya pakai di salah satu komentar di sini
Awalnya adalah
Saya kirim buffer ke openrouter dengan kombinasi ctrl-x x andalan saya, lalu dalam kurang dari satu detik kembali dengan sintaks yang benar
Keren
Saya juga pernah membuat renderer Markdown streaming dalam beberapa bahasa untuk menampilkan output LLM streaming dengan cepat
Senang rasanya tahu ternyata bukan cuma saya yang melakukan itu
Menarik, saya pasti akan mencobanya
Saya menggunakan llm bersama bat untuk penyorotan sintaks
Fitur seperti ini memang yang saya inginkan
Terima kasih
Alat seperti ini punya risiko footgun yang cukup tinggi
Dokumentasinya memang memperingatkan tentang prompt injection, tapi dalam praktiknya saya rasa kerusakan akibat kecerobohan sendiri justru akan lebih sering terjadi
Misalnya, kalau Anda memberi alat ini akses ke akun broker, otomatisasi trading jadi mungkin dilakukan
Bahkan tanpa prompt injection, tidak ada cara untuk mencegah bot melakukan transaksi bodoh
Dokumentasi terkait
Risiko kecelakaan seperti ini memang sangat besar
Saat Anda menghubungkan tools ke LLM sehingga ia bisa melakukan sesuatu atas nama Anda dengan panggilan yang terautentikasi, terlalu banyak hal tak terduga yang bisa terjadi
Kita bisa melihat fenomena ini dalam kasus GitHub MCP baru-baru ini dan semacamnya artikel terkait
Saya juga menampilkan peringatan risiko dengan sangat jelas di dokumentasi, dan bahkan sengaja tidak merilis plugin tool awal yang benar-benar bisa menyebabkan kerugian
Itulah sebabnya plugin QuickJS sandbox dan SQLite saya sepenuhnya read-only
Meski begitu, bidang ini sendiri ada di spektrum yang sangat menarik dan menakjubkan
Kalau ada orang yang menghubungkan llm ke akun broker mereka, itu lebih dekat ke manusia yang bodoh daripada bot yang bodoh
Alat apa pun punya risiko disalahgunakan
Untuk yang memakai llm, saya merekomendasikan Gtk-llm-chat
Dibangun dengan usaha yang luar biasa besar
Menyediakan integrasi desktop dengan alat baris perintah llm, ikon tray, dan jendela chat yang rapi
Versi 3.0.0 baru saja dirilis sebagai paket untuk 3 OS desktop utama
Saya penasaran bagaimana orang memakainya untuk hal lain selain chat biasa
Ini benar-benar timing yang sempurna
Akhir-akhir ini saya sedang bereksperimen dengan berbagai hal di terminal (Warp), dan walaupun saya suka ide menghadirkan agent, saya agak enggan dengan model ala Cursor yang seperti "percayakan saja prompt/panggilan LLM Anda kepada kami (dan bayar juga)"
Jadi saya hanya butuh agent terminal sederhana berbasis CLI untuk menutup kekurangan kemampuan shell saya
Saya sangat paham bahwa alat seperti ini punya risiko footgun yang besar
Tapi kombinasi alat terminal + llm terasa seperti pasangan yang sangat ringan dan ideal, jadi saya antusias
Saya penasaran apakah ini mendukung pendekatan seperti beberapa produk "agent" lain, di mana ketika llm memanggil tool seperti
rm -rf ./*, ia harus meminta izin setiap kali dengan semacam "tekan Y untuk menyetujui"Kalau begitu, setidaknya ada pengaman agar LLM tidak bebas mengendalikan terminal saya sesuka hati
Kalau dijalankan tanpa flag
--full-auto, ia akan meminta persetujuan setiap kaliSaya sedang rajin memelihara plugin zsh/omz untuk tab completion LLM CLI, tapi kecepatan rilis fitur-fitur baru membuatnya sulit untuk dikejar
Untungnya, perintah di bawah ini mengimplementasikan sekitar 90%-nya secara otomatis
Repo plugin saya ada di sini
Strukturnya agak rumit karena saya ingin mencakup sebanyak mungkin opsi berbeda
Saya akan sangat berterima kasih kalau bisa mendapat masukan
Generasi mendatang mungkin akan heran bagaimana kita dulu membuat apa pun
Rasanya sama seperti kita tak bisa membayangkan bagaimana para programmer assembly dulu bekerja
GPT-4.1 adalah model yang sangat kuat, dari output terstruktur sampai tool calling
Selama dua tahun terakhir, hampir semua tugas rutin saya sehari-hari ditangani oleh LLM
Kombinasi model yang murah tapi sangat mampu, jadi ini selalu jadi model default pilihan saya
Setelah mencoba semuanya lewat API, model ini sangat murah sekaligus benar-benar menangani sebagian besar hal dengan baik
Untuk coding saya pakai o4-mini, selain itu biasanya 4.1-mini sudah cukup
Kasus iseng yang saya pakai hari ini Saya mengalirkan kode demo CSS Minecraft yang luar biasa bagus tanpa satu pun komentar agar dijelaskan oleh GPT-4.1 mini
Demo sumber terkait source
Jawaban GPT-4.1 mini benar-benar luar biasa
Ia bahkan tepat mengidentifikasi trik-trik sulit, seperti "CSS ini menggunakan teknik CSS mutakhir untuk membangun UI 3D interaktif bergaya voxel dengan JavaScript seminimal mungkin"
Penjelasan lengkap
3.813 token input, 1.291 token output
Hasil perhitungan sekitar 0,3591 sen, hanya sekitar sepertiga dari 1 sen
Alat buatan Simon benar-benar hebat
Saya memakainya setiap hari
Berkat kombinasi pipe dan kemudahan berpindah model dengan cepat, baik lokal maupun remote seperti ollama, pekerjaan jadi jauh lebih mudah
Ini sangat keren
Setahu saya llama.cpp juga mendukung tools, tapi saya belum menemukan cara menghubungkannya di llm
Saya penasaran apakah ini bisa diselesaikan dengan menambahkan sesuatu ke extra-openai-models.yaml
... setelah saya coba, cara kedua ternyata berhasil Lalu di jendela terpisah Ringkasannya saya tulis di sini
Terima kasih banyak untuk rilisan kali ini
Saya merasa pustaka ini adalah komponen inti yang benar-benar membuka seluruh potensi LLM di luar batasan dan kendala klien-klien yang ada
Sejak versi alpha 0.26 dirilis, saya ingin membuat plugin yang berinteraksi dengan server MCP, tapi rasanya cukup sulit
Untuk sekarang saya baru berhasil membuatnya bisa terhubung dan mengambil tools secara dinamis, tapi belum sampai bisa meneruskan parameternya
Saya berusaha sebisa mungkin membuat demo plugin sederhana, tapi memang tidak mudah
Pustaka Python mcp resmi meminta hal-hal seperti menjalankan asyncio, terhubung ke server, dan introspeksi tool yang tersedia
Fitur yang sudah lama saya nantikan
Saya tadinya menduga implementasinya akan berbasis mcp atau openapi, tapi pendekatan sekarang mungkin justru jauh lebih sederhana dan fleksibel
Rasanya ini juga tidak akan sulit diimplementasikan sebagai plugin