当我通过HTTP节点将一个很大的pdf文档发送服务器解析时,报如下错误:Failed to invoke tool : Text size is too large, max size is 1.00 MB, but current size is 1.61 MB.
分析结果
HTTP Request 工作流节点 的响应大小限制。
根因
错误来自 graphon 包(Dify 的外部依赖)中的 Executor._validate_and_parse_response() 方法。当工作流中的 HTTP Request 节点 发起请求并收到响应时,会对响应体大小做校验:
| 响应类型 | 默认限制 |
|---|---|
| 文本响应 | 1 MB (HTTP_REQUEST_NODE_MAX_TEXT_SIZE) |
| 二进制/文件响应 | 10 MB (HTTP_REQUEST_NODE_MAX_BINARY_SIZE) |
你的场景中,HTTP Request 节点请求返回了 1.61 MB 的文本响应,超过了 1 MB 的限制,因此抛出了 ResponseSizeError,最终被包装为 "Failed to invoke tool" 的错误信息。
相关配置位置
| 位置 | 默认值 |
|---|---|
| init.py (第 583 行) | 1 * 1024 * 1024 |
| .env.example (第 528 行) | 1048576 |
| shared.env.example (第 354 行) | 1048576 |
解决方案
增加 HTTP_REQUEST_NODE_MAX_TEXT_SIZE 的值。根据你的部署方式,选择对应操作:
Docker Compose 部署 --- 在 .env 中添加:
ini
HTTP_REQUEST_NODE_MAX_TEXT_SIZE=5242880
然后重启容器:
bash
cd docker && docker compose up -d
源码部署 --- 在 api/.env 中添加:
ini
HTTP_REQUEST_NODE_MAX_TEXT_SIZE=5242880
然后重启 API 服务。
建议值
5242880= 5 MB,你可以根据实际需求调整。