You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain调用Searx API遇Too Many Requests错误求助

解决Searx API请求超限(Too Many Requests)问题

以下是几种可行的解决方法:

1. 添加请求延迟与重试机制

公共Searx实例普遍有请求频率限制,通过在请求之间添加延迟,并对失败请求进行重试,可避免触发限流。使用tenacity库实现重试逻辑:

首先安装依赖:

pip install tenacity

然后修改工具调用逻辑,给Searx搜索工具添加重试装饰器:

from tenacity import retry, stop_after_attempt, wait_exponential_jitter
from langchain.tools.searx_search.tool import SearxSearchTool
from langchain.agents import initialize_agent, AgentType

# 自定义带重试的Searx工具
class RetrySearxSearchTool(SearxSearchTool):
    @retry(stop=stop_after_attempt(3), wait=wait_exponential_jitter(jitter=1))
    def _run(self, query: str) -> str:
        return super()._run(query)

# 初始化工具
tools = [RetrySearxSearchTool(searx_host="https://search.bus-hit.me/")]

# 后续agent初始化和调用不变
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("What is the weather in Pomfret")

2. 更换公共Searx实例

不同公共Searx实例的限流策略不同,更换限制更宽松的实例即可。修改代码中的searx_host参数:

tools = load_tools(["searx-search"], searx_host="https://searx.be/", llm=llm)

3. 部署私有Searx实例

如果频繁使用搜索功能,建议自己部署Searx实例,完全不受公共实例的限流约束。通过Docker快速部署:

docker run -d -p 8080:8080 searx/searx

部署完成后,将searx_host设置为自己的实例地址(如http://localhost:8080/)即可。

4. 替换为其他搜索工具

如果不想在Searx上耗费精力,可改用LangChain支持的其他搜索工具,比如SerpAPI:

# 安装依赖
# pip install google-search-results

from langchain.tools import load_tools
from langchain.agents import initialize_agent, AgentType

tools = load_tools(["serpapi"], serpapi_api_key="你的SerpAPI密钥", llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("What is the weather in Pomfret")

内容的提问来源于stack exchange,提问作者aden_lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:00:36