Using LLM in the shebang line of a script
TIL: Using LLM in the shebang line of a script (https://til.simonwillison.net/llms/llm-shebang)
Kim_Bruning on Hacker News (https://news.ycombinator.com/item?id=48073246#48090590):
But seriously, you can put a shebang on an english text file now (if you’re sufficiently brave) […]
This inspired me to look at patterns for doing exactly that with LLM (https://llm.datasette.io/en/stable/). Here’s the simplest:
#!/usr/bin/env -S llm -f Generate an SVG of a pelican riding a bicycle
But you can also incorporate tool calls:
#!/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:
#!/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
Which outputs (thanks to that –td tools debug option):
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 (https://til.simonwillison.net/llms/llm-shebang#templates-with-tools) that uses the Datasette SQL API to answer questions about content on my blog.
Tags: llm (https://simonwillison.net/tags/llm), llm-tool-use (https://simonwillison.net/tags/llm-tool-use), llms (https://simonwillison.net/tags/llms), ai (https://simonwillison.net/tags/ai), generative-ai (https://simonwillison.net/tags/generative-ai)
Write a comment