🧞

Chat GPTで人の活動を褒めるとエモい:YAMAP2023振り返り機能開発顛末記

2023/12/24に公開

この記事は

※本記事は。YAMAP Advent Calendar 2023の記事です。

https://qiita.com/advent-calendar/2023/yamap-engineers

2023年12月、YAMAPはベータ機能として「活動記録で振り返る2023」機能を限定したユーザー向けにリリースしました。
なお「ベータ機能」としているのは、まだ品質が一定の水準に達しておらず、広く一般に公開する段階ではないためです。そのため、今回は無作為に選出したユーザーの方に向けてリリースし、反応を得ることを目的としています。
「自分も使ってみたい」と思った方は、大変申し訳ありません。必ず何かしらの形で皆さんに届けられるように頑張りますので、お待ちください!

この機能の開発は、私ことプロダクトマネージャーの土岐とF/Eエンジニアの柳さんが企画・開発の中心となり行いました。Chat GPTの活用として様々な学びがあったので、ここで得られた知見を共有しようと思います。
なお、開発・実装部分の解説は柳さんによる記事が別途公開される予定です!

「活動記録で振り返る2023」機能とは

で、一体それってどんな機能? という方のために、実際に作成られたページをドン!

実際にはHTMLで生成され、こちらに置かれています。
https://yamap.com/lookback-2023/summary/624732.html
サンプルとして、いくつか例を置いております。

https://yamap.com/lookback-2023/summary/990573.html
https://yamap.com/lookback-2023/summary/1073318.html
https://yamap.com/lookback-2023/summary/326591.html

見ていただければわかる通り、一見ただの「年末の記録をまとめた機能」。ただ、ここがポイントです。

この文章がその人ごと、その活動日記ごとに異なるものが生成されます。
そして、その活動日記の内容を分析し、書いた人をさまざま角度で褒めます!

この機能によって、今年の山行をポジティブに振り返り、2024年の山行のモチベーションを高めていただけると良いな、と思い開発された機能となっております。

この機能により、普通の振り返り機能とは一味違う、なかなか面白いものになったのでは? と考えておりますが、どうでしょう!?

Chat GPTの欠点を回避し、長所を伸ばす「クローズドな問いで分析して褒める」メソッド

さてここから、この機能を企画する経緯を少し振り返っています。
もともとYAMAPでは、Chat GPTを始めとした生成AIの活用を検討しており、社内でいくつか実験的に試していました。

その中で活用において悩んでいたのが、利用している皆さんはご承知の通り「真実ではない情報が生成されてしまう」ことでした。

例えば、「東京都で、初心者の登山に向いている山を10個教えてください。」という問いを投げると、以下のような回答が返ってきます(Chat GPT 3.5を使用)

東京都内には初心者向けの登山スポットがいくつかあります。以下はその中から10つの山を紹介します。ただし、登山の際には安全を最優先にし、天候やコンディションに注意してください。

高尾山(たかおさん):東京都内でもっとも有名な登山スポットで、初心者向けのトレイルが整備されています。頂上からは素晴らしい景色が楽しめます。

多摩川三島山(たまがわみしまやま):多摩川の近くにある小さな山で、初心者に適しています。比較的短いハイキングコースがあります。

奥多摩湖周辺の山々:奥多摩湖周辺には多くの山があり、美しい自然環境を楽しむことができます。初心者向けのコースもあります。

羽村市の石神山(いしがみやま):この山は初心者向けに整備されたトレイルがあり、手頃な距離で登ることができます。

草加市の綾瀬川堤の丘(あやせがわつつみのおか):初心者向けの散策に最適な丘で、綾瀬川の風景を楽しむことができます。

立川市の日原山(ひはらやま):初心者に適した登山コースがあり、東京都心からアクセスが良いです。

福生市の高幡山(たかばたさん):東京都西部に位置し、初心者向けのトレイルが整備されています。

東久留米市の氷川山(ひかわやま):比較的短い距離で登ることができ、初心者にとってはアクセスが便利です。

立川市の青葉山(あおばさん):初心者向けに整備されたトレイルがあり、東京都心からのアクセスも便利です。>
武蔵村山市の武蔵五日市山(むさしがつかいちやま):初心者向けのハイキングコースが整備されており、自然を楽しむことができます。

これらの山は初心者に適しているとされていますが、天候や体調を確認し、安全に登山を楽しむための適切な装備と知識を持って登山に臨むことが重要です。また、登山前に現地の情報を確認し、ルートやトレイルの状態を把握してください。

最初の「高尾山」以外は、ほぼ虚偽の情報が出てきました(※私の知識に無い山かもしれないので、その際は申し訳ありません)。山の情報を多く提供するYAMAPとしては、虚偽の情報を伝えることは絶対に避けなければならないので、このような一般に知られている情報を問うような「オープンな問い」を使うのはかなり難しいことがわかりました。

ただ、この辺は最新のChat GPTでは、GPTsなどの独自データを学習できるものがリリースされており、今後大きく変わる可能性もあります。これは開発時点(2023年秋)での知見です。

ただ、方向性を変え、使っても OKな情報をプロンプトで渡して、情報範囲を特定する「クローズドな問い」を元に生成するのであれば、虚偽の情報を使うことを回避して、魅力的な答えを生成する ことがわかりました。

例えば、「活動記録の文章を渡し、この文章の魅力を分析してください」ということであれば、殆どの場合破綻することなく、生成できました。

そこで、「YAMAPの記録や活動を与え、その内容を元に魅力や凄さを分析して返す」ということで何かできないか?  と思い至ったわけです。

既存の「振り返り機能」の限界を乗り越え、ナラティブをパーソナライズ

で、そこで合流するのが「年末振り返り機能」。Spotifyが有名ですが、年末にその年のデータを元に振り返るのは楽しいですよね。エモい気持ちになります。
https://news.mynavi.jp/article/20231130-2829710/

が、以前から自分は思っていたのが、「テンプレートにデータを入れ替えただけ」感があること。語りかけるような言葉でエモくは感じるんですが、やはり一人一人のデータが異なるだけで、どうしても機械っぽさが漂ってしまう。

この「語りかけ=ナラティブ」自体を、パーソナライズすればもっと面白い、エモいものができるでのは?

という問いで、前項の「クローズな問い」と合体させて面白いものができそう! ということで開発を柳さんとしてみることにしました。

コストはどう算出する?

とはいえ、Chat GPTは従量課金の有料の機能。どこまでコストがかかるかをしっかりと把握しておく必要があります。

https://openai.com/pricing
料金はここに書いていますが、概要はこんな感じです。

  • GPTのバージョンによって料金が異なる
  • インプット・アウトプットのテキスト量による従量課金
  • GPT-3.5 TURBOが最も安い
    • GPT-4.0はその30倍の価格
    • GPT-4.0 TURBOはその10倍の値段


▲GPT-3.5 TURBOの価格

日本語の場合、平仮名1トークン、漢字は2〜3トークンになります。
そのため、以下のような決めて試算しました。

  • 10文字につき、漢字と日本語が半分ずつの15トークン使用として試算=文字数を1.5倍する
  • YAMAPの活動日記をINPUTとして与えるが、活動日記は日記により文字数が異なるため、平均を調査して「200文字」として試算
  • プロンプト+活動日記をINPUTのトークンとして試算
  • OUTPUTは「XX文字程度で」とプロンプトで指定して、文字数を固定する

ということで試算しました。詳細な結果はここでは省略させていただきますが、上記の方法で実際の請求額とほぼ一致したため、試算方法としては間違ってはいないようです。

コストを考えるとGPT 3.5にしたいが、4.0の文章クオリティが圧勝。

ということで上記ん書いたように、GPT-3.5 TURBOは圧倒的に安い! そして高速なので、「3.5がいいんじゃね?」と思った私がいました。

ここで実際に生成された結果を見てみましょう。

GPT 3.5 TURBOでの生成結果

宗像大島オルレコースでの登山日記。トキタクミさんは初めの急登で不安になったものの、ゆったりと下るコースを楽しみながら歩き、韓国から来た登山者との交流も楽しんだ。風車を過ぎての海が見える草原の道では爽快なコースを楽しんでおり、最後には他の登山者の眼鏡を拾い、交番に届けるなど、離島歩きを楽しんだ1日を過ごしました。

GPT 4.0 TURBOでの生成結果

トキタクミさんの登山日記からは、その精神力と持久力の強さが伝わってきます。宗像大島オルレコースを歩いたとき、急な坂道にもめげず、楽しくおしゃべりしながら進んだ様子は、トキタクミさんの明るさとエネルギーに満ちた性格を示しています。また、韓国から来たオルレ歩きの人々と言葉を交わし、途中で出会った蛇にも動じずに歩を進めたところから、トキタクミさんの冒険心と勇敢さが見て取れます。
風車を過ぎたあたりからは、海が見える見晴らしの良い草原の中を歩き、その風景に心が躍ったことを綴っています。これは、トキタクミさんが自然を愛し、その美しさに心を開く人間であることを示しています。最後には、眼鏡を拾って交番に届け、それを探していた夫婦に無事返すという善行も行いました。これは、トキタクミさんの思いやりの深さと社会的な責任感を表しています。
これらのエピソードから、トキタクミさんは体力だけでなく、人間性も兼ね備えた素晴らしい登山家だと言えます。その長い距離を歩き通した健脚ぶりと、何事にも動じない心の強さを高く評価します。

GPT 3.5 TURBOでは、「書いている文章をまとめた」という印象。しかし4.0 TURBOだとさらに「それを行った人の心の動きや性格」まで踏み込んでおり、文章力・分析力の大きな違いがみてとれます。

これらを比較して、コストはかかっても4.0を選ぼう、という判断をしました。

プロンプトは試行錯誤

実際に使ったプロンプトの詳細は割愛しますが、幾つかポイントがあったので残しておきます。

  • さまざまな文章で試したところ、「ですます調」だったり「断定口調」だったりと文章が一定しないことがありました。これは「ですます調で記述してください」と口調を指定することで抑制できました
  • 名前から判断して「彼・彼女」と性別を指定していまうことがありました。これは「必ず指定されたニックネームを使い、彼・彼女を使わない」ことで抑制しました
    • ただ、これでも「彼の・彼女の」という所有を表す場合に回避出来なかったので、「彼の・彼女も」も禁止、もプロンプトで指定しました

デザイン・ライティングの力を注入してクオリティアップ

ベータリリースといえども、皆さんの目に触れる機能。デザイナーの樋爪さん、ディレクターの﨑村さんにデザイン・ライティングを大幅にブラッシュアップしていただき、一気にクオリティをアップさせました。

左が開発時のプロトタイプですが、右によって一気に魅力的な機能になったことが分かると思います。デザイン・ライティングの力は凄い!

そしてベータリリース!

その他いろいろと行ったこともあるのですが、幾つかの課題を乗り越えてリリース!
今のところ、良い反応をいだいております。

ということで、プロダクトとしてはこれからが本番。この機能をYAMAPに活かして、より皆さんの楽しい登山を彩る思い出となるように、サービス・クオリティを磨いていこうと思います。限定された方だけではなく、皆さんに使っていただけるように・・・・もうしばらくお待ちください!

YAMAP テックブログ

Discussion