ChatGPT bot を Slack 上で動かすのはめちゃくちゃ盛り上がるのでおすすめ

こんにちは、 Qiita株式会社のエンジニアの @tomoasleep です。
Qiita 株式会社では ChatGPT API を使った bot を Slack 上で動かしています。

同じような事例はいくつもあるのですが、Qiita社内でかれこれ 1ヶ月半以上稼働して、「多くのメンバーに ChatGPT をハードル低く提供する」「社内で活用法を考えたり、共有したりしやすい」「楽しい」ということで、 **ChatGPT 活用を社内に浸透させるには Slack での bot が本当にめちゃくちゃ最高** なので、実例を交えて布教していきたいと思います。

![qiitan-hello.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/72b4847a-07d6-532e-4295-4329b94d9d0a.png)

## Qiita での Slack bot の設定

(※ もっと導入しやすい例は、他にいくらでもあるのでここは参考程度に見てください)

Qiita 社内では Slack bot として [Ruboty](https://github.com/r7kamura/ruboty) を利用しているため、 [ruboty-openai\_chat](https://github.com/tomoasleep/ruboty-openai_chat) という ChatGPT を利用する Ruboty プラグインを作成しました。

[ruboty-openai\_chat](https://github.com/tomoasleep/ruboty-openai_chat) では OpenAI の [Chat completion API](https://platform.openai.com/docs/guides/chat) を利用しています。
この API に以下のような会話データを送信し、その続きの返答内容を生成、という形でメッセージを返答しています。

```
The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.
The AI assistant's name is (bot 名). (ユーザーが記録させた設定文)

Human: こんにちは。あなたは誰ですか？
AI: 私は OpenAI 製の AI アシスタントの (bot 名) です。なにかお手伝いできることはありますか？
Human: (過去一定時間の、同一チャンネルでの bot との会話)
AI: (過去一定時間の、同一チャンネルでの bot との会話)
Human: (Slack のメッセージ)
AI:
```

(※イメージのために平文にしていますが、実際には各会話は構造化されたデータとして送信しています。)

こうして、ChatGPT API の力を借りて、いい感じに返答してくれる Qiitan が完成しました :tada:

## Qiita 社内での Slack bot (Qiitan) の遊ばれ方

こうして完成した Qiitan を (利用ルールや注意事項を説明した上で) Slack に放し飼いにしたわけですが、割と様々な用途で社員が遊んでくれるようになりました。

![lunch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/93498b3b-cd40-e57b-40d2-fa2785b7601f.png)

![philosophy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/b2e7a0bf-00ae-db6a-fb6f-80cc737207bd.png)

単に遊ぶだけではなく、色々な用途で実験されて、それが社内で自然に広まるようにもなりました。
翻訳に使ったり、

![fixme.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/d5d3b1d3-18b9-8936-0889-e821b8864eb2.png)

新しいことを学ぶときの参考相手に使ったり、

![learn_lsp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/67288bfe-5a88-281c-c04d-72dd5bf9211d.png)

案出しの壁打ちに使ったり、

![qiitan-enumerate.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/c60961ef-33fc-309a-5d15-c63c94eb6443.png)

要約を作ったり、

![summarize_article.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/bd21064d-daca-8287-e484-3dfa1b8ac97b.png)

書いた記事のタグ候補を考えるのに使ったり、

![tagging_article.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/55e420b8-41a1-b96f-3a5d-4ad90cc16bc5.png)
![tagging_article2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/7541ae90-a5e7-c18e-127d-7c57561bf968.png)

歌を作ったり(?)

![flaky-song.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/0850fd5b-31c3-37b3-f0b2-60717a944aef.png)

...などなど、様々な用途で利用されるようになりました。(他にも色々な用途で試されています)

### Slack 上で動かすことで、自然と ChatGPT の活用法が共有されるように

Slack bot の効果として大きいのは ChatGPT との対話が Slack 上で行われることで、 **ChatGPT への色々なプロンプトの投げ方が自然と社内で共有される** ことです。
これにより、社内で (dev, business を跨いで) ChatGPT の利用法が広まり、様々な利用方法が活発的に模索されていくようになりました。

(なおかつ、API 経由であるため、基本的に OpenAI 側に二次利用されないのも嬉しいところです。)

#### 社内ガイドライン、Template Repository の整備など、社内での AI サービスの利用を促進

![qiita_chatgpt.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/2ffc0d88-8090-2d0d-5ce4-16a26333267b.png)

また、Qiita 社では、社内で ChatGPT 等の AI サービスのガイドラインの整備も行い、 個人情報は送信しない、などの利用ルールを定めています。

他にも、Slack bot で社内の利用が活発化されたのを皮切りに、 ChatGPT などの生成系 AI に関する勉強会、活用アイデアの収集、Template Repository の配布なども行い、社内での AI サービスの利用、サービスへの活用を促進しています。

#### ChatGPT API はかなり安価

https://openai.com/pricing

ChatGPT API (`gpt-3.5-turbo` モデル) は有料の従量課金で、 $0.002/1K tokens の使用料がかかります。 (トークン数の算出は複雑なのですが、日本語で大まかに 1000 文字で1円弱程度です。)
社内で bot としている分には非常に安価で済みます。

## まとめ

ChatGPT を Slack bot として動かすのは、(導入したときは遊び半分で正直そこまで考えてなかったのですが) 以下の点で非常に良い選択肢でした。

* 利用するハードルが非常に低い (また、API 経由なので学習にも使われない)
* 利用事例が、社内で自然と広まり、社内での活用が盛り上がりやすい
* (Chatbot を既に飼っている会社なら) 話してくれるだけで楽しい

社内で ChatGPT の活用を考えていく際には、まず初手 Slack bot 導入はおすすめです。
(実装に関しては、Qiita 社のはやや特殊例なので、他を参考にしてください)

---

### おまけ: ChatGPT 以前の例

実は ChatGPT API リリースの前 (`gpt-3.5-turbo` が出る前) も `text-davinci-003` モデルを利用した Slack bot を動かしていました。 (秘密情報は流さないこと前提で)
ただ、自然な対話をしてくれるような学習はしていないので、なんというか不思議な返答をしがちだったのと、当時の規約的に秘密情報は流せないので、大喜利用途であまり活用などには繋がらない感じでした。

![](https://camo.qiitausercontent.com/745a80d9c55eb3c5524ff6c5d25e3ba2e81f8071/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f373034382f65323536303631662d306638662d333166372d376536612d3365336230623536653037652e706e67)

![](https://camo.qiitausercontent.com/46b0e4aec6f8964a85a748696850a1613f6fc52b/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f373034382f62313339343834342d643865362d643831632d333135612d3838653662366234303364632e706e67)

それ以前にも、会話できる Chatbot にしようという試みはありました。

https://r7kamura.com/articles/2014-12-06-q

こんな感じの返し方でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7048/8b24ae36-d265-503e-a10c-5e1e3c27ba29.png)

### おまけ2: Chatbot の実装例を紹介してもらった

Slack の @seratch さんから、 Slack bot の実装例を紹介してもらいました！
Ruboty プラグインだったり、実装大変そう…、っていう方は試してみても良いかもしれません :information_desk_person:

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">自分で作りたくないという方は、私が GitHub で公開しているこちらのアプリを試してみてください。インストールして API キー設定するだけで使えるライブデモアプリもあります: <a href="https://t.co/w7ASwLOc26">https://t.co/w7ASwLOc26</a> <a href="https://twitter.com/hashtag/SlackDevJP?src=hash&amp;ref_src=twsrc%5Etfw">#SlackDevJP</a></p>&mdash; Kazuhiro Sera (瀬良) (@seratch_ja) <a href="https://twitter.com/seratch_ja/status/1649254962059419648?ref_src=twsrc%5Etfw">April 21, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>