问题描述
所有 5 个 Rerank 提供商(vLLM、Xinference、百炼、NVIDIA、TEI)均不支持 HTTP 代理配置。配置了代理后,Rerank 请求完全绕过代理,导致超时失败或仅能直连访问。
对比之下,Chat/LLM、Embedding、TTS、STT 提供商都通过 proxy 配置字段和 create_proxy_client() 工具函数正确支持了代理。
复现步骤
- 在 AstrBot 全局设置中配置 HTTP 代理(
http_proxy)
- 添加一个 Rerank 提供商(如百炼 Rerank),指向外部 API 端点
- 启用知识库并使用重排序功能
- Rerank 请求超时或连接失败
- 代理软件无任何请求记录(流量绕过了代理)
预期结果
Rerank 提供商应和 Chat/Embedding/TTS/STT 提供商一样,支持代理配置。
根因分析
4 个基于 aiohttp 的 Rerank 提供商(vllm_rerank、bailian_rerank、nvidia_rerank、tei_rerank)在创建 aiohttp.ClientSession 时未传入任何代理参数:
# 当前代码(以 vllm_rerank_source.py 为例)
self.client = aiohttp.ClientSession(
headers=h,
timeout=aiohttp.ClientTimeout(total=self.timeout),
)
# 无 proxy 参数,无 trust_env=True
问题链:
default.py 中 Rerank 提供商配置模板缺少 proxy 字段
aiohttp.ClientSession 默认 trust_env=False,忽略 core_lifecycle.py 设置的 http_proxy/https_proxy 环境变量
- 请求调用中也未传递
proxy 参数
环境信息
- AstrBot 版本:latest (master)
- 部署方式:任意
- 受影响提供商:vLLM Rerank、Xinference Rerank、百炼 Rerank、NVIDIA Rerank、TEI Rerank
问题描述
所有 5 个 Rerank 提供商(vLLM、Xinference、百炼、NVIDIA、TEI)均不支持 HTTP 代理配置。配置了代理后,Rerank 请求完全绕过代理,导致超时失败或仅能直连访问。
对比之下,Chat/LLM、Embedding、TTS、STT 提供商都通过
proxy配置字段和create_proxy_client()工具函数正确支持了代理。复现步骤
http_proxy)预期结果
Rerank 提供商应和 Chat/Embedding/TTS/STT 提供商一样,支持代理配置。
根因分析
4 个基于 aiohttp 的 Rerank 提供商(
vllm_rerank、bailian_rerank、nvidia_rerank、tei_rerank)在创建aiohttp.ClientSession时未传入任何代理参数:问题链:
default.py中 Rerank 提供商配置模板缺少proxy字段aiohttp.ClientSession默认trust_env=False,忽略core_lifecycle.py设置的http_proxy/https_proxy环境变量proxy参数环境信息