Skip to content

zhting/agnesAI

Repository files navigation

Agnes AI Gateway 本地控制台

一个零依赖的轻量级 Node.js Web 控制台,调用 Agnes AI Gateway 提供的视频/图像生成能力,专为国内网络环境优化(自带视频反向代理,绕过 storage.googleapis.com 访问限制)。

  • 视频生成:调用 agnes-video-v2.0,支持文生视频、图生视频、多图视频、关键帧动画
  • 图像生成:调用 agnes-image-2.1-flash,支持文生图、图生图(已修复参数结构以保留原图构图)、构图保留、高密度优化
  • AI 聊天:多模型 SSE 流式对话,自动保存历史
  • 模型管理:从官方拉取模型列表,自定义默认模型

✨ 特性

  • 🚀 零依赖:纯 Node.js 标准库,无需 npm install
  • 🎬 完整视频工作流:异步任务提交 → 5 秒轮询 → 自动重试 → 进度显示状态和百分比 → 视频播放/下载
  • 🎨 完整图像工作流:同步生成 → 即时预览 → 本地下载
  • 💬 AI 聊天:多模型流式对话,Ctrl+Enter 发送,历史持久化
  • 📐 比例与尺寸智能匹配:视频 16:9/9:16/1:1/4:3/3:4,图像 9 种比例预设;支持上传参考图时自动读取并应用原图分辨率,手动调整宽高时自动取消常用尺寸的选中状态
  • 🖼️ 本地图片与视频预览支持:粘贴/拖拽/选择本地图片,自动转 Base64 上送;最近生成历史列表中完美支持视频首帧渲染预览
  • 🌏 国内网络友好:内置 /video-proxy 反向代理,破解 GCS 视频被墙问题
  • 🔑 API Key 持久化:自动保存到 .env 配置文件 + localStorage 双重存储,支持旧版 key.txt 自动迁移
  • 🔁 智能重试与进度防回退:视频和图像结果页签切换时,右侧卡片自适应隐藏;轮询区分服务端临时错误(最多 10 次)与网络错误(最多 5 次);当 API 偶发返回简化响应 {"status":"in_progress"} 时,进度条保持当前值继续前进,不会回退到 0%

📦 项目结构

文件 作用
server.js 基于 http 标准库的本地反向代理 + 静态服务
index.html 单页 Dashboard(CSS / JS 全内联,无框架)
start.bat Windows 一键启动脚本
.env 本地环境变量配置文件,存放 API Key 等敏感信息(已加入 .gitignore
config.json 用户配置(模型列表/默认模型,已加入 .gitignore
AI Gateway, Free AI API & AI Applications.md Agnes API 官方文档备份

🚀 快速开始

前置条件

启动

# 克隆仓库
git clone https://github.com/zhting/agnesAI.git
cd agnesAI

# 启动服务
node server.js
#  ─ 或 Windows 用户直接双击 start.bat

服务监听 http://127.0.0.1:3000,浏览器打开即可。

配置 API Key

在页面 ⚙️ 管理 页填写 API Key 并保存,系统自动保存到本地 .env,下次启动自动回填。

📐 比例选择

视频生成

打开高级参数即可看到「画面比例」下拉,支持:

比例 对应分辨率
16:9 横屏 1280 × 720
9:16 竖屏 720 × 1280
1:1 正方形 1024 × 1024
4:3 横图 1024 × 768
3:4 竖图 768 × 1024
自定义 手动设置

选择比例后宽高自动填充,也可随时手动修改。

图像生成

图像提供 9 种比例预设(1:1 / 3:4 / 4:3 / 9:16 / 16:9 / 9:21 / 21:9 / 2:3 / 3:2),选择后自定义宽高自动填充。

🎬 视频生成使用说明

模式 必填字段 说明
文本生成视频 Prompt 纯文字描述即可生成视频
图片生成视频 Prompt + 参考图 让一张静态图动起来
多图视频 Prompt + 多张参考图 融合多张图的元素生成视频
关键帧动画 Prompt + 2 张及以上图 首张为起始帧,末张为结束帧,中间自动过渡

高级参数:模型 / 比例 / 帧数 / 帧率 / 推理步数 / 随机种子 / 负向提示词。

⚠️ num_frames 必须满足 8n + 1 的格式(如 81、121、161、241、441),且 ≤ 441。

任务提交后页面以 3 秒为间隔轮询进度,完成后在右侧面板自动播放并提供下载按钮。

🎨 图像生成使用说明

模式 说明
文本生成图像 纯文字描述生成图像
图像生成图像 基于原图 + Prompt 做风格化/重绘
结构/构图保留 严格沿用原图构图,重绘内容
高信息密度优化 增强细节,适合电商主图、海报

支持在提示词中使用 "the first image" / "the second image" 等自然语言描述多图角色。

🖼️ 本地图片上传方式

任意"参考图片 URL"输入框均支持三种方式注入本地图片(自动转 Base64):

  1. 点击右侧 📁 按钮选择文件
  2. 直接在输入框内 Ctrl+V 粘贴(图片或截图)
  3. 直接拖拽图片文件到输入框

Base64 数据会保留完整的 data:image/xxx;base64, 前缀进行上送,以符合 agnes-image-2.1-flash 等图像模型对于 Data URI 的解析规范。

🛠️ 架构说明

服务端 server.js

单文件 HTTP 服务,4 条路由:

路由 说明
GET //index.html 返回前端页面
GET / POST /api/key 读 / 写本地 .env 中的 API Key
GET / POST /api/config 读 / 写用户配置(模型列表/默认模型)
GET /video-proxy?url=... HTTPS 反向代理 storage.googleapis.com 上的视频(绕墙)
* /agnesapi* 反向代理至 https://apihub.agnes-ai.com/agnesapi*,用于视频状态查询(推荐方式)
* /v1/* 反向代理至 https://apihub.agnes-ai.com/v1/*,自动注入 Authorization: Bearer {key}

/v1/*/agnesapi* 代理特点:

  • 优先读取请求头 X-Api-Key,缺失时回退本地 .env
  • 自动剥离 ?_t=... 防缓存参数,避免上游路由异常
  • 上游非 2xx 时统一包装成 {error: {message}} JSON 返回

前端 index.html

  • 无任何框架的单页应用,所有 CSS / JS 内联
  • 左右分栏布局:左侧表单,右侧实时预览/结果
  • 一级页签:视频 / 图像 / 聊天 / 管理
  • 二级页签:根据模式动态显示 / 隐藏参考图字段
  • 轮询:5s 间隔;服务端临时错误(如 division by zero)重试 10 次;网络错误重试 5 次
  • 视频查询优先使用 /agnesapi?video_id=...(推荐方式),无 video_id 时降级到 /v1/videos/{task_id}
  • API 偶发简化响应 {"status":"in_progress"} 时,进度条保持当前值不回退(lastKnownProgress 保护)
  • 视频/图像播放走 /video-proxy 中转,避免直接访问 GCS 被墙
  • 聊天支持 SSE 流式输出,历史保存至 localStorage

🔒 安全提示

  • 不要把 key.txt.env 等含密文件提交到公共仓库。本仓库已通过 .gitignore 排除
  • 服务仅监听 127.0.0.1,默认只在本机可访问
  • 若需局域网共享,请将 server.jsserver.listen(PORT, '127.0.0.1', ...) 的地址改为 '0.0.0.0',并自行评估暴露风险

📚 参考

📜 License

MIT

About

agnesAI的API调用

Resources

Stars

25 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors