SearxNG搜索API
This page covers how to use the SearxNG search API within LangChain. It is broken into two parts: installation and setup, and then references to the specific SearxNG API wrapper.
安装和设置
虽然可以将包装器与公共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.utilities import SearxSearchWrapper
s = SearxSearchWrapper(searx_host="http://localhost:8888")
s.run("what is a large language model?")
工具
您还可以将此包装器加载为工具(与代理一起使用)。
可以使用以下代码实现:
from langchain.agents 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.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"]
})
有关工具的更多信息,请参阅此页面。