Skip to content

集成 / 部署

集成 / 部署关注的是: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 官方要求这样写”,也不是“中转站要求这样写”。

它只是临时告诉当前进程:

这次启动时不要使用本地残留的代理环境变量。

所以这个命令解决的是本地环境问题

如果想永久解决,有两个方向:

  1. 启动本地代理软件,让 127.0.0.1:7897 这个代理地址真的可用。
  2. 从 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。