Newnai / README.md
Logankunfall's picture
Upload 16 files
6d8b4e7 verified
metadata
title: New NAI
emoji: 🧩
colorFrom: green
colorTo: gray
sdk: docker
sdk_version: 0.0.1
app_file: app.py
app_port: 7860
pinned: false

New NAI(本地与 Hugging Face Spaces 部署说明)

本仓库提供一个 FastAPI + 原生前端(HTML/CSS/JS)的 NovelAI 可视化界面,已完成:

  • 手机端适配(参考 NovelAI 生成页交互:表单单列、底部固定操作按钮、顶部固定导航)
  • 主题与背景方案(自动/竹子色/自定义,深色去蓝化为深灰系)
  • 提示音(可开关,默认从 /ring/ring.mp3 读取)
  • 输出目录可配置(本地可用,HF Spaces 上请手填路径)
  • 支持 T2I / I2I / Inpaint 基本流程

Key(Token)不会保存在仓库中,用户在前端配置页手动填写并保存即可。

一、目录结构

New NAI/
  app.py                 # HF Spaces 入口(uvicorn 启动 FastAPI)
  backend/
    app.py               # FastAPI 应用(API、静态资源挂载)
    config.py            # 配置读写(包含 output_dir、color_scheme、sound_*)
    models.py            # Pydantic 请求/更新模型
    services/novelai.py  # 与 NovelAI 通信与结果保存
  frontend/
    index.html           # 前端页面(移动端适配、表单、底部操作)
    assets/
      style.css          # 样式(移动端、深色去蓝化、背景方案)
      app.js             # 交互逻辑(主题/背景/提示音/选择目录/生成等)
  ring/                  # 提示音目录(请放置 ring.mp3)
  requirements.txt       # Python 依赖
  output/                # 默认输出根目录(t2i/i2i/inpaint)

提示音文件请放到:

  • ring/ring.mp3(你可以替换为自己的音频文件,并在前端配置中修改 sound_url)

二、本地运行(Windows/Mac/Linux)

  1. 安装依赖(建议使用 Python 3.10+):
pip install -r requirements.txt
  1. 运行服务(在 New NAI 目录下):
python app.py

默认监听 http://127.0.0.1:7860(或通过日志中的地址访问)。

  1. 打开页面后:
  • 进入“配置”页,填入 NovelAI Key(Token)并保存。
  • 可选择输出目录(Windows 本地可弹出选择器;无 GUI 环境请手填)。
  • 其他默认参数可根据需要调整。

三、Hugging Face Spaces 部署(Python SDK)

  1. 新建 Space
  • Space Type: 空白(Python)
  • Hardware: CPU 即可
  • SDK: Python
  1. 上传代码
  • New NAI 目录内的全部文件上传为 Space 仓库的根目录(即仓库根下应直接有 app.pybackend/frontend/requirements.txt 等)。
  • 如果你的目录层级不同,请确保入口文件 app.py 位于仓库根目录。
  1. 自动安装与启动
  • Spaces 会自动根据 requirements.txt 安装依赖,并运行 app.py
    • app.py 内部使用 uvicorn.run(..., host="0.0.0.0", port=$PORT),兼容 HF 动态端口。
  1. 使用说明(HF 环境差异)
  • GUI 弹窗不可用:无法弹系统目录选择器;请在“保存目录”输入框中手动填写路径(或留空使用默认)。
  • 打开目录功能(/api/open-dir)在 HF 不可用;不影响生成。
  • Key(Token)依然在前端“配置”页自行填写并保存,后端不会记录仓库中的任何 Key。
  1. 提示音
  • 将你的提示音文件命名为 ring.mp3 放置到仓库根的 ring/ 目录下(路径:/ring/ring.mp3)。
  • 在页面顶部“提示音:开/关”可切换;也可在配置中自定义 sound_url(例如 /ring/your.mp3)。

四、手机端适配要点

  • 顶部导航固定:切换 Tab、加载配置不会出现上下位移。
  • 表单单列:更大的触控区域(输入框、选择器、按钮),避免误触。
  • 底部固定操作栏:当前 Tab 的“生成”按钮固定在底部(避免滚动到页面底部才能操作)。
  • 背景方案:
    • 自动:浅色=白、深色=深灰(不使用蓝色渐变)
    • 竹子色:#7ba23f
    • 自定义:任意颜色(立即预览应用)
  • 提示固定:底部状态栏显示结果状态,不弹出/不自动消失;成功时可选播放提示音。

五、环境与依赖

  • Python 3.10+
  • 主要依赖:
    • fastapi
    • uvicorn
    • httpx
    • pydantic
  • 详见 requirements.txt

六、常见问题(FAQ)

  1. 生成失败(HF 环境)
  • 请先确认前端“配置”页已正确填写并保存 Key(Token)。
  • 部分时间段上游限流(429),已内置指数退避重试;仍失败时可稍后重试。
  1. 目录选择器不可用
  • 仅本地桌面环境可弹出系统选择器;在 HF 或无 GUI 环境请在“保存目录”输入框手动填写。
  1. 提示音无法播放
  • 浏览器可能限制自动播放,请先与页面交互后再播放。
  • 确保 ring/ring.mp3 文件已上传并可被 /ring/ring.mp3 访问;或在配置中设置为你的自定义路径。

七、开发说明

  • 前端主要文件:
    • frontend/index.html:结构与控件
    • frontend/assets/style.css:主题、移动端适配、底部操作栏
    • frontend/assets/app.js:主题/背景/提示音/生成/配置保存等交互逻辑
  • 后端:
    • backend/app.py:FastAPI 主程序、静态资源映射、API 路由
    • backend/services/novelai.py:NovelAI 请求与结果保存
    • backend/config.pybackend/models.py:配置模型与校验

欢迎根据你的实际需求继续精简或扩展 UI/交互。