Skip to main content
本页介绍如何在 LangChain 中使用 SearxNG 搜索 API。 内容分为两部分:安装与设置,以及对特定 SearxNG API 封装器的参考说明。

安装与设置

虽然可以将封装器与公共 searx 实例一起使用,但这些实例通常不允许 API 访问(请参阅下方关于输出格式的说明),并且对请求频率有限制。建议选择自托管实例。

自托管实例:

安装说明请参阅此页面 安装 SearxNG 后,默认情况下只有 HTML 格式是活跃的输出格式。 您需要激活 json 格式才能使用 API。可以在 settings.yml 文件中添加以下行来实现:
search:
    formats:
        - html
        - json
您可以通过向 API 端点发送 curl 请求来验证 API 是否正常工作: curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888 这应该会返回包含结果的 JSON 对象。

封装器

工具类

要使用封装器,我们需要通过以下方式将 SearxNG 实例的主机传递给封装器:
  1. 在创建实例时使用命名参数 searx_host
  2. 导出环境变量 SEARXNG_HOST
您可以使用封装器从 SearxNG 实例获取结果。
from langchain_community.utilities import SearxSearchWrapper
s = SearxSearchWrapper(searx_host="http://localhost:8888")
s.run("what is a large language model?")

工具

您也可以将此封装器加载为工具(与代理一起使用)。 操作方式:
from langchain_community.agent_toolkits.load_tools import load_tools
tools = load_tools(["searx-search"],
                    searx_host="http://localhost:8888",
                    engines=["github"])
注意,我们可以_可选地_传入要使用的自定义引擎。 如果您希望以 json 格式获取带元数据的结果,可以使用:
tools = load_tools(["searx-search-results-json"],
                    searx_host="http://localhost:8888",
                    num_results=5)

快速创建工具

以下示例展示了从同一封装器快速创建多个工具的方法。
from langchain_community.tools.searx_search.tool import SearxSearchResults

wrapper = SearxSearchWrapper(searx_host="**")
github_tool = SearxSearchResults(name="GitHub", wrapper=wrapper,
                            kwargs = {
                                "engines": ["github"],
                                })

arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
                            kwargs = {
                                "engines": ["arxiv"]
                                })
有关工具的更多信息,请参阅此页面