Interpreter 是 [[Obsidian Web Clipper 简介|Web Clipper]] 的一项功能,允许你使用自然语言与网页进行交互。Interpreter 帮助你捕获和修改想要保存到 Obsidian 的数据。例如: - 提取特定的文本片段。 - 总结或解释信息。 - 将文本从一种格式转换为另一种格式。 - 将文本翻译为不同的语言。 Interpreter 利用语言模型来处理网页上的信息,并使用[[变量|变量]]返回结果,你可以将这些变量添加到你的 [[Obsidian Web Clipper/模板|Web Clipper 模板]]中。 ![[web-clipper-interpreter-demo.mp4#interface]] ## 提示词示例 提示词使用[[变量|变量]]语法 `{{"your prompt"}}`。你可以将此语法与任何自然语言查询一起使用,例如: - `{{"a summary of the page"}}` 提取页面摘要。 - `{{"a three bullet point summary, translated to French"}}` 提取关于页面的要点,并翻译为法语。 - `{{"un resumé de la page en trois points"}}` 使用法语提示词提取三个要点。 提示词的输出可以使用[[过滤器|筛选器]]进一步处理。筛选器在从模型接收到提示词响应后进行处理。例如:`{{"a summary of the page"|blockquote}}` 会将响应转换为引用块。 ## 开始使用 Interpreter 几乎可以与任何语言模型提供商配合使用,包括在你的设备上私密运行的选项。要设置 Interpreter: 1. 前往 Web Clipper 设置中的 **Interpreter** 部分。 2. 开启 **Enable Interpreter**。 3. 配置你的提供商和模型,参见下方的[[解析网页#模型|模型]]部分。 4. 将[[变量|提示变量]]添加到你的[[Obsidian Web Clipper/模板|模板]]中。 5. 如果你的模板包含提示变量,当你[[剪藏网页|剪藏页面]]时,Interpreter 部分将可见。点击**解释**来处理提示变量。 ## 工作原理 当 Interpreter 已启用*且*你的模板包含[[变量#提示变量|提示变量]]时,扩展窗口中会在 **Add to Obsidian** 按钮上方显示一个新的 Interpreter 部分。此部分允许你选择模型并为当前页面运行 Interpreter。 当你点击**解释** 时,Interpreter 会将页面上下文连同模板中的*所有*提示词一起通过一个请求发送到你选择的模型。根据你选择的模型提供商,这可以是外部调用,也可以在你的设备本地进行。模型根据页面上下文评估你的提示词,并返回其响应。然后 Interpreter 用响应数据替换提示变量。 整个过程可能需要几毫秒到超过 30 秒的时间,具体取决于你使用的模型和处理的数据量。 ## 上下文 *上下文*一词指的是 Interpreter 用于处理提示词的页面数据。上下文越小,Interpreter 运行越快。 默认情况下,Interpreter 使用整个页面的 HTML 作为其上下文,但这可能会使提示词变得比必要时更慢且更昂贵。 你可以在 Interpreter **高级设置**中覆盖默认上下文,并为每个[[Obsidian Web Clipper/模板|模板]]定义上下文。 要定义更有针对性的上下文,可以使用[[变量#选择器变量|选择器变量]](或其他变量类型)来解释页面的某个部分。例如,你可以在模板的 Interpreter 上下文中使用以下选择器变量: ``` {{selectorHtml:#main}} ``` 这将仅在网页的 `#main` 元素上运行 Interpreter(如果存在的话)。像 `remove_html`、`strip_tags` 和 `strip_attr` 这样的 [[过滤器#HTML 处理|HTML 处理筛选器]]可以进一步减少上下文长度并加快处理速度。 ## 模型 > [!warning] 隐私 > 使用第三方模型提供商即表示你同意其条款和隐私政策。Interpreter 请求会直接发送到你选择的提供商。Obsidian 不会收集或存储你的任何请求数据。 ### 预设提供商 Interpreter 包含几个预设提供商。要使用这些提供商,你需要一个 API 密钥,可以通过登录提供商的账户获取。你还需要决定使用哪个模型。 | 提供商 | API 密钥 | 模型 | | ------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------ | | Anthropic | [API 密钥](https://console.anthropic.com/settings/keys) | [模型](https://docs.anthropic.com/en/docs/about-claude/models) | | Azure OpenAI | [API 密钥](https://oai.azure.com/portal/) | [模型](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models) | | DeepSeek | [API 密钥](https://platform.deepseek.com/api_keys) | [模型](https://api-docs.deepseek.com/quick_start/pricing) | | Google Gemini | [API 密钥](https://aistudio.google.com/apikey) | [模型](https://ai.google.dev/gemini-api/docs/models/gemini) | | Hugging Face | [API 密钥](https://huggingface.co/settings/tokens) | [模型](https://huggingface.co/models?pipeline_tag=text-generation&sort=trending) | | Meta | [API 密钥](https://llama.developer.meta.com) | [模型](https://llama.developer.meta.com/docs/models) | | Ollama | 无需 | [模型](https://ollama.com/search) | | OpenAI | [API 密钥](https://platform.openai.com/api-keys) | [模型](https://platform.openai.com/docs/models) | | OpenRouter | [API 密钥](https://openrouter.ai/settings/keys) | [模型](https://openrouter.ai/models) | | Perplexity | [API 密钥](https://www.perplexity.ai/settings/api) | [模型](https://docs.perplexity.ai/guides/model-cards) | | xAI Grok | [API 密钥](https://console.x.ai/team/default/api-keys) | [模型](https://docs.x.ai/docs/models) | ### 选择模型 通常我们建议在 Web Clipper 中使用小型模型,因为它们更快,并且对于此任务的表现相当准确。小型模型的示例包括 **Anthropic 的 Claude Haiku**、**Google Gemini Flash**、具有 3B 或 8B 参数的 **Llama**,或 **OpenAI 的 Mini** 系列模型。 ### 自定义提供商和模型 要添加自定义提供商和/或模型,请前往 Web Clipper **[[设置]]** → **Interpreter**: - **Add provider** 配置预设和自定义提供商。 - **Add model** 配置预设和自定义模型。 添加自定义提供商时,我们建议你使用其聊天补全端点作为 **Base URL** — 通常以 `/chat/completions` 结尾。 ### 本地模型 Interpreter 可以使用本地模型,提供更好的隐私保护和离线兼容性。运行本地模型有多种选择。其中最容易配置的之一是 Ollama。 #### Ollama [Ollama](https://ollama.com/) 允许你在设备上本地且私密地运行语言模型。 下载并安装 Ollama 后,在 Interpreter 设置中使用 **Add provider** 添加 Ollama。Ollama 不需要 API 密钥。然后从[模型列表](https://ollama.com/search)中选择一个模型。例如,如果你想使用 [Llama 3.2](https://ollama.com/library/llama3.2),点击 **Add model**,然后: - **Provider:** Ollama - **Display name:** Llama 3.2,此值可自定义。 - **Model ID:** `llama3.2`,必须与 Ollama 中的模型 ID 完全匹配。 **启动 Ollama 服务器** 要允许浏览器扩展与 Ollama 交互,你必须在运行服务器时[给予明确指示](https://github.com/ollama/ollama/issues/2308),否则你会看到 `403` 错误。 关闭 Ollama 应用,然后在终端中运行以下命令。如果你不使用 Chrome 或 Firefox,请将协议更改为你浏览器的扩展协议。 ``` OLLAMA_ORIGINS=moz-extension://*,chrome-extension://*,safari-web-extension://* ollama serve ``` 然后按照正常方式使用 Ollama 运行你的模型,例如: ``` ollama run llama3.2 ``` **上下文长度** Ollama 的上下文窗口默认为 2048 个 token。这是消息和响应的最大 token 数。当剪藏较长的网页时,你很容易超过此限制。Ollama 会静默失败并返回不相关的结果。一些解决方案: - 增加 Ollama 的 `num_ctx` 参数。请注意,更长的上下文需要更多内存。 - 在模板中使用[[#上下文]]字段来提供页面中更有针对性的部分,或使用[[过滤器|筛选器]]裁剪上下文,例如 `{{content|slice:0,1000}}`。