在脚本的shebang行中使用LLM
阅读原文· simonwillison.netSimon 这个 shebang 技巧让 LLM 直接变成脚本解释器,虽然是极客玩法,但对常写自动化脚本的开发者来说可以直接抄走,创意很妙。
本文介绍了一种创新方法,将LLM工具直接嵌入脚本的shebang行中执行指令。通过LLM的fragments模式,shebang行可执行简单任务,如生成SVG图像;使用-T选项能调用外部工具(如llm_time)创作包含当前时间的俳句;更复杂的是运行YAML模板,其中定义了Python函数作为工具进行数学计算,示例中演示了计算2344乘以5252加134的过程,并通过调试输出展示了分步结果,最终得到12,310,822。这展现了LLM作为脚本解释器的强大扩展性,能够支持从内容生成到数据查询的多样化任务。
Simon Willison 的博客
2026 年 5 月 11 日
Hacker News 上的 Kim_Bruning:
但说真的,现在你可以在一个英文文本文件上放 shebang 了(如果你足够勇敢的话)[...]
这启发我去研究如何用 LLM 做到这一点。下面是最简单的模式,利用了 LLM 的片段(fragments):
#!/usr/bin/env -S llm -f
Generate an SVG of a pelican riding a bicycle
但你也可以使用 `-T tool_name` 选项来结合工具调用:
#!/usr/bin/env -S llm -T llm_time -f
Write a haiku that mentions the exact current time
甚至可以直接执行 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
接着:
./calc.sh 'what is 2344 * 5252 + 134' --td
输出(得益于 `--td tools debug` 选项)为:
Tool call: multiply({'a': 2344, 'b': 5252})
12310688
Tool call: add({'a': 12310688, 'b': 134})
12310822
2344 × 5252 + 134 = **12,310,822**
阅读完整的 TIL 以获取一个更复杂的示例,该示例使用 Datasette SQL API 来回答关于我博客内容的问题。
近期文章
- Datasette Apps:在 Datasette 内部托管自定义 HTML 应用程序 - 2026 年 6 月 18 日
- GLM-5.2 很可能是最强大的纯文本开放权重大语言模型 - 2026 年 6 月 17 日
- 将 WASM wheels 发布到 PyPI 以供 Pyodide 使用 - 2026 年 6 月 13 日
本文由 Simon Willison 撰写,发布于 2026 年 5 月 11 日。
ai 2,081 generative-ai 1,838 llms 1,806 llm 606 llm-tool-use 70月度简报
每月赞助我 10 美元,即可获得一份精心整理的电子邮件摘要,涵盖本月最重要的大语言模型发展动态。
付钱让我给你发更少的内容!
Sponsor & subscribe- 声明
- 版权页
- ©