Skip to content

2erTwo6/Smooth-Gateway

Repository files navigation

🚀 Smooth Gateway - 流式优化网关

一个轻量、高效的 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 日志级别 (debugsilent)。 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 版本进行部署。以下命令将自动下载并解压最新版源码。

前提: 您的系统已安装 curlwget

  1. 一键下载并解压

    选择以下任一命令执行即可。它会自动下载 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
  2. 进入目录并配置

    上一步的命令会解压出一个名为 Smooth-Gateway-1.0 的文件夹。

    # 注意!文件夹名包含版本号,请根据实际情况修改
    cd Smooth-Gateway-1.0
    
    # 复制配置文件
    cp .env.example .env

    然后使用您喜欢的编辑器(如 nanovim)打开 .env 文件,并至少填入必需的 UPSTREAM_API_URL

  3. 构建并运行 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 许可证。

About

一个轻量、高效的 Node.js API 网关,专为优化大语言模型(LLM)的流式响应而设计,提供丝般顺滑的“打字机”效果。 目前仅支持openai格式,建议的使用方法是和New API项目配合使用。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors