• Backend

GPTを使ったChat bot開発のための検証基盤構築の話

tags
advent calendar
backend
author
category
backend
mainImage
type-b (25).png
publishedAt
Apr 17, 2023
published
published
slug
newt-adventcalendar-20230417
authorDisplayName
yuta kimura
notion image
こんにちは。NEWT 1st ANNIVERSARY CALENDAR 13日目担当の木村祐太です!

はじめに

初めまして、私は令和トラベルではNEWTのBackendの開発をしています。
令和トラベルは「令和時代を代表する、デジタルトラベルエージェンシーを創る。」というVisionを掲げており、お客さまにより良い旅行体験を提供するためのアイデアの実現や業務効率化のためにChatGPT、もといGPTモデルを使った様々な検証を行なっております。
今回のブログでは、検証効率化のためのGPTモデルを使ったChatbot開発のための検証基盤構築についてお話しします。

開発の流れ

GPTで個別ドメイン対応をするためのアプローチの検討

個別ドメイン対応のために、以下の二つのアプローチを検討しました。
  • アプローチ1:GPTモデルのfine tuning 特定の業界や専門分野に対応したチャットボットを作るために、GPTモデルのファインチューニングを行います。これにより、既存のGPTモデルにドメイン固有の知識を追加し、より適切な回答ができるようになります。
  • アプローチ2:text embeddingsを活用したプロンプトの動的生成 このアプローチでは、embeddingsを用いて、入力されたテキストと関連性の高いプロンプトを動的に生成します。これにより、個別ドメインに特化した回答を生成することができます。
開発効率の観点から、アプローチ2のtext embeddingsを選択しました。テキスト埋め込みを活用することで、モデルのファインチューニングを繰り返すことなく、動的に適切なプロンプトを生成できるため、様々なドメインに迅速に対応するなど開発効率が向上します。

検証基盤の構築

検証基盤として、AWS上に以下のコンポーネントを構築しました。
notion image
  • S3: 個別ドメインに対応するためのデータセットを格納するストレージサービスです。
  • Lambda1: S3のファイル登録イベントで実行されるファンクションです。
    • ファイル名でElasticsearchにindexを作成
    • ファイルの内容を取得し、テキストをベクトル化します(text-embedding-ada-002のモデルを使用)。
    • テキストと計算したベクトルをElasticsearchに登録します。
  • Lambda2: SlackBotの返答を行うファンクションです。
    • Slackからのリクエストを受け取り入力をベクトル化します。
    • ElasticSearchに問い合わせをし、距離が近いデータセットを取得します。
    • 取得したデータセットでプロンプトを動的に生成しGPTモデルに問い合わせします。
    • 結果をSlackにPostします。
  • Lambda3: Slack以外の用途のためのエンドポイントを提供するファンクションです。
  • Elasticsearch: データセットとベクトル情報を格納しています。
この基盤を使うことで、S3にアップロードしたファイルの内容がデータセットとして登録され、すぐにAPIやSlackBotで検証を行うことができるようになります。

実際に使ってみる

NEWTのFAQを取り込んでみました
  1. 以下のようなFAQをまとめたcsvファイル(faq.csv)を用意します
notion image
  1. S3にアップロードするとlambdaが実行されファイル名「faq」でElasticsearchにインデックスが生成され、データセットとベクトル情報が登録されます
notion image
  1. これでchatの個別ドメイン対応は完了です。 Slackで問い合わせをするとNEWTに関する情報を返してくれます ([faq]でインデックスを指定しています。他のインデックスに切り替えることができます)
notion image

取り組みによる成果

作成した検証基盤を活用して、実際に以下の2つの取り組みを行いました。
  1. ボットの社内共有 上記で作ったBotを社内共有して使ってもらいました。ブログ記事を読み込んで旅行について提案できるようにならなか?など多くのアイデアをフィードバックとしてもらい、次の検証に繋げたいと思っています。
  1. 他メンバーのアイデアを実現するためのAPIとしての活用 検証基盤をAPIとして提供することで、他のチームメンバーが独自のアイデアやアプリケーションに組み込むことができるようにしました。Lambda3を利用してAPIエンドポイントを作成し、他の開発者が容易にアクセスできるようにしました。これにより、チーム全体で知識や技術を共有し、さまざまなアプリケーションやサービスで活用することが可能となりました。
これらの取り組みにより、作成した検証基盤の有効性と汎用性を確認することができました。今後も引き続き、様々なドメインや用途に応じて検証基盤を活用し、より高品質なチャットボットを開発していきたいと考えています。

まとめ

今回のプロジェクトでは、GPTを使ったチャットボット開発のための検証基盤を構築しました。これにより、テキストエンベディングを試しやすくなり、実際にボットを触ってもらうことで、社内での議論が活発化しました。多くのアイデアが生まれ、検証したいことが次々と増えている状況です。
今後は精度向上のための検証を継続し、お客様のお困りごとにいち早く対応するためのツアーコンシェルジュBotの開発などプロダクトとしてリリースできる機能を目指して開発を進めていきます。
 
明日のNEWT 1st ANNIVERSARY CALENDAR はトラベルコンシェルジュチームの光崎 拓生さんです。お楽しみに!
 
令和トラベルでは、現在全力で仲間探しをしていますので、少しでもご興味ある方はぜひ採用ページからご連絡ください。まずは気軽にお話を聞いていただける、ミートアップも開催しています。メンバー全員で温かく迎える準備はできています!
私たちが運営する海外旅行予約サービス、NEWTはこちらから。
 
*******************
現在、NEWTでは大感謝セール『NEWT FES』を開催中です。ぜひこの機会に海外旅行をもっとおトクにご予約ください。
NEWT FES 祝1周年!大感謝セール| NEWT(ニュート)
 
令和トラベルに関する情報発信を専門とした公式noteはこちらから。