使用LangChain的TavilySearch工具时遭遇SSL错误求助
解决Tavily Search接口SSL证书验证失败问题
问题重现
执行代码:
from langchain_community.tools.tavily_search import TavilySearchResults tool = TavilySearchResults(max_results=2) tools = [tool] tool.invoke("What's a 'node' in LangGraph?")
出现错误:
SSLError(MaxRetryError("HTTPSConnectionPool(host='api.tavily.com', port=443): Max retries exceeded with url: /search (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)')))"))
已尝试操作:pip install --upgrade certifi、将api.tavily.com的SSL证书添加到cacert.pem、提升API使用限额,问题未消除。
可行解决方案
1. 临时禁用SSL验证(仅测试环境用)
通过传递requests_kwargs参数关闭SSL验证,快速验证接口可用性:
from langchain_community.tools.tavily_search import TavilySearchResults # 仅测试环境使用,生产环境禁用 tool = TavilySearchResults(max_results=2, requests_kwargs={"verify": False}) tool.invoke("What's a 'node' in LangGraph?")
⚠️ 注意:此方法会跳过证书校验,存在安全风险,不能用于生产环境。
2. 手动指定证书文件路径
强制使用certifi提供的证书,或自定义证书文件路径:
import certifi from langchain_community.tools.tavily_search import TavilySearchResults # 使用certifi默认证书 tool = TavilySearchResults(max_results=2, requests_kwargs={"verify": certifi.where()}) # 若有自定义证书文件,替换为你的路径:比如"~/custom_certs/cacert.pem" # tool = TavilySearchResults(max_results=2, requests_kwargs={"verify": "~/custom_certs/cacert.pem"}) tool.invoke("What's a 'node' in LangGraph?")
3. 关闭代理或禁用请求代理
代理工具可能会替换HTTPS证书导致验证失败,尝试关闭全局代理,或在代码中禁用代理:
from langchain_community.tools.tavily_search import TavilySearchResults # 禁用请求代理 tool = TavilySearchResults( max_results=2, requests_kwargs={"verify": True, "proxies": {"http": None, "https": None}} ) tool.invoke("What's a 'node' in LangGraph?")
4. 设置环境变量指定证书路径
通过环境变量让Python请求库强制使用certifi证书:
# Linux/macOS终端执行 export SSL_CERT_FILE=$(python -m certifi) # Windows PowerShell执行 $env:SSL_CERT_FILE = (python -m certifi)
设置完成后再运行你的Python代码。
内容的提问来源于stack exchange,提问作者Khac Minh Le
相关产品推荐
相关产品推荐

