[博客翻译]命令行上的语言模型探索之旅


原文地址:https://simonwillison.net/2024/Jun/17/cli-language-models/


上周,我在为期六周的“掌握大型语言模型:开发者与数据科学家会议”上做了一场演讲,主题是如何从命令行访问和利用大型语言模型。我的重点是介绍我开发的名为LLM的Python命令行工具,以及如何使用它及其插件来探索这些模型,并将其用于实际任务。

演讲视频被录制并上传到了YouTube,我还将其转换成了带有详细注释和屏幕截图的演示文稿(没有幻灯片)。LLM是一个工具,旨在帮助用户直接在终端中运行大型语言模型提示。你可以通过pipx、pip或brew安装它,比如pipx install llm

一旦安装了LLM,你可以通过llm keys set openai设置OpenAI模型,然后输入你的API密钥。此外,还有许多插件支持其他提供商的模型,甚至包括本地运行的模型。

基本用法非常简单,配置好OpenAI密钥后,只需输入像llm '五个宠物鹈鹕的好名字'这样的提示,输出会实时显示在终端,或者重定向到文件中,如llm '五个宠物鹈鹕的好名字' > pelicans.txt

使用-c选项可以进行连续对话,比如llm -c '然后说说海豹',后续的追问可以这样添加。

LLM通过插件支持额外的模型,这些插件列在LLM插件目录中,包含远程API和本地模型的众多选择。例如,我演示了llm-claude-3插件,它提供了Anthropic Claude 3家族模型的访问,其中Claude 3 Opus的质量接近GPT-4o,而Claude 3 Haiku则更便宜且性能更好。

每次运行提示和响应都会永久记录在SQLite数据库中,你可以通过llm logs path查看数据库路径。如果安装了Datasette,可以用它浏览数据库,就像这样操作:datasette "$(llm logs path)"

我还分享了一个搜索功能,展示了我用LLM在笔记本上记录的2434个响应。通过llm -c选项,我们可以看到对话中的多轮提问。

除了远程模型,LLM还可以与本地模型如GPT4All配合,通过llm install llm-gpt4all安装。例如,你可以用Mistral-7B Instruct这款高质量的小型模型进行交互。

为了更高效地运行模型,LLM提供了llm chat命令,它可以在多个提示之间保持模型在内存中,或者使用Ollama本地服务器来运行模型。

Mozilla赞助的项目LLamafile是一个激动人心的选择,它将模型和运行所需软件打包成一个可跨平台执行的单个文件。LLM可以通过llm-llamafile插件与LLamafile实例通信。

现在,我们可以通过编写脚本来构建软件,比如我写的一个bash脚本,用于总结Hacker News的讨论,利用像Claude 3 Haiku或Google Gemini 1.5这样的长文本模型。

如果你想要贡献于LLM,编写支持新模型的插件是个好方法,我已经提供了详细的教程。另一个有趣的特性是模板,可以保存和执行参数化的提示,比如llm --system '你是一个有感知的奶酪蛋糕' -m gpt-4o --save cheesecake,然后就可以和奶酪蛋糕聊天了。

能够将内容管道输入LLM是一个强大功能,比如用cat命令读取文件并进行摘要。接着,你可以用-c选项添加后续指令。

我还分享了files-to-prompt工具,它能将文件夹中的内容转化为适合LLM的提示,我在《完全使用Claude 3 Opus构建files-to-prompt》一文中详细描述了它的创建过程。

另一个常用的工具是shot-scraper,一个用于抓取网页和执行JavaScript的命令行工具,可以直接将结果传给LLM。

在演示中,我们展示了如何利用Google搜索结果,通过JavaScript抓取信息,然后将结果输入LLM进行分析,实现了基于检索的生成(RAG)技术。

关于RAG,一种常见做法是利用嵌入和向量搜索找到与用户问题语义相关的内容,而不一定依赖精确关键词。LLM提供了llm embed-modelsllm embedllm embed-multi等命令来计算、存储和搜索嵌入。

最后,我还提到了如何让LLM与任何提供OpenAI兼容API的系统通信,以及我对LLM Python API的不稳定警告,以及个人生产力管理的一些策略。