/nonebot-plugin-colab-novelai

解放你的双手,让Colab持续给你提供算力生产色图!

Primary LanguagePythonMIT LicenseMIT

NoneBotPluginLogo

NoneBotPluginText

Nonebot-Plugin-Colab-NovelAI

✨ 基于框架 NoneBot2 的AI绘图插件 ✨

license Python NoneBot pypi pypi download

功能

  • 提供prompt让AI进行绘图
  • 可选将图片保存至本地或WebDAV
  • 权限管理: 绘图冷却时间与是否允许使用NSFW tag

安装

  • 使用 nb-cli
nb plugin install nonebot_plugin_colab_novelai
  • 使用 pip
pip install nonebot_plugin_colab_novelai

获取插件帮助与拓展功能

Requirements

  • 一台能正常访问外网的服务器 (Colab在**大陆无法访问)

  • 确保服务器已正确安装了Chrome浏览器

  • 注册一堆Google新帐号(建议六个以上),建议绑定手机号以免登录时出现麻烦,千万不要开启多余的安全设置。

  • 前往百度智能云申请免费语音识别服务,注册APP并获取相关密钥

    • 用于绕过Colab ReCaptcha
  • 前往cpolar注册免费账号

    • 用于Colab的内网穿透

.env | .env.dev | .env.prod 配置项

headless_webdriver: bool = True                       # 是否使用无头模式启动浏览器
colab_proxy: Optional[str] = None                     # 如有需要可填写代理地址
google_accounts: Dict[str, str] = {}                  # Required, 填写要使用的谷歌账密 {"account": "password", ...}
cpolar_username: str = None                           # Required, 填写cpolar账号邮箱
cpolar_password: str = None                           # Required, 填写cpolar账号的密码
bce_apikey: str = None                                # Required, 填写百度智能云的API Key
bce_secretkey: str = None                             # Required, 填写百度智能云的Secret Key
naifu_max: int = 1                                    # 一次作图生成的最大图片数量
naifu_cd: int = 0                                     # 每个用户每生成一张图片的冷却时间
nai_save2local_path: Optional[str] = None             # 将图片保存至本地的存储目录, 不填写则不保存
nai_save2webdav_info: Dict[str, Optional[str]] = {
    "url": None,
    "username": None, "password": None,               # 将图片保存至WebDAV需要的相关配置,不填写则不保存
    "path": None
}
nai_nsfw_tags: Optional[List[str] | str] = None       # 自定义可能会生成NSFW图片的tag, 填写一个列表或者一个文件路径
                                                      # 列表: ["tag1", "tag2", "tag3", ...]
                                                      # 若使用文件存储, 需要将tag以逗号分隔,无需引号。

配置项额外说明

  • 如果你正在使用没有图形界面的Linux服务器,请不要更改headless_webdriver

  • 插件会尝试禁止未授权的用户绘画NSFW图片,通过屏蔽特定tag来实现。预设的一些tag集合位于/utils/distributed.py,如果有其他好的预设想法,欢迎pr。

    • 屏蔽的tag集合为.env配置项与预设项的并集,匹配时不区分大小写。
  • 如需使用代理,支持填写http://orhttps://orsocks5://+ip:port

如何使用?

