N高等学校・S高等学校のSlack内でStable DiffusionとNovelAIのボットを運用した話

今年、2022年はAIアートの年だったと言っても過言ではないぐらい、**一気にAIアートが民主化した年でした**。OpenAIのDALL-E2ベータの7/21の発表の直後、8/22にオープンソースのStable Diffusionが公開されます。そこから一気にAIアートが加速し、text2imageだけに限らず、image2imageや、モデルの追加学習など新たなテクノロジーが恐ろしい勢いで発展し、さまざまなサービスがリリースされました。

この今年のAIアートの激動は、**これまで数年で行われてきたイノベーションがほんの数日で行われたような衝撃を受けました**。テクノロジーの進歩は年々加速しているとよく言われますが、ここまで実感できるような大きな進化は初めてだったように思います。

自分自身、N高等学校/S高等学校でプログラミング講師をしつつ、S高の校長も務めているのですが、そんな**テクノロジーの進歩を生徒たちに味わってほしい**ということで、8/31にN高/S高のSlackワークスペースに #ai-art-bot チャンネルを開設し、AIアートボットを導入しました。

## Stable Diffusion Slackbot
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">N高/S高のSlackにStable Diffusionが遊べるSlackボットを設置してみた。ソースコードはこちら。 面白いプロンプトを発掘してくれる生徒が出てくることに期待。 <a href="https://t.co/N1RjmryxTl">https://t.co/N1RjmryxTl</a> <a href="https://t.co/bT5fzhn3mP">pic.twitter.com/bT5fzhn3mP</a></p>&mdash; sifue(吉村 総一郎) (@sifue) <a href="https://twitter.com/sifue/status/1564645287741648896?ref_src=twsrc%5Etfw">August 30, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

なお内部的には、自分の家で使っていた5年ほど前の古いゲーミングPC (グラフィックボード:GTX1060 6GB)を利用して、自分の部屋で動かしていました。Python製のSlackボットのソースコードは[こちら](https://github.com/sifue/stable-diffusion-bot)です。LICENSEはMITのOSSとなっています。

https://github.com/sifue/stable-diffusion-bot

機能としては、

- text2image
- image2image
- モデルをStableDiffusion v1.4とWaifuDiffusionを切り替える

以上のことができます。オープンソースで公開してありますので、手元にゲーミングPCなどを持たれている方はSlackのボットサービスを動かしてみても良いかなと思います。ただ、Stable Diffusion自体のインストールおよび構築が必要となります。

公開後、自分の意図した通り非常に多く生徒たちが使ってくれて、自分の部屋で古いゲーミングPCのファンがよく回り続ける状況でした。最終的に、11月21日までの間に、854枚のAIアートが生成されました。自分がこれは傑作だなと思ったものをいくつか取り上げておきます。なお生成画像に著作権はありませんが、プロンプトは生徒たちに著作権があるため公開できません。またプロンプトは多くの生徒が、[Lexica Art](https://lexica.art/)を参考にしていました。

![generated (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/958a7a7e-ca44-ff5d-ba66-665918e1e0e0.png)![generated (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/90e3964c-e9e4-7b56-c076-1e3e03de4470.png)![generated (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/d1661499-0baf-0b20-4c81-9f7902b36231.png)![generated (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/57199ffe-9525-291c-9e47-e395133b5c30.png)
![generated (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/0848e471-430a-2cc0-44c7-3617e0dd8956.png)![generated (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/3f043882-47e4-6504-fb7b-92c8d3bb80d5.png)

このような作品が作られました。生徒たちのAIアートへの理解と、プロンプトの練習に役立ったのではないかと思います。image2imageの機能も使えるようにはしていたのですが、あまり利用はされませんでした。

あと、マシンスペックのためにどうしてもモデルがfloat32で動作するものになり、さらに、画像サイズも382x512がグラフィックメモリの限界であったため、やはり画質は、AIアートをサービスして提供しているDream StudioやMidjourneyやNovelAIに比べると劣ってしまいます。最終的に12/2まで運用し、このStable Diffusion Slackボットは運用を閉じることになります。

## NovelAI Slackbot

その後も自分自身はAIアートを利用するためにNovelAIに月額10ドルで課金しながら絵を出力したりしていたのですが、思ったよりもAnlasという内部トークンが毎月余る状況であったため、それを活用してNovelAIを利用できるようにするSlackボットも作ることになりました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">昨日作ったChatGPTのSlackbotが利用規約上難しかったので、書いたコード資産を活用して今度はNovel AIが利用できるSlackbotをN高/S高のSlackに置くことにしてみた。今度は利用規約確認、出てるREST APIの利用を開発者確認までした。ソースコードはこちら→ <a href="https://t.co/41KDwuJzmx">https://t.co/41KDwuJzmx</a> <a href="https://t.co/Un9yXlcFvn">pic.twitter.com/Un9yXlcFvn</a></p>&mdash; sifue(吉村 総一郎) (@sifue) <a href="https://twitter.com/sifue/status/1600843117389049856?ref_src=twsrc%5Etfw">December 8, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Python製のSlackボットのソースコードは[こちら](https://github.com/sifue/novelai-slackbot)です。LICNENSEはMITのOSSとなっています。

https://github.com/sifue/novelai-slackbot

こちらの機能としては

- text2image
- 生成回数を管理する機能

この二つを用意してあります。当初NovelAIはAPI利用が難しいと諦めていたのですが、公式のサポートDiscordで商用利用しなければOKという解答を開発者よりもらったため、開発できることになりました。生成回数を管理する機能は全体の生成回数の制限と1日で回復する生成回数を設定できるようになっており、自分自身のAnlasの残り具合を見ながら制限をかけられるようにしてあります。

このNovelAI Slackボットでは、最終的に12/8の公開から12/21までで、491回の画像生成が行われています。AIアートを使ってみたいという生徒たちも沢山集まり、12/21現在、#ai-art-bot チャンネルの参加者数は60名となりました。

NovelAIはやはりアニメ調の作品が得意ということはありますが、プロンプトの工夫でアート性の高いものも出力が可能です。生徒たちが作った作品を一緒に紹介しておきます。なお生成画像に著作権はありませんが、プロンプトは生徒たちに著作権があるため公開できません。また、生徒たちの多くはこの[Notionのまとめ](https://p1atdev.notion.site/5d32c4e0eafe4e6997573e937bef120d)を参考にプロンプトを作っていました。

![generated (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/fc21f090-99bf-1173-c9b7-0f3a8b62a144.png)![generated (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/6b8de7fe-a7ad-4bc9-5c9e-3c164131ebf3.png)![generated (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/ca9b5989-e5d4-6ce1-7acd-66e2aa608c55.png)![generated (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/24b27464-5de1-75f7-8b08-140c038519ed.png)![generated (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/10101bc7-9cf7-aac6-b235-55eea7984a3d.png)![generated (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/9ef6aaa8-7002-2746-593a-27fa3b15bab3.png)![generated.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2382/9bb84d33-9739-04ae-d411-31c358068762.png)

自分の型落ちのゲーミングPCで動かすのとは全くレベルの違うクオリティで出してくれるのがNovelAIのありがたいところです。

## まとめ

今回の試みで高校生のうちから新しいテクノロジーに接して**何かしらのアイディアにつなげてくれたりする生徒さんたちが生まれたのではないかと思っています**。今後も新しいテクノロジーに触れて新たな未来を開拓してくれる未来の人材の育成のために何かしら貢献できれば良いなと思っています。

最後に、N高/S高での試みに関して最後まで読んで頂き、誠にありがとうございました。