网页搜索

将网页搜索结果添加到 LLM 提示词中。

可用来源

Selenium Plugin

需要安装并启用官方服务器插件。

详情请参见 SillyTavern-WebSearch-Selenium

支持 Google 和 DuckDuckGo 引擎。

Extras API

需要在主机上安装 websearch 模块以及 Chrome/Firefox 网页浏览器。

支持 Google 和 DuckDuckGo 引擎。

SerpApi

需要 API 密钥。

在此获取密钥:https://serpapi.com/dashboard

SearXNG

需要 SearXNG 实例 URL(私有或公共均可)。搜索结果使用 HTML 格式。

SearXNG 偏好设置字符串:从 SearXNG - preferences - COOKIES - Copy preferences hash 获取。

了解更多:https://docs.searxng.org/

Tavily AI

需要 API 密钥。

在此获取密钥:https://app.tavily.com/

KoboldCpp

必须在文本补全 API 设置中提供 KoboldCpp URL。KoboldCpp 版本必须 >= 1.81.1,并且启动时必须启用 WebSearch 模块:在 GUI 启动器中启用 Network => Enable WebSearch,或者在命令行中添加 --websearch

参见:https://github.com/LostRuins/koboldcpp/releases/tag/v1.81.1

Serper

需要 API 密钥。

在此获取密钥:https://serper.dev/

Z.AI

需要 API 密钥,请先在聊天补全 API 设置中配置。与 Coding API 订阅不兼容!

在此获取密钥:https://z.ai/manage-apikey/apikey-list/

文档:https://docs.z.ai/api-reference/tools/web-search

使用方法

  1. 确保你使用的是最新版本的 SillyTavern。
  2. 通过 SillyTavern 的“下载扩展与素材(Download Extensions & Assets)”菜单安装本扩展。
  3. 打开“网页搜索(Web Search)”扩展设置,设置你的 API 密钥或连接到 Extras,然后启用扩展。
  4. 聊天时,网页搜索结果会自然地添加到提示词中。只有用户消息会触发搜索。
  5. 为了让搜索结果更自然地融入,可以用单反引号包裹搜索查询:Tell me about the `latest Ryan Gosling movie`. 将生成搜索查询 latest Ryan Gosling movie
  6. 可根据个人喜好进行设置配置。

设置

常规

  1. Enabled - 开启或关闭本扩展。
  2. Sources - 设置搜索结果来源。
  3. Cache Lifetime - 搜索结果为提示词缓存的时长(以秒为单位)。默认 = 一周。

提示词设置

  1. Prompt Budget - 设置插入文本的最大容量(按文本字符数计算,而非 token)。经验法则:1 个 token 约 3-4 个字符,请根据模型的上下文限制进行调整。默认 = 1500 个字符。
  2. Insertion Template - 搜索结果插入提示词的方式。支持常规宏及特殊宏:{{query}} 表示搜索查询,{{text}} 表示搜索结果。
  3. Injection Position - 搜索结果在提示词中的插入位置。选项与作者备注相同:聊天内注入,或系统提示词之前/之后。

搜索激活

  1. Use function tool - 使用函数调用来激活搜索或抓取网页。必须使用受支持的聊天补全 API,并在 AI 响应设置中启用。启用后将禁用所有其他激活方式。
  2. Use Backticks - 启用通过单反引号包裹的词来激活搜索。
  3. Use Trigger Phrases - 启用通过触发词来激活搜索。
  4. Regular expressions - 提供一个 JS 风格的正则表达式来匹配用户消息。如果匹配成功,将使用给定查询触发搜索。搜索查询支持 `` 宏和 $1 语法来引用匹配的捕获组。示例:正则表达式 /what is happening in (.*)/i 配合搜索查询 news in $1,可匹配包含 what is happening in New York 的消息,并触发查询 news in New York 的搜索。
  5. Trigger Phrases - 逐个添加会触发搜索的短语。它可以出现在消息中的任何位置,查询从触发词开始,并延伸至总共“Max Words”个词。若要将某条消息排除在处理范围之外,它必须以句点开头,例如 .What do you think?。触发优先级:先按文本框中的顺序,再按用户消息中出现的先后。
  6. Max Words - 搜索查询中包含的词数(包括触发词)。Google 对每个查询约限制 32 个词。默认 = 10 个词。

页面抓取

  1. Visit Links - 将从访问的搜索结果页面中提取文本,并保存为文件附件。
  2. Visit Count - 要访问并解析文本的链接数量。
  3. Visit Domain Blacklist - 要排除访问的站点域名。每行一个。
  4. File Header - 文件头模板,插入到文本文件开头,带有额外的 {{query}} 宏。
  5. Block Header - 链接块模板,随每个链接的解析内容插入。使用 {{link}} 宏表示页面 URL,使用 {{text}} 宏表示页面内容。
  6. Save Target - 抓取结果的保存位置。可选:触发消息附件、数据银行的聊天附件,或仅图片(如果来源支持)。
  7. Include Images - 将相关图片附加到聊天中。需要支持图片的来源(见下文)。

更多信息

来自最近一次查询的搜索结果会保留在提示词中,直到找到下一次有效查询。

如果你想在提问时避免意外触发搜索,请以句点开头你的消息。

触发器优先级(当多个同时启用时):

  1. 反引号。
  2. 正则表达式。
  3. 触发词。

若要丢弃此前所有查询的处理,请以感叹号开头用户消息,例如用户消息 !Now let's talk about... 将丢弃这条及它上面的所有消息。

本扩展还提供一个可在 STscript 中使用的 /websearch 斜杠命令。更多信息请参见:STscript 语言参考

stscript
/websearch (links=on|off snippets=on|off [query]) – performs a web search query. Use named arguments to specify what to return - page snippets (default: on), full parsed pages (default: off) or both.

Example: /websearch links=off snippets=on how to make a sandwich

搜索结果可以包含哪些内容?

词典说明:

  • Answer box:问题的直接答案。
  • Knowledge graph:关于该主题的百科知识。
  • Page snippets:网页中的相关摘录。
  • Relevant questions:相关主题的问答。
  • Images:相关图片。

SerpApi

  1. Answer box。
  2. Knowledge graph。
  3. Page snippets(最多 10 条)。
  4. Relevant questions(最多 10 条)。
  5. Images(最多 10 张)。

Selenium Plugin 和 Extras API

  1. Google - answer box、knowledge graph、page snippets。
  2. DuckDuckGo - page snippets。

Selenium Plugin 还可以额外提供图片。

SearXNG

  1. Infobox。
  2. Page snippets。
  3. Images。

Tavily AI

  1. Answer。
  2. Page contents。
  3. Images(最多 5 张)。

KoboldCpp

  1. Page titles。
  2. Page snippets。

Serper

  1. Answer box。
  2. Knowledge graph。
  3. Page snippets。
  4. Relevant questions。
  5. Images。

Z.AI

  1. Page titles。
  2. Page snippets。