
【ChatGPT】LINE で OpenAI 社の API と連携するチャットボットを作ってみた【LT大会】
大変ご無沙汰しております。アジャイル開発グループの 友人K です!
(筋肉 UT を回して以来、3年半ぶりの投稿です。。)
さて、今回は LINE で OpenAI 社の API と連携するチャットボット を作ってみましたので、そのご紹介です。
そして作ったものは部内の技術コミュニティの活動として実施している LT大会 (LT: ライトニングトーク) で発表させていただきました!
ライトニングトーク(英: Lightning Talks; LT)とはカンファレンスやフォーラムなどで行われる短いプレゼンテーションのこと。イベントで「ライトニングトーク」と明示される場合は、それより長いプレゼンテーションも開催される。様々な形式があるが、持ち時間が5分という制約が広く共有されている。
業務とは無関係で、プライベートで遊んでみたものになりますのでご了承ください!
なお、今回使用した OpenAI 社の API で使用しているモデルは今話題の ChatGPT と同じ gpt-3.5-turbo というものです。
構成とやりとりの流れ
以下のような構成でチャットボットを作ります。

LINE 公式アカウントの Messaging API を用いて AWS の API Gateway に紐付いている URL に Webhook イベントを送信する
AWS Lambda に連携
Amazon DynamoDB に会話を保存 + 過去の会話履歴を新しい方から適当な分だけ取得
OpenAI 社の API を叩いて返答を得る
Amazon DynamoDB に返答を保存
Messaging API の Reply API を叩いて返事を LINE に送信
技術ブログではないですので、細かい部分は割愛します。。
いざ LINE で会話!
試しに「AWS Lambda のメリット・デメリットを簡潔にまとめよ。」と質問してみました。

↓

しっかり返ってきましたね!(変換ミスをしていたにも関わらず)
過去の会話履歴も送っているので、この会話に続けて質問し、文脈がわかっているか否かを試してみましょう。

↓

返ってきましたね!
一緒に OpenAI 社に投げている過去の会話履歴から文脈を判断して返答しています。ChatGPT 同様、しっかり文脈は理解してくれますね!
これで LINE から ChatGPT と同等のものが使えるようになったので、だいぶ便利になるぞ!(きっと。。)
ちなみに gpt-3.5-turbo を1か月半のあいだ時々使っていましたが、わりかし低コストで使えます。モデルによって料金が違うので詳しくは公式ドキュメントをお読みください!

LT 大会での発表の様子
今回のチャットボットの説明と会話のデモを、先日の LT 大会で発表させていただきました。
その時の様子の写真をいくつか載せておきます!





今回はただ仕組みを作っただけですが、本当はプロンプトエンジニアリングチックなことにも踏み込んでみたかったです。(途中で力尽きた。。)
また、GPT4 も現在申込申請中なので、どれくらいパワーアップしているか確認してみたいです。
それでは、現場からは以上です!
最後に宣伝です
ふくおかフィナンシャルグループではまだまだ仲間を募集しております
https://www.fukuoka-fg.com/recruit_career/requirements/