触发指令: naifu <command> [<subcommands>] [<args>]

  • Command: draw

  • CommandPermission: Anyone

  • 用于告诉AI开始作图

  • 用法: naifu draw <PROMPT>... [-i --undesired-content <UNDESIRED_CONTENT>...] [-a --sampling <SAMPLING>] [-t --steps <STEPS>] [-c --scale <SCALE>] [-n --num <NUM>] [-s --size <SIZE>] [-r --seed <SEED>]

    • PROMPT 必选参数,指定作画的关键词,以逗号分隔,必须为英语
    • -i 可选参数,指定作画中想避免出现的内容,以逗号分隔,必须为英语
    • -a 可选参数,指定采样器,支持以下几种,默认为k_euler_ancestral
      • k_euler_ancestral, k_euler, k_lms
      • plms, ddim
    • -t 可选参数,指定优化图像的迭代次数,取值范围1~50,默认值为28
    • -c 可选参数,值越大越接近描述意图,值越小细节越少自由度越大,取值范围1.1~100,默认值为12
    • -s 可选参数,指定图片生成大小,支持以下几种,默认为512x768
      • 384x640, 512x768, 512x1024 # Portrait
      • 640x384, 768x512, 1024x512 # Landscape
      • 512x512, 640x640, 1024x1024 # Square
    • -n 可选参数,指定图片生成数量,最大值参考.env配置项,默认值为1
    • -r 可选参数,指定图片生成种子,取值范围0 ~ 2³²-1,默认值为-1即随机

  • Command: imgdraw

  • CommandPermission: Anyone

  • 提供基准图片作图

  • 用法: naifu imgdraw <PROMPT>... <IMAGE> [-i --undesired-content <UNDESIRED_CONTENT>...] [-a --sampling <SAMPLING>] [-t --steps <STEPS>] [-c --scale <SCALE>] [-n --num <NUM>] [-r --seed <SEED>] [-e strength <STRENGTH>] [-o noise <NOISE>]

    • PROMPT 必选参数,指定作画的关键词,以逗号分隔,必须为英语
    • IMAGE 必选参数,指定作画基准图片
    • -i 可选参数,指定作画中想避免出现的内容,以逗号分隔,必须为英语
    • -a 可选参数,指定采样器,支持以下几种,默认为k_euler_ancestral
      • k_euler_ancestral, k_euler, k_lms
      • plms, ddim
    • -t 可选参数,指定优化图像的迭代次数,取值范围1~50,默认值为50
    • -c 可选参数,值越大越接近描述意图,值越小细节越少自由度越大,取值范围1.1~100,默认值为12
    • -n 可选参数,指定图片生成数量,最大值参考.env配置项,默认值为1
    • -r 可选参数,指定图片生成种子,取值范围0 ~ 2³²-1,默认值为-1即随机
    • -e 可选参数,值越低越接近原始图像,取值范围0~0.99,默认值为0.7
    • -o 可选参数,值增加会增加细节,一般应低于参数<STRENGTH>,取值范围0~0.99,默认值为0.2

  • Command: su

  • CommandPermission: Superuser

  • 用于管理插件白名单用户 (白名单用户无绘图cd,在.envnaifu_cd值为非零时生效)

    • Subcommand: ls
    • 列出当前所有白名单用户
    • 用法: naifu su ls

    • Subcommand: add
    • 添加白名单用户
    • 用法: naifu su add <USER ID>...
      • 必须指定用户QQ号,可填写多个并以空格分隔

    • Subcommand: rm
    • 移除白名单用户
    • 用法: naifu su rm <USER ID>...
      • 必须指定用户QQ号,可填写多个并以空格分隔

  • Command: nsfw

  • CommandPermission: Superuser

  • 管理允许绘制NSFW内容的用户与群组

  • 注意: 群聊中只有当用户和群聊均有权限时才能绘制NSFW内容!

    • Subcommand: ls
    • 列出当前所有允许NSFW内容的用户与群组
    • 用法: naifu nsfw ls

    • Subcommand: add
    • 添加允许NSFW内容的用户或群组
    • 用法: naifu nsfw add [-u --uid <USER ID>...] [-g --gid <GROUP ID>...]
      • -u 可选参数,为用户QQ号,可填写多个并以空格分隔
      • -g 可选参数,为群号,可填写多个并以空格分隔
      • 当两个可选参数均未填写时,默认添加当前所处群聊的群号。

    • Subcommand: rm
    • 移除允许NSFW内容的用户或群组
    • 用法: naifu nsfw rm [-u --uid <USER ID>...] [-g --gid <GROUP ID>...]
      • -u 可选参数,为用户QQ号,可填写多个并以空格分隔
      • -g 可选参数,为群号,可填写多个并以空格分隔
      • 当两个可选参数均未填写时,默认移除当前所处群聊的群号。

在权限配置文件第一次加载时,会自动添加.envSUPERUSERS为插件白名单用户以及分配NSFW权限。