LLM CLI aracım artık Python kodundan veya eklentilerden araç çalıştırabiliyor
(simonwillison.net)- 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/-Tseçeneğiyle kurulu eklentiler üzerinden araç kaydedilip kullanılabiliyor - Komut satırından Python kodu verme:
--functionsseçeneğiyle doğrudan Python fonksiyon kodu aktarılıp araç olarak kullanılabiliyor - Python API’de de araç desteği:
.chainmetodunatools=[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
-
En güncel LLM sürümünün kurulması veya yükseltilmesi gerekiyor
-
OpenAI gibi servisler için API anahtarı tanımlama:
llm keys set openai # API anahtarını girin -
İ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
-
Model değiştirme:
llm models default gpt-4.1-mini- Farklı modeller de seçenek olarak desteklenir (
-m o4-minigibi)
- Farklı modeller de seçenek olarak desteklenir (
-
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' --tdsqrt()desteği yoksa** 0.5ile 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
--functionsseç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
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
tmuxaracı llmehelp'i de kendim yaptımArtı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
llmtabanlı bir ZSH eklentisizlekullanarak İngilizceyi tek seferde shell komutuna çeviriyorAdı Zummoner
Hayatımı tamamen değiştiren bir araç oldu
Mesela bugün kendim için yaptığım bir komut
Gerçekte bu yorumlardan birinde kullandığım komut da şuydu
Aslında başlangıçta şu vardı
Güvendiğim
ctrl-x xkısayoluyla buffer'ı OpenRouter'a gönderiyorum ve 1 saniyeden kısa sürede doğru sözdizimiyle geri dönüyorSü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'ibatile birlikte sözdizimi vurgulaması için kullanıyorumTam 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 girerHer araç kötüye kullanılabilir
llmkullananlara Gtk-llm-chat'i öneririmİnanılmaz emek verilmiş bir temel üzerine kurulu
llmkomut satırı aracıyla masaüstü entegrasyonu, tray ikonu ve temiz bir sohbet penceresi sunuyorYakın zamanda 3 büyük masaüstü işletim sistemi için paketlerle 3.0.0 sürümü çıktı
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ı +
llmbirleşimi hafiflik açısından gerçekten ideal görünüyorBazı diğer "agent" ürünlerinde olduğu gibi,
llmbirrm -rf ./*çağrısı yapmak istediğinde "Onaylamak için Y'ye bas" türü bir onay mekanizması destekleniyor mu diye merak ediyorumBu olursa LLM'in terminalimi istediği gibi kullanmasını önleyebilir ve bir miktar koruma sağlayabilirim
--full-autobayrağı olmadan çalıştırırsanız her seferinde onay istiyorllmiç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 oluyorNeyse ki aşağıdaki komut işi %90 oranında otomatik yaptı
Eklenti depom burada
Olabildiğince çok seçeneği kapsamak istediğim için yapı biraz karmaşık
Geri bildirim alabilirsem gerçekten sevinirim
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
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çin4.1-minigenelde fazlasıyla yeterliBugün eğlence olsun diye kullandığım bir örnek İç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.cppda araç desteği sunuyor ama bunullmiçinden nasıl bağlayacağımı henüz bulamadımBelki
extra-openai-models.yamliçine bir şey ekleyerek çözülebilir diye merak ediyorum... denedim ve ikinci yöntem çalıştı Sonra ayrı bir pencerede Ö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
Mümkün olduğunca basit bir eklenti demosu kurmaya çalıştım ama kolay değildi
Resmî
mcpPython kütüphanesiasyncioçalıştırma, sunucuya bağlanma ve mevcut araç introspection'ı gibi şeyler gerektiriyorUzun süredir beklenen bir özellikti
Bunun
mcpveyaopenapitabanlı olacağını düşünmüştüm ama mevcut yaklaşım çok daha basit ve esnek olabilirBunu eklenti olarak uygulamak da zor görünmüyor