3 puan yazan GN⁺ 2025-05-28 | 1 yorum | WhatsApp'ta paylaş
  • LLM 0.26 ile çeşitli araç çalıştırma özellikleri eklendi; böylece OpenAI, Anthropic, Gemini, Ollama gibi farklı LLM modelleri Python fonksiyonları veya eklenti olarak uygulanmış araçlardan yararlanabiliyor
  • Komut satırından ya da Python API üzerinden araçları doğrudan kurmak veya fonksiyon olarak geçirmek mümkün hale gelerek genişletilebilirlik ve esneklik önemli ölçüde arttı
  • Araç eklentileriyle matematik hesaplama, JavaScript çalıştırma, SQL sorgulama, harici servislerle entegrasyon gibi çeşitli yetenekler modele kolayca eklenebiliyor
  • Tüm büyük LLM sağlayıcıları ve yerel modellerde araç çağırma kalıbı yaygınlaşırken, LLM 0.26 da bunu standartlaştırılmış bir şekilde entegre ediyor
  • Gelecek planları ve gelişim yönü arasında MCP standardı desteği, eklenti geliştirme ekosisteminin büyütülmesi ve araç çalıştırma günlüklerinin iyileştirilmesi yer alıyor

LLM 0.26: terminalde büyük dil modeliyle araç çalıştırma desteği

27 Mayıs 2025 itibarıyla LLM 0.26 sürümü yayımlandı. Bu sürüm, LLM projesinin başlangıcından bu yana en büyük değişimi getiriyor ve araç (tool) desteğini ekliyor. Artık OpenAI, Anthropic, Gemini, Ollama gibi farklı LLM modelleri, LLM’in CLI aracı ve Python kütüphanesiyle birlikte kullanılarak Python fonksiyonu olarak ifade edilebilen herhangi bir araca erişebiliyor.

Başlıca özellikler ve değişiklikler

  • Eklentilerden araç kurma ve yükleme: --tool/-T seçeneğiyle kurulu eklentiler üzerinden araç kaydedilip kullanılabiliyor
  • Komut satırından Python kodu verme: --functions seçeneğiyle doğrudan Python fonksiyon kodu aktarılıp araç olarak kullanılabiliyor
  • Python API’de de araç desteği: .chain metoduna tools=[fonksiyon_adı] verilerek kolayca araç bağlanabiliyor
  • Senkron ve asenkron bağlam desteği: Hem sync hem async durumlarda araç çağrılabiliyor

Araç kullanım örnekleri

Kullanıma hazırlık

  1. En güncel LLM sürümünün kurulması veya yükseltilmesi gerekiyor

  2. OpenAI gibi servisler için API anahtarı tanımlama:

    llm keys set openai
    # API anahtarını girin
    
  3. İlk araç çalıştırma örneği:

    llm --tool llm_version "What version?" --td
    
    • llm_version varsayılan olarak gelen basit bir demo aracıdır
    • --td, araç hata ayıklama çıktısı seçeneğidir; araç çağrısı süreci ve yanıt içeriği görülebilir
  4. Model değiştirme:

    llm models default gpt-4.1-mini
    
    • Farklı modeller de seçenek olarak desteklenir (-m o4-mini gibi)
  5. Yerleşik zaman aracını çağırma:

    llm --tool llm_time "What time is it?" --td -m o4-mini
    
    • Saat ve zaman dilimi bilgisini ayrıntılı olarak verir

Farklı modeller ve eklentiler desteği

  • Anthropic Claude 4, Google Gemini 2.5 Flash, Ollama Qwen3:4b gibi çeşitli LLM model ortamlarında aynı araç arayüzüyle çalışır
  • Örnek komutlar:
    llm install llm-anthropic -U
    llm keys set anthropic
    llm --tool llm_version "What version?" --td -m claude-4-sonnet
    

Matematik işlemleri ve kod çalıştırma

  • Matematikte zayıf kalan LLM sınırları, Python araçlarıyla aşılabiliyor
  • llm-tools-simpleeval eklentisi üzerinden güvenli aritmetik işlem desteği sağlanıyor
    llm install llm-tools-simpleeval
    llm -T simpleeval
    llm -T simple_eval 'Calculate 1234 * 4346 / 32414 and square root it' --td
    
    • sqrt() desteği yoksa ** 0.5 ile değiştirme gibi yaklaşımlarla kod yürütme esnekliği sağlanıyor

Araç eklentileri tanıtımı

  • [llm-tools-simpleeval]: aritmetik ve basit ifade hesaplama
  • [llm-tools-quickjs]: QuickJS JavaScript sandbox yorumlayıcı aracı
  • [llm-tools-sqlite]: yerel SQLite veritabanında salt okunur SQL sorguları
  • [llm-tools-datasette]: uzak Datasette instance’larında SQL sorgusu çalıştırma desteği

