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