详细介绍
llm 是一个由 Simon Willison 开发的强大的命令行工具,它旨在提供一个统一、简洁的接口,让开发者和普通用户能够在终端中与各种大型语言模型(LLM)进行交互。通过结合 llm 工具与本地运行的开源模型(如 Llama 3、Qwen、Mistral 等),我们可以轻松地在本地计算机上搭建一个高效、私密、完全离线的翻译系统。这种方法不仅避免了将敏感数据发送到第三方云服务,还能节省 API 调用费用,特别适合处理大量文档、代码或个人数据翻译的场景。 本文将深入探讨如何利用 llm 的灵活性和本地模型的强大能力,构建一个属于你自己的命令行翻译工具,从而将 AI 的强大能力无缝集成到你的日常工作流中。
主要特性
- 多模型支持:llm 支持多种模型,包括 OpenAI 的 GPT 系列、Anthropic 的 Claude、Google 的 Gemini 等商业 API,以及通过 llm-ollama 等插件与本地运行的开源模型集成。
- 统一的接口:llm 提供一致的命令行语法,方便使用不同的 API。
- 管道集成:llm 可与 Unix/Linux 的管道命令(|)配合,将文件内容、命令输出作为模型的输入,提高自动化和脚本编写的灵活性。
- 提示词管理:支持通过 -s 参数或配置文件管理和重用提示词,确保翻译输出质量。
- 离线运行:结合 Ollama 等本地模型运行服务,实现离线翻译,确保数据隐私和安全。
使用场景
- 文档翻译:快速翻译技术文档、项目说明或个人笔记。例如,通过 cat README.en.txt | llm -m qwen -s “翻译成中文” 得到翻译后的文件。
- 代码注释翻译:翻译外国开源项目的代码注释,方便理解代码逻辑。
- 批量翻译:编写 Shell 脚本,自动化处理文件夹内所有文件的翻译任务。
- 数据脱敏处理:在翻译敏感数据之前,利用 LLM 进行数据脱敏或格式化。
- 学习和研究:作为学习外语或研究不同语言表达的辅助工具,快速获取文本的译文。
技术特点
- 插件化架构:llm 采用插件系统,通过安装 llm-ollama、llm-gemini 等插件,扩展其支持的模型。
- Python 驱动:llm 是一个 Python 工具,易于安装和配置,方便与其他 Python 库和脚本集成.
- 兼容性高:它通过 OpenAI 兼容的 API 端点连接本地模型服务(如 Ollama 或 vLLM),利用开源生态。
- 轻量级:llm 专注于处理命令行参数、与模型 API 通信以及管理配置,性能负担小。
- 数据安全:通过本地模型,所有处理都在机器上完成,数据无需通过网络传输,解决数据隐私泄露的风险。
实际案例:Qwen + LLM 构建本地翻译工具
前置需求:获取阿里云百炼 服务
API Key。
- 模型配置
修改配置文件 ~/.config/io.datasette.llm/extra-openai-models.yaml:
- model_id: qwen-turbo-latest
model_name: qwen-turbo-latest
aliases: ["qwen"]
api_base: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
api_key_name: 'DASHSCOPE_API_KEY'
这里 DASHSCOPE_API_KEY 需要通过 llm keys set DASHSCOPE_API_KEY 创建。
- 调用
简单聊天:
$ llm -m qwen "你好"
你好!有什么我可以帮你的吗?
内容翻译:
$ llm -m qwen "翻译:Whta's llm?"
什么是LLM?
工具帮助内容翻译,这里以 llm 为例:
$ llm -h | llm -m qwen -s "你是一名cli文档翻译专家。帮我翻译cli文档内容,输出Markdown格式。"
使用方法:llm [选项] 命令 [参数]...
从命令行访问大型语言模型
文档:https://llm.datasette.io/
LLM 可以运行来自多个不同提供商的模型。请查阅插件目录以获取可用模型列表:
https://llm.datasette.io/en/stable/plugins/directory.html
要开始使用 OpenAI,请从他们那里获取 API 密钥并执行以下操作:
$ llm keys set openai
输入密钥:...
然后像这样执行一个提示:
llm '给一只宠物鹈鹕起五个荒谬的名字'
要查看完整的提示选项,请运行:
llm prompt --help
选项:
--version 显示版本信息并退出。
-h, --help 显示此帮助信息并退出。
命令:
prompt* 执行提示
aliases 管理模型别名
chat 与模型进行持续对话
collections 查看和管理嵌入集合
embed 对文本进行嵌入,并存储或返回结果
embed-models 管理可用的嵌入模型
embed-multi 一次性将多个字符串的嵌入存储到数据库中...
fragments 管理存储在数据库中的片段
install 将 PyPI 包安装到与 LLM 相同的环境中
keys 管理不同模型的已存储 API 密钥
logs 用于探索记录的提示和响应的工具
models 管理可用模型
openai 直接操作 OpenAI API 的命令
plugins 列出已安装的插件
schemas 管理存储的模式
similar 使用余弦相似度从集合中返回前 N 个相似 ID
templates 管理存储的提示模板
tools 管理可提供给 LLM 的工具
uninstall 从 LLM 环境中卸载 Python 包
