3 poin oleh GN⁺ 2025-05-28 | 1 komentar | Bagikan ke WhatsApp
  • 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

  1. Perlu memasang atau meningkatkan ke versi LLM terbaru

  2. Daftarkan API key seperti OpenAI:

    llm keys set openai
    # masukkan API key
    
  3. Contoh menjalankan tool pertama:

    llm --tool llm_version "What version?" --td
    
    • llm_version adalah tool demo sederhana yang disediakan bawaan
    • --td adalah opsi output debug tool, untuk melihat proses pemanggilan tool dan isi respons
  4. Mengganti model:

    llm models default gpt-4.1-mini
    
    • Beragam model juga dapat digunakan lewat opsi (-m o4-mini, dll.)
  5. 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

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 --functions di 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

 
GN⁺ 2025-05-28
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

        $ git find out if abcdefg is a descendent of hijklmnop 
      

      Itu adalah perintah yang saya pakai di salah satu komentar di sini

        $ for i in $(seq 1 6); do 
         printf "%${i}sh${i}\n\n-----\n" | tr " " "#"; 
        done | pv -bqL 30 
      

      Awalnya adalah

        $ for i in $(seq 1 6); do 
         printf "(# $i times)\n\n-----\n"
        done | pv (30 bps and quietly)
      

      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

    • Menarik
      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

    • Mode default Codex CLI sepertinya memang seperti itu
      Kalau dijalankan tanpa flag --full-auto, ia akan meminta persetujuan setiap kali
  • Saya 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

    llm -f README.md -f llm.plugin.zsh -f completions/_llm -f https://simonwillison.net/2025/May/27/llm-tools/ "implement tab completions for the new tool plugins feature"
    

    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

    • Sungguh menakjubkan bahwa ini bukan lagi fiksi ilmiah, tapi kenyataan kita sekarang
      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

    • Sejujurnya saya benar-benar terkesan dengan GPT-4.1 mini
      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
      llm -f https://raw.githubusercontent.com/BenjaminAster/CSS-Minecraft/… \
        -s 'explain all the tricks used by this CSS'
      
      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

    • Ini mungkin memerlukan perubahan pada llm-gguf atau llm-llama-server
      ... setelah saya coba, cara kedua ternyata berhasil
      brew install llama.cpp
      llama-server --jinja -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL
      
      Lalu di jendela terpisah
      llm install llm-llama-server
      llm -m llama-server-tools -T llm_time 'what time is it?' --td
      
      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 juga sempat sedikit bereksperimen dengan MCP pagi ini
      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