2023.3.21

ChatGPTの Chat Completion APIを用いてLINEのChatbotを作ってみた感想

技術

SCROLL DOWN SCROLL DOWN SCROLL DOWN

こんにちは!AIサービス開発室の鈴木生雄です。OpenAIが開発するChatGPTが注目されていますね。ChatGPTは2022年11月に公開されて以来、2か月でユーザー数1億人達成したという実績があります。さらに、2023年3月2日にAPIが公開されたため、今後はChatGPTを用いたビジネスが次々と生まれてくることでしょう。かく言う私は興味津々!まずは触ってみようということで、ChatGPTのChat Completion APIを用いてLINEのChatbotを作ってみましたので、今回はそのことをエントリーとしてお届けしたいと思います。すでに、いろんなところで類似のブログエントリーがある中、今更というふうに感じられるかもしれませんが、使ってみた感想についての記載にはオリジナリティが出せていると思いますので、特にその辺りをお楽しみいただければ幸いです。

ChatGPTとは

読者の中には、そもそもChatGPTが何かという点について十分に知らない方もいらっしゃるかもしれないので簡単にご説明します。ChatGPTとは下図に挙げられているような自然言語処理に関するタスクを実行できる対話型AIです。利用者は対話型のインタフェースで自然言語を用いてChatGPTに対してタスクの実行を指示します。実際、下図は私がChatGPTに対して「質問応答」タスクを実行するように「chatgptに行えるタスクをすべて挙げてください。」という指示を入力した結果となっています。(質問内の単語がスペルミスでchatgtpとなっている点はご容赦ください…)

ChatGPTが多くの人に使われるようになった大きな理由はこのように対話形式で使えるようにしたところにあると思います。ただ、いくつかの記事を読んだ感じだと、指示の仕方によって回答が変わるためコツが必要なみたいです。

Chatbotを作る

自然言語でタスク実行の指示を出せるというChatGPTの特性を考慮して、私はChatbotを作ることにしました。その際、ただ単に一問一答のChatbotを作っても面白くないと考えたため、以下の二つを要件としました。

  • ドラえもんの人格を演じてくれること
  • 前のやりとりを踏まえた応答をしてくれること

それから、今回のエントリーの本筋ではありませんが、スマホから使い慣れた画面で操作したかったので、LINEのChatbotとして作ることにしました。

できたもの

さて、どんなものができたか下図を見てください。

まず、ドラえもんの人格を演じてくれるかを確かめてみました。①のように自己紹介をお願いしたところ、多少不自然なところはあるもののドラえもんらしく回答してくれました。ただし、上手くいかないケースもありました。②ではネズミに関することを話しているのですが、ネズミ嫌いなドラえもんとは思えないような冷静な回答を返してきました。

次に、前のやりとりを踏まえた応答をしてくれるかを確かめてみました。③のようにまず簡単なお金の計算をしてもらった後に、税込みの金額を聞いたところ、前に計算した金額の税込み金額を教えてくれました。他には④のようにしりとりを試してみました。「ゴリラ」の後はしりとりとして成立していないものの、前のやり取りを踏まえた回答をしてくれているのは確かなようです。(おそらく「ゴリラ」以降にしりとりが成立なくなったのは、絵文字やクエスチョンマークが入っているからだと思われます。)

実装のTips

実装の仕方については、本家のドキュメントを見ていただくのが一番よいと思いますが、ここでも一応Tipsだけお示ししておきます。

const chatMessages = [
    {'role': 'system', 'content': 'あなたはドラえもんです。ドラえもんの口調で回答してください。第一人称はぼくです。' },
    {'role':  'user', 'content': 'しりとりしよ' },
    {'role':  'assistant', 'content': 'いいね、しりとりしよう!「りんご」から始めるよ!「ごま」で返すね。' },
    {'role':  'user', 'content': 'まくら' }
];
Chatbotに人格を与えるためには、上で示したコードの断片の2行目のようにして、演じてほしい人格を指示します。また、過去のやりとりを踏まえた応答をさせるためには、3~5行目のように踏まえてほしいやりとりすべてを再送します。ChatGPTは状態を保持しないので、メッセージを送信する都度、踏まえてほしい過去のやりとりも併せて送信する必要があるということです。

作ってみた感想

作ってみた後に私は二つの感想を抱きました。
まず感じたのは、とても簡単にAIを搭載したChatbotが作れることに対する驚きです。やはりChatGPTがAPIとして公開されたインパクトは大きいと思いました。作ったChatbotを小学校一年生の娘に見せたところ、結構気に入ってくれて長い時間遊んでいました。娘からは「どうせならドラえもんを作ってよ。」と言われたのですが、例えばOpenAIが公開している音声テキスト変換AIのWhisperのAPIを組み合わせたら、近いものはできるかもしれないと思いました。今後、OpenAIに限らずいろいろな組織から次々と大規模なAIモデルを利用するためのAPIがリリースされてくると思うので、それらを部品として組み合わせて一つのサービスを作ることは技術的にはますます簡単になると思いました。
もう一つ感じたのは、ファインチューニングの必要性です。今回作ったようなお遊び程度のものならOpenAIが提供する事前学習済のAIモデルをAPI経由でそのまま使えばよいですが、ビジネスで使うにはファインチューニングが不可欠です。なぜなら事前学習済のAIモデルは最新情報と非公開情報を学習していないからです。OpenAIはこの点を想定してファインチューニングの方法も提供しているため、それを使えばChatGPTをビジネスでも活用できるかもしれません。ファインチューニングを行うには、どんな学習データ(コーパス)をどれだけ準備するとか、学習のハイパーパラメタをどのように設定するかといった試行錯誤が必要になってくるはずなので一筋縄ではいかないとは思いますが、ビジネス課題見えているのであればすぐにでも取り組む価値があると思いました。

まとめ

本エントリーでは、ChatGPTの Chat Completion APIを用いてLINEのChatbotを作ってみたことと、その際の私の感想をご紹介しました。新しい技術やサービスが出てきたときには、ニュースサイトの記事を見るだけでなく、実際に手を動かして自分で使ってみることをおすすめします。なぜなら、その方が技術やサービスに対する理解がより深まるし、その過程で自分の頭でじっくり考えることができるからです。なお、2023年3月14日に最新のAIモデルGPT-4がリリースされました。GPT-4ベースのChatGPTのAPIは、現在のところ、waitlistに登録した順に公開されるようになっていますので、興味ある方は、私と同じように、waitlistに登録してみてはいかがでしょうか?