Using LLM in the shebang line of a script
Simon Willison показывает, как использовать CLI-инструмент LLM в строке shebang скриптов, фактически превращая текстовые файлы на английском языке в исполняемые программы. Простейший вариант использует фрагменты LLM для генерации контента (например, SVG-изображения) прямо из командной строки. Более продвинутые примеры включают вызовы инструментов через опцию -T и выполнение YAML-шаблонов, в которых прямо определяются Python-функции в качестве инструментов. В статье демонстрируется пример калькулятора, где LLM вызывает функции multiply и add для вычисления арифметических выражений, а также упоминается более сложный пример с использованием SQL API Datasette для ответов на вопросы о контенте блога.
11th May 2026
11 мая 2026
Kim_Bruning on Hacker News:
Kim_Bruning на Hacker News:
But seriously, you can put a shebang on an english text file now (if you're sufficiently brave) [...]
Но если серьёзно, теперь можно поставить shebang на текстовый файл на английском языке (если вы достаточно смелы) [...]
This inspired me to look at patterns for doing exactly that with LLM. Here's the simplest, which takes advantage of LLM fragments:
Это вдохновило меня изучить паттерны для реализации именно этого с помощью LLM. Вот простейший вариант, использующий фрагменты LLM:
#!/usr/bin/env -S llm -f
Generate an SVG of a pelican riding a bicycle
#!/usr/bin/env -S llm -f Generate an SVG of a pelican riding a bicycle
But you can also incorporate tool calls using the -T name_of_tool option:
Но можно также использовать вызовы инструментов с помощью опции -T name_of_tool:
#!/usr/bin/env -S llm -T llm_time -f
Write a haiku that mentions the exact current time
#!/usr/bin/env -S llm -T llm_time -f Write a haiku that mentions the exact current time
Or even execute YAML templates directly that define extra tools as Python functions:
Или даже напрямую выполнять YAML-шаблоны, в которых дополнительные инструменты определяются как Python-функции:
#!/usr/bin/env -S llm -t model: gpt-5.4-mini system: | Use tools to run calculations functions: | def add(a: int, b: int) -> int: return a + b def multiply(a: int, b: int) -> int: return a * b
#!/usr/bin/env -S llm -t model: gpt-5.4-mini system: | Use tools to run calculations functions: | def add(a: int, b: int) -> int: return a + b def multiply(a: int, b: int) -> int: return a * b
Then:
Затем:
./calc.sh 'what is 2344 * 5252 + 134' --td
./calc.sh 'what is 2344 * 5252 + 134' --td
Which outputs (thanks to that --td tools debug option):
Что выводит (благодаря отладочной опции --td для инструментов):
Tool call: multiply({'a': 2344, 'b': 5252})
12310688
Tool call: add({'a': 12310688, 'b': 134})
12310822
2344 × 5252 + 134 = **12,310,822**
Tool call: multiply({'a': 2344, 'b': 5252}) 12310688 Tool call: add({'a': 12310688, 'b': 134}) 12310822 2344 × 5252 + 134 = **12,310,822**
Read the full TIL for a more complex example that uses the Datasette SQL API to answer questions about content on my blog.
Прочитайте полную заметку TIL, чтобы увидеть более сложный пример, использующий SQL API Datasette для ответов на вопросы о контенте моего блога.
Recent articles
Недавние статьи
Заметки о сделке xAI/Anthropic по дата-центрам — 7 мая 2026 Прямая трансляция: Code w/ Claude 2026 — 6 мая 2026 Вайб-кодинг и агентная инженерия сближаются больше, чем мне хотелось бы — 6 мая 2026
This is a beat by Simon Willison, posted on 11th May 2026.
Это заметка Simon Willison, опубликованная 11 мая 2026.
Monthly briefing
Ежемесячная сводка
Sponsor me for $10/month and get a curated email digest of the month's most important LLM developments.
Поддержите меня за $10/месяц и получайте кураторскую email-рассылку с самыми важными событиями в мире LLM за месяц.
Pay me to send you less!
Платите мне, чтобы я присылал вам меньше!