Decentralization? We're still early!

如何使用 Google PSE API 为 Open WebUI 添加联网搜索功能

A man sitting in front of a laptop computer

Open WebUI 作为一款优秀的大语言模型 (LLM) WebUI,凭借其可扩展性、丰富的功能以及友好的用户界面,受到了广泛的欢迎。然而,Open WebUI 原生并不直接支持 Google 搜索,这在一定程度上限制了其信息获取的能力。本文将详细探讨如何利用 Google Programmable Search Engine (PSE) API,为 Open WebUI 赋能,使其具备便捷的 Google 联网搜索功能。

一、为什么选择 Google PSE API

Google Programmable Search Engine (PSE) API 允许开发者创建自定义的搜索引擎,并通过 API 接口进行调用。相比于直接抓取 Google 搜索结果或其他搜索 API,它具有以下显著优势:

  • Google 搜索技术支持: PSE API 直接依托于 Google 强大的搜索技术,能够提供高质量、高相关性的搜索结果。这意味着 Open WebUI 可以获得与直接使用 Google 搜索相媲美的搜索体验。
  • 高度可定制化: 通过 PSE 控制面板,你可以对搜索引擎进行高度定制,以满足个性化的需求。例如,你可以限定搜索范围(只搜索特定网站或整个网络)、调整搜索结果的排名、添加推广内容等。
  • JSON 格式输出: PSE API 返回 JSON 格式的数据,这对于 Open WebUI 来说非常友好。JSON 格式易于解析和处理,方便 Open WebUI 将搜索结果集成到对话流程中。
  • RESTful API: 可以通过 RESTful 请求获取 JSON 格式的网页搜索或图片搜索结果。

二、准备工作:获取 API 密钥和搜索引擎 ID

在使用 Google PSE API 之前,我们需要完成一些准备工作,主要包括创建 Programmable Search Engine 和获取 API 密钥。

  1. 创建 Programmable Search Engine (PSE):
    • 访问 Programmable Search Engine 控制面板
    • 按照页面提示和教程,创建一个新的自定义搜索引擎。在创建过程中,你需要配置一些关键选项,例如:
      • 要搜索的网站: 你可以选择搜索整个网络,也可以指定一个或多个特定的网站进行搜索。如果希望 Open WebUI 能够获取更广泛的信息,建议选择搜索整个网络。
      • 搜索引擎名称: 为你的搜索引擎起一个易于识别的名称。
    • 创建完成后,在搜索引擎的“概览”页面,找到“基本信息”部分。在这里,你可以找到“搜索引擎 ID”(Search engine ID)。请务必记录下这个 ID,它将在后续的 API 调用中使用。
  2. 获取 API 密钥:
    • 访问 Google Cloud 控制台
    • 如果你还没有 Google Cloud 项目,需要先创建一个。
    • 在左侧导航栏中,找到并点击“API 和服务”。
    • 在“API 和服务”页面,点击“启用 API 和服务”。
    • 在搜索框中输入“Custom Search JSON API”,找到并启用它。
    • 启用 API 后,返回“API 和服务”页面,点击“凭据”。
    • 在“凭据”页面,点击“创建凭据”,然后选择“API 密钥”。
    • 系统会生成一个新的 API 密钥。请务必复制并妥善保存这个密钥。
    • (可选但强烈建议)为了提高安全性,你可以对 API 密钥进行限制。点击新创建的 API 密钥,进入编辑页面。在“密钥限制”部分,选择“API 限制”,然后选择“限制密钥”。在下拉菜单中,选择“Custom Search JSON API”,然后保存更改。这样,该 API 密钥就只能用于访问 Custom Search JSON API,防止被滥用。

三、在 Open WebUI 中配置 Google PSE API

假设你使用 Docker 来部署和运行 Open WebUI。以下是在 Docker 环境下配置 Google PSE API 的详细步骤:

  1. 登录 Open WebUI: 通过浏览器访问你的 Open WebUI 实例。
  2. 进入设置: 点击页面右上角你的用户名,然后选择“设置”(Settings)。
  3. 配置环境变量:
    • 找到你的 Open WebUI 的 docker-compose.yml 文件(或者用于启动 Open WebUI 的 Docker 脚本)。
    • environment 部分,添加或修改以下环境变量: environment: - GOOGLE_PSE_API_KEY=YOUR_API_KEY # 将 YOUR_API_KEY 替换为你的实际 API 密钥 - GOOGLE_PSE_ENGINE_ID=YOUR_ENGINE_ID # 将 YOUR_ENGINE_ID 替换为你的实际搜索引擎 ID - RAG_WEB_SEARCH_ENGINE=google_pse #启用Google PSE
    • 重要提示: 请务必将 YOUR_API_KEYYOUR_ENGINE_ID 替换为你实际获取到的 API 密钥和搜索引擎 ID。
    • 如果 Open WebUI 已经在运行中,你需要重启 Open WebUI 的 Docker 容器,以使环境变量的更改生效。可以使用 docker-compose restart 命令(如果你使用 Docker Compose)或相应的 Docker 命令来重启容器。
  4. 在 Open WebUI 中启用 Web Search:
    • 返回 Open WebUI 的设置页面.
    • 确保 RAG (Retrieval-Augmented Generation) 选项已启用.
    • 确保 Web Search 选项已启用。
    • Web Search Engine 选项中, 选择 google_pse.

四、使用与测试

完成上述配置后,Open WebUI 就已经可以通过 Google PSE API 进行联网搜索了。

现在,你可以在 Open WebUI 的聊天界面中直接输入搜索关键词。Open WebUI 会自动调用 Google PSE API,获取相关的搜索结果,并将这些结果整合到对话中,为用户提供更丰富、更全面的信息。

