一个轻量、高效的 Node.js API 网关,专为优化大语言模型(LLM)的流式响应而设计,提供丝般顺滑的“打字机”效果。
目前仅支持openai格式,建议的使用方法是和New API项目配合使用。
- 丝滑流式体验: 将上游 API 不稳定的“块状”输出,智能转换为平滑、连续的字符流。
- 动态延迟: 根据文本块的长度自动调整“打字”速度,短文本从容,长文本高效。
- 完全可配置: 所有优化参数(延迟、阈值等)、端口、上游地址均可通过环境变量或
.env文件配置。 - 通用代理: 智能区分流式与非流式请求,完美兼容如“标题生成”等一次性JSON响应功能。
- Docker化: 提供 Dockerfile,一键构建和部署,与宿主环境完全解耦。
- 轻量高效: 基于 Node.js 和 Express,资源占用低,并发性能强。
本项目通过 .env 文件进行配置,方便且安全。所有可用的配置项都已在 .env.example 文件中列出并附有说明。
| 环境变量 | 描述 | 默认值 |
|---|---|---|
UPSTREAM_API_URL |
必需! 您的上游API地址。 | (无) |
PORT |
网关监听的端口。 | 3001 |
LOG_LEVEL |
日志级别 (debug 或 silent)。 |
silent |
STREAM_MIN_DELAY |
流式输出的最小延迟(秒)。 | 0.016 |
STREAM_MAX_DELAY |
流式输出的最大延迟(秒)。 | 0.024 |
STREAM_SHORT_TEXT_THRESHOLD |
短文本阈值(字符)。 | 10 |
STREAM_LONG_TEXT_THRESHOLD |
长文本阈值(字符)。 | 50 |
STREAM_CHUNK_SIZE |
长文本分块大小(字符)。 | 5 |
我们推荐使用最新的稳定 Release 版本进行部署。以下命令将自动下载并解压最新版源码。
前提: 您的系统已安装 curl 或 wget。
-
一键下载并解压
选择以下任一命令执行即可。它会自动下载 v1.0 版本并解压。
提示: 当项目发布新版本时,只需修改命令中的版本号即可下载新版,每当在推送发行版时,我都会顺带地在这里把版本号改为最新的,当然有时候可能会忘记,诸位就自行修改吧()
- 使用
curl(推荐,macOS 和多数 Linux 自带):curl -L https://github.com/2erTwo6/Smooth-Gateway/archive/refs/tags/v1.0.tar.gz | tar -xz - 或者使用
wget:wget -qO- https://github.com/2erTwo6/Smooth-Gateway/archive/refs/tags/v1.0.tar.gz | tar -xz
- 使用
-
进入目录并配置
上一步的命令会解压出一个名为
Smooth-Gateway-1.0的文件夹。# 注意!文件夹名包含版本号,请根据实际情况修改 cd Smooth-Gateway-1.0 # 复制配置文件 cp .env.example .env
然后使用您喜欢的编辑器(如
nano或vim)打开.env文件,并至少填入必需的UPSTREAM_API_URL。 -
构建并运行 Docker 容器
# 构建镜像 docker build -t smooth-gateway . # 运行容器 docker run -d \ --name my-smooth-gateway \ -p 3001:3001 \ --env-file .env \ --restart unless-stopped \ smooth-gateway
完成!您的流式优化网关已在
http://localhost:3001上运行。
如果您希望贡献代码,或者想体验最新的、尚未正式发布的功能,请使用 git 克隆仓库的 main 分支。
git clone https://github.com/2erTwo6/Smooth-Gateway.git
cd Smooth-Gateway
# 后续配置和构建步骤同上本项目的核心思想受到了 snailyp/gemini-balance 项目的启发,在此向原作者表示感谢!
本项目采用 MIT 许可证。