この記事は GMOアドマーケティング Advent Calendar 2023 3日目の記事です。
皆さんこんにちは。
GMOアドマーケティングのR.Aです。
弊社ではAIにもっと触れてみようという目的で、AIを使用した様々な取り組みを行っています。
今回その一環でChatGPTと連想ゲームを行い、求めた答えを得る事ができるかという社内イベントを行いました。
以前SlackアプリとChatGPTの連携について執筆を行いましたが、こちらのSlackアプリに連想ゲームを行う処理を追加実装しましたので、ご紹介したいと思います。
完成後の動きについて
まずは完成後の動きについて説明します。
お題を1つ決め、お題が返ってくるようなヒントをSlackのワークフロー上で提示すると、ChatGPTがそのヒントから連想される答えを生成し、スレッドで返答します。
ユーザーが与えられるヒントは最低1つから最大3つまでで、他の情報は提供できません。
今回は前回のSlackアプリに機能を追加したものになりますので、変更箇所のみ紹介します。
1、Slackアプリの設定
今回はワークフローの送信情報を取得するため、前回設定した項目に加え、
「OAuth & Permissions」->「Scopes」->「Bot Token Scopes」に以下を追加します。
workflow.steps:execute:ユーザーがワークフロー ビルダーで使用できるステップを追加する
2、ソースコードの追加
前回作成したソースコードに以下を追加します。
ワークフローの送信者(username)がワークフロー名「AI連想ゲーム」だったら連想ゲームを行うようスクリプトを記述します。
今回プロンプトは深津式プロンプトを使用しましたが、プロンプトを変更するとより精度の高いものが出力されると思います。連想ゲームとして成立するよう制約は少なくしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
if body['event']['username'] == "AI連想ゲーム": user_text = body['event']['text'] question_text_user = user_text.split("当ててください!\n")[1] question_text = "# 命令書:\n" + \ "連想ゲームをしましょう。\n" + \ "あなたは連想ゲームのプロです。\n" + \ "以下の制約条件とヒントワードをもとに推測される答えを出力してください。\n\n" + \ "# 制約条件:\n" + \ "• 最低1つから最大3つのヒントを提示します。\n" + \ "• 提示方法はヒント①:○○ ヒント②:○○ ヒント③:○○ と渡します。\n" + \ "• ヒントは単語ではなく、文章の可能性もあります。\n" + \ "• 出力テキストは必ず、「与えられたヒントから導かれた答えは、「○○」です!」とします。\n" + \ "• 出力に理由を記述する事は禁止です。\n" + \ "# ヒントワード:\n" + question_text_user question.append({"role": "user", "content": question_text}) answer = postChatGPT(question) payload = { 'channel': body['event']['channel'], 'text': answer[0], 'thread_ts': thread_ts } requests.post(slack_post_url, headers=header, data=payload) return "OK" |
3、ワークフローの設定
最後にSlack上でワークフローを設定します。
連想ゲームを行いたいチャンネルでワークフローを作成します。形式は以下のようにしました。
ユーザーが入力した項目がそれぞれヒント①、ヒント②、ヒント③に渡るようになります。
またワークフローの名前をAI連想ゲームとします。
4、まとめ
以上の設定を行い、ワークフローから連想ゲームを実行しヒントを提供するとChatGPTが考えた、回答を返却してくれます。
ワークフロー形式にすることによって投稿者毎にプロンプトの差が出てしまうことを防ぎ、同じプロンプトでゲームをすることができました。さらにワークフロー形式にする事で参加の難易度を低くする事ができ、その結果多くの方に楽しんでいただきました。
実装については、2つだけヒントを提示すると3つ目のヒントを想像し回答してしまうなど、プロンプトの書き方について学べる事ができよかったです。
今回は比較的難易度の低いものでしたが、引き続きChatGPTを使用し面白いものを作っていきたいと思います。
告知
明日は石丸さんによる「【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する」です。
引き続き、GMOアドマーケティング Advent Calendar 2023 をお楽しみください!
■採用ページはこちら!
https://recruit.gmo-ap.jp/
■GMOアドパートナーズ 公式noteはこちら!
https://note.gmo-ap.jp/