五、注意事项

  • 免费额度: Google Custom Search JSON API 每天提供 100 次免费的搜索查询。如果你的 Open WebUI 使用量较大,超出了免费额度,则需要按照 Google 的定价标准支付费用。费用为每 1000 次查询 5 美元,每天最多 10000 次查询。
  • 速率限制: 为了防止滥用,Google 对 API 的调用频率进行了限制。你需要注意 API 的调用频率,避免超出限制,否则可能会导致 API 调用失败。
  • 结果差异: Google PSE API 的搜索结果与直接在 Google 网页上进行的搜索结果可能会略有不同。这是因为 PSE API 允许你对搜索引擎进行自定义配置,而这些配置可能会影响搜索结果的排序和呈现。
  • API 密钥安全: 绝对不要 将你的 API 密钥直接硬编码在前端代码或公开的配置文件中。这样做会暴露你的 API 密钥,导致安全风险。使用环境变量是存储和使用 API 密钥的最安全方式。
  • RAG_TEMPLATE: 如果要自定义 RAG 的 Prompt, 可以修改 RAG_TEMPLATE 环境变量。

六、进阶操作

  • 自定义搜索引擎: 在 Google Programmable Search Engine 控制面板中,你可以进一步定制你的搜索引擎,以获得更符合你需求的结果。例如:
    • 添加特定网站: 如果你希望 Open WebUI 主要从某些特定的网站获取信息,可以将这些网站添加到搜索引擎的“要搜索的网站”列表中。
    • 调整排名: 你可以通过“搜索功能”->“高级”->“调整结果”来微调搜索结果的排名,将你认为更重要的网站排在更靠前的位置。
    • 启用图片搜索: 如果你希望 Open WebUI 也能够搜索图片,可以在搜索引擎的设置中启用图片搜索功能。
  • 探索 Open WebUI 的 RAG 功能: Open WebUI 的 RAG (Retrieval-Augmented Generation) 功能可以将搜索结果与 LLM 的生成能力相结合,为用户提供更丰富、更深入、更具洞察力的回答。

七、更优选择:推荐使用 SearXNG 等中间件

虽然直接使用 Google PSE API 可以为 Open WebUI 带来 Google 联网搜索功能,但从实际应用的角度出发,更推荐使用 SearXNG 等元搜索引擎中间件来实现这一目标。

SearXNG 是一款开源、免费且高度注重隐私的元搜索引擎。它能够聚合多个搜索引擎(包括 Google、Bing、DuckDuckGo 等)的搜索结果,并提供丰富的功能和高度的可定制性。相对于直接使用 Google PSE API,使用 SearXNG 具有以下显著优势:

  1. 简化配置: 部署和配置 SearXNG 通常比直接配置 Google PSE API 更加简便。用户只需部署一个 SearXNG 实例,然后在 Open WebUI 中配置 SearXNG 的 URL 即可,无需申请 Google API 密钥、管理配额以及处理复杂的 API 调用。
  2. 多搜索引擎聚合: SearXNG 的核心优势在于其能够同时搜索多个搜索引擎。这意味着 Open WebUI 可以获取更全面、更多样化的搜索结果,减少对单一搜索引擎(如 Google)的依赖。用户可以获得来自不同来源的信息,提高搜索的广度和深度。
  3. 隐私保护: SearXNG অত্যন্ত注重用户隐私,不会跟踪用户的搜索历史,也不会将用户的搜索请求发送给任何第三方。对于那些非常重视个人隐私的用户来说,这是一个至关重要的优势。
  4. 结果过滤与定制: SearXNG 提供了丰富的搜索结果过滤和定制选项。用户可以根据自己的特定需求,过滤掉不相关或不希望看到的结果、调整搜索结果的排序方式、自定义搜索结果的显示格式等。
  5. 规避 API 限制: 通过 SearXNG,用户可以间接使用 Google 搜索,而无需直接面对 Google API 的配额限制和速率限制。SearXNG 能够更智能地管理对 Google 的请求,降低触发 API 限制的风险。
  6. 开源与透明: SearXNG 是一个开源项目,其代码完全公开透明。这意味着用户可以审查其代码,确保其安全性和可靠性,并可以根据自己的需要进行修改和定制。
  7. JSON格式输出: SearXNG 可以返回JSON格式的搜索结果, 方便Open WebUI集成.

八、总结与建议

综上所述,尽管 Google PSE API 提供了一种直接访问 Google 搜索的方式,但从配置的简便性、搜索结果的全面性、用户隐私的保护、以及对 API 限制的规避等多个方面考虑,使用 SearXNG 等元搜索引擎中间件通常是更优的选择。它不仅能为 Open WebUI 带来强大的联网搜索能力,还能提供更好的用户体验和更高的灵活性。关于如何具体部署和配置 SearXNG 以与 Open WebUI 集成,我们将另文详细讨论。

作为非营利站点,基地的建设离不开大家的捐助支持。在Cardano钱包(如Lace、Eternl 等)中输入 ADA Handle 名称$brave2049,即可为基地提供小额捐助。为支持Cardano治理和基地建设,亦欢迎将Cardano链上治理权限委托给Brave(Brave的Cardano链上治理DRep信息)

相關文章

Open WebUI:AI 应用的 WordPress 时刻?

Open WebUI 的出现,预示着这个“WordPress 时刻”或许即将到来,让每个人都能在本地运行强大的 LLM。 随着 AI 模型协同使用成为重要趋势,能够支持多种模型的平台将更具优势。 本文将 Open WebUI 与其他开源 AI 工具进行比较,探讨 AI 平民化的未来。

回复