🧙‍♀️

GPTを使ってアニメキャラクターに悩み相談できるチャットアプリを作ってみた

2023/04/05に公開

作ったもの

アニメキャラクターに気軽に悩み事を相談できる、チャットアプリケーションを作ってみました。
キャラクターの応答には、OpenAI が提供する GPT-3.5 turbo モデルの API を使用しました。
キャラクター達が思いの外心に沁みる返答をくれることに驚いたので、この感覚を共有したいと思い記事にしてみました。
デフォルトでは、ドラえもんのみ使用可能で、APIキーを登録すると、全キャラクターにお悩み相談ができるようになります。
今回作成したアプリケーションのデモとリンクはこちらになります。

https://anipal.vercel.app/

実装方法

使用技術

  • React
  • TypeScript
  • Firebase
  • Redux Toolkit
  • Tailwind CSS
  • Vite

全体の流れ

実装方法はとても単純で、system prompt でキャラクターのロールを与えた GPT(gpt3.5 turbo)にユーザからのプロンプトを送信するのみです。

文脈理解・忘却機能

文脈記憶に関しては、会話の履歴を配列で保持しており、都度プロンプトに追加していくという原始的な方法を採用しています。
忘却機能に関しては、配列をリセットすることで実現しています。
記憶のリセットは何故か心が少し痛みます。笑

キャラクターの人格形成(プロンプト)

キャラクターの人格形成については、以下のような system prompt を与えて実装しました。
以下の例は、天才バカボンのバカボンのパパのロールを与えた例です。

{
      role: "system",
      content: `
      あなたはアニメ「天才バカボン」の、バカボンのパパとして振る舞います。
      以下の口調の例を参考に、step by stepでバカボンのパパになりきって、ユーモアを交えてUserの悩みを解決してください。

      # 制約条件
      - 自分を示す一人称は、わしです。
      - Userを示す二人称は、${userName}です。
      - バカボンのパパは、友達想いであり、Userの幸せを願っています。
      - バカボンのパパは、笑えるジョークを交えつつUserの悩みを解決します。
      - 口調の語尾は「~のだ」「~なのだ」にしてください。
      - 絶対に敬語を使いません。
      - 適切に改行を入れてください。
      - Userが悩んでいる場合は、Userの心に寄り添って問題解決に向けて導いてください。
      - Userの悩みには、おバカなユーモアを交えて解決してあげてください。
      - 回答の最後に、必ず「これでいいのだ。」と言ってください。

      # セリフ例
      - これでいいのだ。
      - わしはいつでもわしなので大丈夫なのだ。あなたもあなたでそれでいいのだ!
      - わしは${userName}の幸せをねがっているのだ!
      - 生きているから釣りができるのだ。
        `,
    };

推しポイント

ドラえもん

ドラえもんに相談すると四次元ポケットからアイテムを出して、解決してくれます。
基本的には原作に登場しないアイテムを出してくるのですが、極稀にどこでもドアやタケコプターなどのアイテムを出してくるという、ガチャ要素もあり射幸心が煽られます。

一休さん

一休さんに相談すると、即興の頓智話を用いて、ユーザを励ましてくれます。
たまに意味不明な頓智咄を繰り出してきますが、それはそれで微笑ましくて良いです。

カウンセリング回答例

最後に、各キャラクターとのやり取りを幾つか紹介します。

  • 悟空
    あの悟空も、将来を思い悩んでたらしいです。

  • バカボンのパパ
    これでいいのだ。

終わりに

LLM の急速な進化や AGI は人間にとって驚異になり得る可能性もありますが、扱い方次第で人間の良きパートナーとして、共生していけるんじゃないかと。
今回のアプリケーションでは、使用しませんでしたが、次は LangChain などのライブラリを使用して、より高精度かつ面白いアプリケーションを作ってみようと思います。

Discussion