Skip to main content

NoneBot2 由Colab驱动的AI作画插件

Project description

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                       # 是否使用无头模式启动浏览器
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配置项与预设项的并集,匹配时不区分大小写。

如何使用?

触发指令: 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权限。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_colab_novelai-0.2.1.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file nonebot_plugin_colab_novelai-0.2.1.tar.gz.

File metadata

File hashes

Hashes for nonebot_plugin_colab_novelai-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2785275a60476dc80d1795932ef03869d2634f9d2eb86d4329a9d2a96b1e544b
MD5 993b416282d2ced323ff3f5bab81c701
BLAKE2b-256 4057c338afa10a90fbee504ae34f86e6a226aef83b6d1742200fed24cac8ffc5

See more details on using hashes here.

Provenance

File details

Details for the file nonebot_plugin_colab_novelai-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_colab_novelai-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 43a4096fffeb073a5047761e82dcf68fb9c2d341b530bfee6d299cff3c9acda7
MD5 097c9c4200f2981b7c1e396e34746636
BLAKE2b-256 f168a680620cf1ad40e77e8a5801b54c6b3eee83481944d73df39df769bd2de1

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page