Appearance
集成 / 部署
集成 / 部署关注的是:Agent 系统在真实运行环境里怎么连通外部服务、怎么暴露接口、怎么排查环境问题。
一、代理配置导致 OpenAI SDK 请求失败
这类问题的本质不是模型能力问题,也不是 prompt 问题,而是:
应用运行时读到了错误的代理配置,导致
Node/OpenAI SDK的底层HTTP请求被转发到一个不可用的本地代理端口。
典型现象
日志里反复出现:
text
RUM flush failed. Error: connect ECONNREFUSED 127.0.0.1:7897这里的关键信息是:
text
ECONNREFUSED 127.0.0.1:7897意思是:程序尝试连接本机的 7897 端口,但这个端口上没有服务在监听,所以连接被拒绝。
ECONNREFUSED 127.0.0.1:7897 说明请求没有真正发到 OpenAI,而是先被错误地导向了本地代理端口。
为什么 curl 能通,但应用不通
这类问题很容易迷惑,因为你手动执行:
bash
curl https://api.openai.com/v1/models可能是通的。
但应用运行时不一定和你手动 curl 使用同一套网络配置。
比如 OpenGame 里的 Node / undici / OpenAI SDK 可能会读取这些环境变量:
bash
HTTP_PROXY
HTTPS_PROXY
ALL_PROXY
http_proxy
https_proxy
all_proxy如果其中某个变量指向了:
text
127.0.0.1:7897而这个代理端口又没有启动,那么 SDK 的请求就会失败。
curl 能通只能证明当前 shell 下某次请求能通,不能证明应用运行时的代理环境也是干净的。
这个问题属于哪个知识板块
它主要属于:
text
集成 / 部署
└─ 运行环境问题
├─ 环境变量
├─ 代理配置
├─ Node / SDK 网络请求
├─ 本地端口
└─ 线上 / 本地调试它也和 LLM 生态 有关系,因为 SDK 底层还是在发 HTTP 请求。
但主分类不是 LLM 基础,也不是 Agent Core。
这是一个典型的“模型调用失败,但根因在运行环境”的集成 / 部署问题。
排查思路
先看日志里有没有代理端口:
text
127.0.0.1:7897
127.0.0.1:7890
localhost:7890再检查环境变量:
bash
env | grep -i proxy如果看到类似:
bash
HTTPS_PROXY=http://127.0.0.1:7897
HTTP_PROXY=http://127.0.0.1:7897
ALL_PROXY=socks5://127.0.0.1:7897就说明应用可能正在走这个代理。
临时清空代理可以这样做:
bash
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
unset http_proxy https_proxy all_proxy如果是启动应用时要强制清空,可以在命令前加:
bash
env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY \
-u http_proxy -u https_proxy -u all_proxy \
npm run dev也可以用“变量赋空值”的方式,只对当前这一次命令生效:
bash
HTTP_PROXY= HTTPS_PROXY= http_proxy= https_proxy= ALL_PROXY= all_proxy= \
NO_PROXY=vla.lat,localhost,127.0.0.1 \
opengame ...这里的意思不是“OpenGame 官方要求这样写”,也不是“中转站要求这样写”。
它只是临时告诉当前进程:
这次启动时不要使用本地残留的代理环境变量。
所以这个命令解决的是本地环境问题。
如果想永久解决,有两个方向:
- 启动本地代理软件,让
127.0.0.1:7897这个代理地址真的可用。 - 从 shell 配置里删掉失效代理,比如
~/.zshrc、~/.zprofile或代理软件自动注入的配置。
遇到 SDK 请求失败时,不要只查 API key 和模型名,也要检查代理环境变量;临时清空代理只影响当前命令,不会修改系统配置。
以后遇到类似问题怎么判断
如果错误信息里有:
text
ECONNREFUSED 127.0.0.1:<port>优先怀疑:
- 本地代理端口没启动
- 环境变量里残留了代理配置
- 应用和终端使用的代理配置不一致
Node/undici/OpenAI SDK读取了全局代理
如果错误信息是:
text
401 Unauthorized才更像是 API key 问题。
如果错误信息是:
text
404 model_not_found才更像是模型名或权限问题。
先看报错落在哪一层——网络层、认证层、还是模型层,不要所有问题都归因到 OpenAI 或 SDK。