Örnek:

llm install llm-tools-datasette
llm -T 'Datasette("https://datasette.io/content";)' --td "What has the most stars?"
  • Araç kutusu tarzı bir eklentidir; URL gibi argümanlarla yapılandırılabilir
  • Yanlış sütun belirtildiğinde araç hatasını algılama ve yeniden deneme → şema sorgulama → doğru sorgu üretme akışıyla, LLM’in uyarlanabilir yeteneğini gösterir

Doğrudan Python koduyla araç tanımlama

  • Komut satırında --functions seçeneğiyle herhangi bir Python fonksiyonu aktarılıp anında araca dönüştürülebilir
  • Örnek:
    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'
    
    • Basit bir web arama aracı uygulanabilir
    • System prompt üzerinden modele aracın nasıl kullanılacağına dair yön vermek önemlidir

Python kütüphanesiyle entegre kullanım

  • LLM, hem CLI hem de Python API desteği sunar
  • .chain() metodu, araç çağrısı isteğini algılayıp çalıştırma ve sonucu yansıtma sürecini otomatikleştirir
  • Örnek:
    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)
    
  • Asenkron fonksiyonlar (async def) da desteklenir ve eşzamanlı çalıştırılabilir
  • Araç kutusu eklentileri de tools=[Datasette(...)] biçiminde doğrudan bağlanabilir

Araç paradigmasının gelişim süreci

  • Araç çağırma kalıbı, 2022’deki ReAcT makalesi gibi çalışmalarda tanıtıldıktan sonra tüm büyük LLM sağlayıcıları ve yerel modeller tarafından benimsendi
  • API’ler, “Function calling” veya “tool use” gibi farklı adlarla benzer bir ortak biçimi kullanıyor
  • Ollama, llama.cpp gibi projeler de zaten araç desteği eklemiş ve bunu genişletiyor

Geliştirme ve operasyon tarafındaki perde arkası

  • LLM’in uzun süredir araç entegrasyonuna ihtiyaç duyduğu biliniyordu; ancak farklı modeller arasında bir soyutlama katmanı tasarlamak zordu
  • Sağlayıcılar arasındaki araç kalıbı standartlaştıkça, LLM 0.26’da birleşik bir uygulama mümkün hale geldi
  • PyCon US 2025 atölyesinde pratik kullanım örnekleriyle gösterildi

“Ajan” kavramıyla ilişkisi

  • “Ajan” terimi hâlâ tartışmalı olsa da, güncel LLM ekosisteminde “tool in the loop” biçimi standartlaşıyor
  • LLM 0.26, ajan geliştirme için de uygun bir uygulama sunuyor
  • Gelecekte eklenti üretimi için şablonlar, iyileştirme başlıkları ve gelişmiş eklenti dokümantasyonu üzerinde aktif çalışma sürüyor

Model Context Protocol (MCP) desteği yolda

  • MCP, LLM’lerin araçlara erişmesi için hızla yükselen yeni bir standart protokoldür
  • Son 8 gün içinde OpenAI, Anthropic, Mistral gibi büyük sağlayıcıların API’lerine de hızla girmeye başladı
  • Gelecekte LLM’in bir MCP istemcisine dönüştürülerek farklı MCP sunucularına kolayca bağlanması planlanıyor

Topluluk ve genişleme

  • LLM projesi, eklenti ve araç geliştirme tartışmaları ile ekosistemin büyümesi için bir Discord topluluğu işletiyor
  • Açık kaynak ekosisteminde araç tabanlı LLM kullanımının olanaklarının neredeyse sınırsız olduğu vurgulanıyor

Bu yaklaşımla LLM 0.26, tüm büyük LLM modelleriyle entegre olabilen, genel amaçlı ve genişletilebilir bir araç entegrasyon platformuna dönüşüyor. Araçlar sayesinde dil modellerinin kullanım alanı ciddi biçimde genişliyor; bu da onu geliştiriciler ve BT profesyonelleri için son derece anlamlı bir araç haline getiriyor.

