मेरा LLM CLI टूल अब Python कोड या प्लगइन से टूल चला सकता है
(simonwillison.net)- LLM 0.26 में कई tool execution features जोड़े गए हैं, जिससे OpenAI, Anthropic, Gemini, Ollama जैसे विभिन्न LLM मॉडल Python functions या plugins के रूप में लागू टूल्स का उपयोग कर सकते हैं
- कमांड लाइन या Python API से टूल्स को सीधे install किया जा सकता है या functions के रूप में पास किया जा सकता है, जिससे extensibility और flexibility में बड़ा सुधार होता है
- टूल plugins के जरिए math calculation, JavaScript execution, SQL queries, external service integration जैसी कई क्षमताएँ मॉडल में आसानी से जोड़ी जा सकती हैं
- सभी प्रमुख LLM vendors और local models में tool calling pattern सामान्य होता जा रहा है, और LLM 0.26 भी इसे एक standardized तरीके से integrate करता है
- आगे की योजना और विकास दिशा में MCP standard support, plugin development ecosystem का विस्तार, और tool execution logs में सुधार जैसी बातें शामिल हैं
LLM 0.26: टर्मिनल में large language model के साथ tool execution support
27 मई 2025 के अनुसार LLM 0.26 वर्ज़न जारी किया गया है। यह वर्ज़न LLM प्रोजेक्ट की शुरुआत के बाद से सबसे बड़ा बदलाव है, क्योंकि इसमें tool support जोड़ा गया है। अब OpenAI, Anthropic, Gemini, Ollama जैसे विभिन्न LLM मॉडलों को LLM के CLI टूल और Python library के साथ जोड़कर, Python function के रूप में व्यक्त किए जा सकने वाले किसी भी tool तक पहुँच दी जा सकती है।
मुख्य फीचर्स और बदलाव
- प्लगइन से टूल install और load करना:
--tool/-Tविकल्प के जरिए install किए गए plugins से टूल register और उपयोग किए जा सकते हैं - कमांड लाइन पर Python code पास करना:
--functionsविकल्प के जरिए सीधे Python function code देकर टूल्स का उपयोग किया जा सकता है - Python API में भी tool support:
.chainmethod मेंtools=[함수명]पास करके आसानी से टूल जोड़े जा सकते हैं - synchronous और asynchronous context support: sync/async दोनों स्थितियों में tool calling संभव है
टूल उपयोग के उदाहरण
उपयोग की तैयारी
-
नवीनतम LLM install या upgrade करना आवश्यक है
-
OpenAI आदि की API key दर्ज करें:
llm keys set openai # API key दर्ज करें -
पहला tool execution उदाहरण:
llm --tool llm_version "What version?" --td- llm_version एक साधारण built-in demo tool है
--tdtool debug output विकल्प है, जिससे tool calling process और response details देखी जा सकती हैं
-
मॉडल बदलना:
llm models default gpt-4.1-mini- विकल्प के रूप में कई मॉडल support किए जा सकते हैं (
-m o4-miniआदि)
- विकल्प के रूप में कई मॉडल support किए जा सकते हैं (
-
built-in time tool को कॉल करना:
llm --tool llm_time "What time is it?" --td -m o4-mini- यह समय और time zone जानकारी विस्तार से दिखाता है
विभिन्न मॉडलों और plugins का support
- Anthropic Claude 4, Google Gemini 2.5 Flash, Ollama Qwen3:4b जैसे कई LLM model environments में वही tool interface काम करता है
- उदाहरण कमांड:
llm install llm-anthropic -U llm keys set anthropic llm --tool llm_version "What version?" --td -m claude-4-sonnet
math operations और code execution
- math में कमजोर LLM की सीमाएँ Python tools से दूर की जा सकती हैं
- llm-tools-simpleeval plugin के जरिए सुरक्षित arithmetic operations support होते हैं
llm install llm-tools-simpleeval llm -T simpleeval llm -T simple_eval 'Calculate 1234 * 4346 / 32414 and square root it' --td- अगर
sqrt()support न हो, तो** 0.5से उसका विकल्प इस्तेमाल किया जा सकता है, जिससे code execution flexibility मिलती है
- अगर
tool plugins का परिचय
- [llm-tools-simpleeval]: arithmetic और सरल expressions की गणना
- [llm-tools-quickjs]: QuickJS JavaScript sandbox interpreter tool
- [llm-tools-sqlite]: local SQLite database पर read-only SQL queries
- [llm-tools-datasette]: remote Datasette instance पर SQL query execution support
उदाहरण:
llm install llm-tools-datasette
llm -T 'Datasette("https://datasette.io/content")' --td "What has the most stars?"
- यह toolbox प्रकार का plugin है, इसलिए URL जैसे arguments के जरिए configure किया जा सकता है
- गलत column बताने पर tool error detection और retry → schema lookup → सही query generation जैसी प्रक्रिया के जरिए LLM की adaptive क्षमता साबित होती है
सीधे Python code से tool define करना
- कमांड लाइन में
--functionsविकल्प के जरिए मनचाहा Python function पास करके उसे तुरंत tool बनाया जा सकता है - उदाहरण:
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'- एक सरल web search tool बनाया जा सकता है
- System prompt के जरिए मॉडल को tool usage की दिशा देना महत्वपूर्ण है
Python library के रूप में integrated उपयोग
- LLM, CLI और Python API दोनों को support करता है
.chain()method के जरिए tool call request को detect करना → execute करना → result reflect करना, यह पूरी प्रक्रिया automate होती है- उदाहरण:
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) - asynchronous functions (
async def) भी support होती हैं, इसलिए concurrent execution संभव है - toolbox plugins को भी
tools=[Datasette(...)]के रूप में वैसे ही जोड़ा जा सकता है
tool paradigm के विकास की प्रक्रिया
- tool calling pattern 2022 के ReAcT paper आदि में पेश किए जाने के बाद, सभी प्रमुख LLM vendors और local models ने इसे अपनाया
- हर API में "Function calling" या "tool use" जैसे अलग-अलग नामों के बावजूद एक समान रूप प्रचलित हो गया है
- Ollama, llama.cpp आदि में भी पहले से tool support जोड़ा जा चुका है और इसे आगे बढ़ाया जा रहा है
विकास और संचालन के पीछे की कहानी
- LLM को लंबे समय से tool integration support की ज़रूरत होने का एहसास था, लेकिन अलग-अलग मॉडलों के बीच abstraction layer design करना कठिन था
- vendors के बीच tool patterns के standardize होने के साथ LLM 0.26 में unified implementation संभव हो सकी
- PyCon US 2025 workshop में इसे practical use case के रूप में प्रदर्शित किया गया
“agent” से संबंध
- "agent" शब्द अभी भी बहस का विषय है, लेकिन मौजूदा LLM ecosystem में यह "tool in the loop" रूप में standardize हो रहा है
- LLM 0.26 agent development के लिए भी उपयुक्त implementation है
- आगे plugin development के लिए templates, improvement issues, और advanced plugin documentation पर सक्रिय काम चल रहा है
Model Context Protocol (MCP) support आने वाला है
- MCP एक नया standard protocol है जो LLM को tools तक पहुँचाने के लिए तेजी से उभर रहा है
- पिछले 8 दिनों के भीतर OpenAI, Anthropic, Mistral जैसे बड़े vendor APIs में भी इसे तेज़ी से अपनाया जा रहा है
- आगे LLM को MCP client बनाकर कई MCP servers से आसानी से जोड़ने की योजना है
community और विस्तार
- LLM project में plugin, tool development discussions और ecosystem विस्तार के लिए Discord community चलाई जा रही है
- open source ecosystem में tool-based LLM उपयोग की संभावनाएँ लगभग असीमित बताई गई हैं
इस तरह LLM 0.26 सभी प्रमुख LLM मॉडलों से जुड़ने वाला, general-purpose और extensible tool integration platform बनता जा रहा है। tools के जरिए language model के उपयोग का दायरा बहुत व्यापक हो जाता है, इसलिए यह developers और IT professionals के लिए बेहद महत्वपूर्ण टूल है।
1 टिप्पणियां
Hacker News टिप्पणी
मेरे पास इस टूल के लिए खुद बनाया हुआ एक streaming Markdown renderer है
ज़्यादा जानकारी Streamdown में देखी जा सकती है
और एक और उपयोगी संदर्भ यहाँ है
मैंने llmehelp नाम का एक tmux टूल भी खुद बनाया है, जो Simon के llm के ऊपर बना है
यह अब ऐसी स्थिति में है कि रोज़ इस्तेमाल होने वाला ज़रूरी टूल बन गया है
यह लाइब्रेरी सच में बहुत शानदार लग रही है
अच्छा होगा अगर कोई hook हो जिससे plugins कंटेंट डिस्प्ले वाले हिस्से को सीधे नियंत्रित कर सकें
मैंने इस बारे में issue यहाँ डाला है
कुछ design options भी शामिल किए हैं, लेकिन अभी भी 100% भरोसा नहीं है
इस पर feedback ज़रूर चाहिए
एक और चीज़ थी जो मैं भूल गया था
इस बार यह llm पर आधारित बनाया गया ZSH plugin है
यह zle का इस्तेमाल करके English को एक ही बार में shell command में बदल देता है
Zummoner उसका नाम है
इसने मेरी ज़िंदगी पूरी तरह बदल दी
उदाहरण के लिए, आज मैंने जो command बनाई
यह वही command है जिसे मैंने वास्तव में इसी टिप्पणी में से एक में इस्तेमाल किया
मूल रूप से यह था
मैं अपने भरोसेमंद ctrl-x x shortcut से buffer को openrouter पर भेजता हूँ, और 1 सेकंड के अंदर सही syntax वापस मिल जाता है
शानदार
मैंने भी streaming LLM output को तेज़ी से दिखाने के लिए कई भाषाओं में streaming Markdown renderers बनाए हैं
मुझे लगा था सिर्फ मैं ही ऐसा कर रहा हूँ, यह देखकर अच्छा लगा
दिलचस्प, इसे ज़रूर आज़माऊँगा
मैं llm को अभी bat के साथ syntax highlighting के लिए इस्तेमाल कर रहा हूँ
मैं सच में ऐसी functionality चाहता था
धन्यवाद
इस तरह के टूल में footgun का जोखिम काफ़ी बढ़ जाता है
documentation में prompt injection के बारे में चेतावनी है, लेकिन असल में self-inflicted गलती से नुकसान होना ज़्यादा आम लग सकता है
उदाहरण के लिए, अगर किसी टूल को brokerage account का access दे दिया जाए तो trading automation संभव हो जाती है
prompt injection न भी हो, तब भी अगर bot बेवकूफ़ी भरी trade कर दे तो उसे रोकने का कोई तरीका नहीं होगा
संदर्भ दस्तावेज़
इस तरह की दुर्घटना का जोखिम सच में बहुत बड़ा है
जब LLM से tools जोड़ दिए जाते हैं, तो authenticated calls के ज़रिए वह मेरी तरफ़ से काम कर सकता है, और ऐसी स्थिति में बहुत सी अनपेक्षित चीज़ें हो सकती हैं
हाल की GitHub MCP घटना जैसी मिसालों में यह दिखा है संबंधित लेख
documentation में भी जोखिम की चेतावनी बड़े रूप में डाली गई है, और ऐसे शुरुआती tool plugins जो वास्तव में नुकसान पहुँचा सकते थे, उन्हें जानबूझकर जारी नहीं किया गया
इसलिए मेरा QuickJS sandbox और SQLite plugin सिर्फ read-only हैं
फिर भी यह पूरा क्षेत्र अपने आप में बहुत मज़ेदार और रोचक स्पेक्ट्रम है
अगर कोई llm को brokerage account से जोड़ता है, तो उस स्थिति में bot से ज़्यादा इंसान को बेवकूफ़ कहना ठीक होगा
किसी भी टूल के दुरुपयोग का जोखिम होता है
जो लोग llm इस्तेमाल कर रहे हैं, उनके लिए Gtk-llm-chat की सिफारिश
इसमें बहुत ज़्यादा मेहनत डाली गई है
यह llm command-line tool के साथ desktop integration, tray icon और साफ़-सुथरी chat window देता है
हाल ही में 3 बड़े desktop OS के लिए packages के साथ version 3.0.0 जारी हुआ है
सामान्य chat के अलावा लोग इसे और किन कामों में इस्तेमाल करते हैं, यह जानने की जिज्ञासा है
यह सच में बेहतरीन timing है
मैं हाल में terminal (Warp) में कई तरह के प्रयोग कर रहा हूँ, और agent जोड़ने का विचार तो पसंद है, लेकिन Cursor जैसी "हमारे prompt/LLM calls पर भरोसा करिए (और पैसे दीजिए)" वाली शैली थोड़ी असहज लगती है
इसलिए मुझे बस एक सरल CLI-आधारित terminal agent चाहिए था, जो मेरी कमज़ोर shell skills की भरपाई कर सके
मुझे अच्छी तरह पता है कि ऐसे टूल में footgun का जोखिम बड़ा है
लेकिन terminal tools + llm का संयोजन बहुत हल्का और लगभग आदर्श लगता है, इसलिए उम्मीद है
मैं जानना चाहता हूँ कि क्या यह उन कुछ "agent" प्रोडक्ट्स की तरह काम करता है, जहाँ llm जब
rm -rf ./*जैसी tool call करे, तो हर बार "Y दबाकर approve करें" जैसा confirmation लिया जाएअगर ऐसा हो सके, तो LLM को मेरे terminal पर मनमाने ढंग से काम करने से रोका जा सकता है और कुछ सुरक्षा परत मिल सकती है
--full-autoflag के बिना चलाने पर वह हर बार approval माँगता हैमैं LLM CLI tab completion के लिए zsh/omz plugin को काफ़ी मेहनत से maintain कर रहा हूँ, लेकिन नई features की release speed इतनी तेज़ है कि साथ चलना आसान नहीं है
अच्छी बात यह है कि नीचे दिया गया command लगभग 90% तक implementation अपने आप कर देता है
मेरा plugin repository यहाँ है
मैं ज़्यादा से ज़्यादा options को संभालना चाहता हूँ, इसलिए इसकी संरचना थोड़ी जटिल है
अगर feedback मिल सके तो बहुत आभारी रहूँगा
अगली पीढ़ियाँ शायद हैरान होंगी कि हम कोई चीज़ बनाते कैसे थे
ठीक वैसे ही जैसे हम assembly programmers के काम करने के तरीके की कल्पना भी ठीक से नहीं कर पाते
GPT-4.1 structured output से लेकर tool calling तक सच में बहुत ताकतवर model है
पिछले 2 सालों में मेरे रोज़मर्रा के लगभग सारे दोहराए जाने वाले काम LLM ने सँभाल लिए हैं
सस्ता होने के साथ प्रदर्शन भी अच्छा है, इसलिए मैं इसे हमेशा default model के रूप में चुनता हूँ
API में हर तरह से इस्तेमाल करके देखा, और यह बेहिसाब सस्ता होते हुए भी सच में ज़्यादातर काम बहुत अच्छे से कर लेता है
coding के लिए o4-mini, और बाकी सब के लिए 4.1-mini आम तौर पर काफ़ी है
आज मज़े के लिए इस्तेमाल किया गया एक उदाहरण मैंने बिना किसी comments वाले शानदार CSS Minecraft demo code को GPT-4.1 mini से समझाने के लिए pipe किया
संबंधित demo source
GPT-4.1 mini का जवाब सच में शानदार था
उसने मुश्किल tricks तक सही पहचान लीं, जैसे "यह CSS अत्याधुनिक CSS तकनीकों से न्यूनतम JavaScript के साथ 3D interactive voxel-style UI लागू करती है"
पूरा विवरण
input tokens 3,813, output tokens 1,291
गणना के अनुसार इसकी लागत लगभग 0.3591 सेंट आई, यानी 1 सेंट के एक-तिहाई से भी कम
Simon का टूल सच में कमाल का है
मैं इसे रोज़ इस्तेमाल करता हूँ
pipes के साथ इसका संयोजन और models के बीच आसान switching (ollama जैसे local और remote दोनों का समर्थन) काम को बहुत आसान बना देता है
सच में शानदार बात है
जहाँ तक मुझे पता है, llama.cpp भी tools को support करता है, लेकिन llm में इसे जोड़ने का तरीका अभी तक नहीं मिला
सोच रहा हूँ कि क्या extra-openai-models.yaml में कुछ जोड़कर यह संभव हो सकता है
... प्रयोग करके देखा तो दूसरा तरीका काम करता है और फिर अलग विंडो में इसका सारांश यहाँ में दिया गया है
इस release के लिए सच में आभार
मुझे लगता है यह लाइब्रेरी वह मुख्य building block है जो मौजूदा clients की सीमाओं और बंधनों से बाहर LLM की संभावनाओं को पूरी तरह खोलती है
0.26 alpha version आने के बाद से मैं MCP server के साथ इंटरैक्ट करने वाला plugin बनाने की कोशिश कर रहा था, लेकिन यह कुछ कठिन लग रहा है
फिलहाल मैं उसे connect करके tools को dynamically fetch और इस्तेमाल करने लायक बना पाया हूँ, लेकिन parameters पास करना अभी तक हल नहीं कर पाया हूँ
मैंने जितना हो सका एक साधारण plugin demo बनाने की कोशिश की, लेकिन अनुभव आसान नहीं था
आधिकारिक mcp Python library में asyncio execution, server connection और उपलब्ध tools की introspection जैसी ज़रूरतें हैं
यह वह feature है जिसका लंबे समय से इंतज़ार था
मुझे लगा था कि यह mcp या openapi आधारित implementation होगा, लेकिन अभी का तरीका शायद इससे कहीं ज़्यादा सरल और लचीला है
ऐसा भी लगता है कि इसे plugin के रूप में लागू करना बहुत कठिन नहीं होगा