1 yorum

 
GN⁺ 2025-05-28
Hacker News görüşü
  • Bu araç için bizzat yaptığım bir akışlı Markdown render'ım var
    Daha fazlası için Streamdown'a bakabilirsiniz
    Ayrıca burada da ilgili bir şey var
    Simon'ın llm aracı üstüne kurulu tmux aracı llmehelp'i de kendim yaptım
    Artık her gün kullandığım vazgeçilmez bir araç oldu

    • Bu kütüphane gerçekten harika görünüyor
      Eklentilerin içerik gösterimini doğrudan kontrol etmesini sağlayacak bir hook olsa güzel olur diye düşündüm
      Bununla ilgili issue'yu buraya açtım
      Birkaç tasarım seçeneği ekledim ama hâlâ %100 emin değilim
      Geri bildirim almayı gerçekten isterim

    • Unuttuğum bir şey daha vardı
      Bu kez llm tabanlı bir ZSH eklentisi
      zle kullanarak İngilizceyi tek seferde shell komutuna çeviriyor
      Adı Zummoner
      Hayatımı tamamen değiştiren bir araç oldu
      Mesela bugün kendim için yaptığım bir komut

        $ git find out if abcdefg is a descendent of hijklmnop 
      

      Gerçekte bu yorumlardan birinde kullandığım komut da şuydu

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

      Aslında başlangıçta şu vardı

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

      Güvendiğim ctrl-x x kısayoluyla buffer'ı OpenRouter'a gönderiyorum ve 1 saniyeden kısa sürede doğru sözdizimiyle geri dönüyor

    • Süper
      Ben de akış hâlindeki LLM çıktısını hızlı gösterebilmek için farklı dillerde akışlı Markdown render'ları yazmıştım
      Bunu yapan tek kişinin ben olmadığını görmek güzel

    • İlginç, kesin deneyeceğim
      Ben llm'i bat ile birlikte sözdizimi vurgulaması için kullanıyorum

    • Tam da istediğim özellik buydu
      Teşekkürler

  • Bu tür araçlarda footgun riski gerçekten oldukça yüksek
    Belgelerde prompt injection konusunda uyarı var ama pratikte kendi yaptığınız hatalardan doğan zarar daha yaygın olacak gibi geliyor
    Örneğin araca bir aracı kurum hesabına erişim verirseniz işlem otomasyonu mümkün olur
    Prompt injection olmasa bile bot aptalca işlemler yaparsa bunu engellemenin bir yolu yok
    İlgili doküman

    • Bu tür kaza riski gerçekten çok büyük
      LLM'e araçlar bağladığınızda, kimliği doğrulanmış çağrılarla sizin adınıza işlem yapabildiği için çok fazla beklenmedik durum ortaya çıkabiliyor
      Bunu yakın zamandaki GitHub MCP örneği gibi vakalarda görebiliyoruz ilgili yazı
      Belgelerde de risk uyarısını çok görünür yaptım; gerçekten zarar verebilecek ilk araç eklentilerini ise bilerek yayımlamadım
      Bu yüzden QuickJS sandbox ve SQLite eklentilerim yalnızca salt okunur
      Yine de bu alan başlı başına çok eğlenceli ve büyüleyici bir yelpaze

    • Eğer biri llm'i aracı kurum hesabına bağlıyorsa, bu botun aptallığından çok insanın aptallığına girer

    • Her araç kötüye kullanılabilir

  • llm kullananlara Gtk-llm-chat'i öneririm
    İnanılmaz emek verilmiş bir temel üzerine kurulu
    llm komut satırı aracıyla masaüstü entegrasyonu, tray ikonu ve temiz bir sohbet penceresi sunuyor
    Yakın zamanda 3 büyük masaüstü işletim sistemi için paketlerle 3.0.0 sürümü çıktı

    • İlginç
      Sıradan sohbet dışında başka ne amaçla kullandığınızı merak ediyorum
  • Bunun zamanlaması gerçekten mükemmel
    Son zamanlarda terminalde (Warp) çeşitli şeyler deniyorum; agent fikri hoşuma gidiyor ama Cursor gibi "prompt'larımıza/LLM çağrılarımıza güvenin ve ücretini ödeyin" yaklaşımı bana pek çekici gelmiyor
    O yüzden sadece zayıf shell becerilerimi telafi edecek basit, CLI tabanlı bir terminal agent'ına ihtiyacım vardı
    Bu tür araçların footgun riski taşıdığını gayet iyi biliyorum
    Ama terminal araçları + llm birleşimi hafiflik açısından gerçekten ideal görünüyor
    Bazı diğer "agent" ürünlerinde olduğu gibi, llm bir rm -rf ./* çağrısı yapmak istediğinde "Onaylamak için Y'ye bas" türü bir onay mekanizması destekleniyor mu diye merak ediyorum
    Bu olursa LLM'in terminalimi istediği gibi kullanmasını önleyebilir ve bir miktar koruma sağlayabilirim

    • Codex CLI'ın varsayılan modu sanırım tam olarak böyle çalışıyor
      --full-auto bayrağı olmadan çalıştırırsanız her seferinde onay istiyor
  • llm için zsh/omz tab tamamlama eklentisini aktif olarak sürdürüyorum, ama yeni özelliklerin çıkış hızı o kadar yüksek ki yetişmek zor oluyor
    Neyse ki aşağıdaki komut işi %90 oranında otomatik yaptı

    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"
    

    Eklenti depom burada
    Olabildiğince çok seçeneği kapsamak istediğim için yapı biraz karmaşık
    Geri bildirim alabilirsem gerçekten sevinirim

    • Bunun gerçekten bilim kurgu değil de gerçek olması hayret verici
      Gelecek nesiller bizim bir şeyleri nasıl inşa ettiğimize şaşıracak gibi geliyor
      Bizim assembly programcılarının nasıl çalıştığını hayal edemememize benziyor
  • GPT-4.1, yapılandırılmış çıktılardan araç çağrılarına kadar gerçekten çok güçlü bir model
    Son 2 yıldır günlük tekrar eden işlerimin neredeyse tamamını LLM'ler hallediyor
    Ucuz ve performanslı model kombinasyonu sayesinde bunu hep varsayılan modelim olarak seçiyorum

    • Açıkçası GPT-4.1 mini beni gerçekten şaşırttı
      API üzerinden her şeyi denedikten sonra şunu gördüm: inanılmaz ucuz ama gerçekten işlerin büyük kısmını çok iyi yapıyor
      Kodlama için o4-mini, diğer çoğu iş için 4.1-mini genelde fazlasıyla yeterli
      Bugün eğlence olsun diye kullandığım bir örnek
      llm -f https://raw.githubusercontent.com/BenjaminAster/CSS-Minecraft/… \
        -s 'explain all the tricks used by this CSS'
      
      İçinde tek bir yorum bile olmayan mükemmel bir CSS Minecraft demosunun kodunu GPT-4.1 mini'ye açıklattım
      İlgili demo kaynağı
      GPT-4.1 mini'nin verdiği yanıt gerçekten çok iyiydi
      "Bu CSS, en son CSS teknikleriyle minimum JavaScript kullanarak 3D etkileşimli voxel tarzı bir arayüz oluşturuyor" gibi zor numaraları bile doğru tespit etti
      Açıklamanın tamamı
      3.813 giriş token'ı, 1.291 çıkış token'ı
      Hesaplamaya göre yaklaşık 0,3591 sent; yani 1 sentin üçte biri kadar bir maliyet
  • Simon'ın araçları gerçekten inanılmaz
    Her gün kullanıyorum
    Pipe birleşimleri ve modeller arasında kolay geçiş yapabilmek (ollama gibi yerel ve uzak seçenekler dâhil) işleri çok kolaylaştırıyor

  • Gerçekten harika bir gelişme
    Bildiğim kadarıyla llama.cpp da araç desteği sunuyor ama bunu llm içinden nasıl bağlayacağımı henüz bulamadım
    Belki extra-openai-models.yaml içine bir şey ekleyerek çözülebilir diye merak ediyorum

    • Bunun için muhtemelen llm-gguf veya llm-llama-server tarafında değişiklik gerekir
      ... denedim ve ikinci yöntem çalıştı
      brew install llama.cpp
      llama-server --jinja -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL
      
      Sonra ayrı bir pencerede
      llm install llm-llama-server
      llm -m llama-server-tools -T llm_time 'what time is it?' --td
      
      Özetini burada yazdım
  • Bu sürüm için gerçekten minnettarım
    Bu kütüphanenin, mevcut istemcilerin sınırlarını ve kısıtlarını aşarak LLM'in sunduğu imkânları tam anlamıyla açan temel bir bileşen olduğunu düşünüyorum
    0.26 alpha sürümünden beri MCP sunucularıyla etkileşen bir eklenti yapmaya çalışıyorum ama biraz zorlayıcı geliyor
    Şimdilik bağlanıp araçları dinamik olarak alıp kullanabilecek hâle getirdim, ancak parametre geçişini henüz çözemedim

    • Ben de bu sabah MCP ile biraz deney yaptım
      Mümkün olduğunca basit bir eklenti demosu kurmaya çalıştım ama kolay değildi
      Resmî mcp Python kütüphanesi asyncio çalıştırma, sunucuya bağlanma ve mevcut araç introspection'ı gibi şeyler gerektiriyor
  • Uzun süredir beklenen bir özellikti
    Bunun mcp veya openapi tabanlı olacağını düşünmüştüm ama mevcut yaklaşım çok daha basit ve esnek olabilir
    Bunu eklenti olarak uygulamak da zor görünmüyor