研究ノート

GPTとクラウドを利用したチャットボット開発における汎用的長期記憶の実装
Implementation of Generic Long-Term Memory in Chatbot Development Using GPT and Cloud Services

我妻 翔

池田 旭駿

WAGATSUMA Sho

デジタルハリウッド大学大学院 院生
Digital Hollywood University, Graduate School

デジタルハリウッド大学大学院 院生
Digital Hollywood University, Graduate School

平松 猛男

IKEDA Akitoshi

白井 暁彦

HIRAMATSU Takeo

SHIRAI Akihiko

デジタルハリウッド大学大学院 客員教授
Digital Hollywood University, Graduate School, Visiting Professor

デジタルハリウッド大学大学院 院生
Digital Hollywood University, Graduate School

GPT とは Generative Pretrained Transformer で、ここでは ChatGPT をはじめとする LLM(Large Language Models:大規模言語モデル ) による推論を用いたテキスト生成である。本研究ノートでは ChatGPT をエンジンとした各種 LINE チャットボット開発を通し、利用者との高度なコミュニケーションや体験としてのリアリティと、可用性が高い LINE チャットボットの開発手法について、大学院「クリエイティブ AI ラボ」において実験された各種の方法を共有する。本研究ノートでは、特に長期記憶の重要性について着目し、各実装例とユーザーの印象や課題といった方法論の共有と、その後のサービスアプリケーション開発手法のケースについて明らかにする。

1. はじめにこのようなチャットボットサービスは海外では「Character.AI」のような例がある。実在の人物や SF の登場人物などに似せた応答をGPT(Generative Pretrained Transformer) は、OpenAI によるするチャットボットをユーザー自身が制作し、共有することができる。

大規模言語モデル (Large Language Models: 以下 LLM) のファミ

高度な会話ができ、かつ既存キャラクターを会話で再現するチャッリーである。大規模なテキストデータのコーパスで訓練され、人間トボットは 新 た なコン テン ツ や サ ービス を生 む 可 能 性 は あ る が、の書いたようなテキストを推論により生成することができる。2023

一方で有名 IP などの非公式ペルソナをユーザーが生み出す開発は年においては ChatGPT をはじめとする LLM の推論を用いたテキス

UGC（User Generated Contents；ユーザーによる生成コンテンツ）

ト生成が広く知られるようになった OpenAI 社による Web インターだけでなく、独自のサービスとして開発・マネジメントしたい需要もフェース によ る サ ービ ス や API を経 由して、Slack や LINE などのあるだろう。また「全力肯定彼氏くん」や「ひまひま女子トモちゃん」チャットボットなど広範に利用されている。デジタルハリウッド大学での実装の経験から、スケール面にも目を向ける必要がある。例え大学院（DHGS）「クリエイティブ AI ラボ」(CAIL) の活動として、実ば Google Apps Script 等 の サ ー バ ー サ ービス によるシステム構用的な LINE チャットボットサービスの開発を通し、利用者との高築を想定した場合、処理の速度や回数に限界があり、開発の手軽さ度なコミュニケーションや体験としてのリアリティと可用性が高いコの一方でユーザー数の増加などに耐えられない可能性もある。

ミュニケーションボットの研究を行っている。
本研究ノートでは特に長期記憶の重要性について着目し、過去のこのような背景から CAIL では多様な受講生がデジタルコンテンツ記憶に関する研究を基に、GPT-3.5-turbo-0613 の API においてマネジメント修士 (DCM 修士 ) として、主体的に GPT チャットボットを実装された Function Callingとクラウド上のデータベースを活用し、開発できるような方法論を探求している。実験として、1 冊の手順書

LLM を利用した汎用的な長期記憶実現の方法論化と、その後の社としての技術書『LINE Bot をつくってみよう API をためして学んで会実装事例について報告する。

しっかりわかる』を使って実際に実用的な GPT 利用チャットボットが開発できるかワークショップを通して確認した [6]。学生同士の反転

2. GPT 利用パーソナライズチャットボットと実装ワーク
ショップを通した実用化検討

学 習 を使い 参 考とな る 書 籍 を追っていく形でシステム 開発の経験がある受講者が経験のない受講者をリモートでの画面共有で確認

筆者らが既に実装してきた LLM の事例としては LINE チャットボットしながら作業を実施した。
結 果 と して 7 人 の 受 講 生 全 員 が LINE チ ャ ット ボ ット を AWS「絶対肯定彼氏くん」や「ひまひま女子トモちゃん」のように、暇なCloud 上で Lambda 機能を使い実装するところまで到達した。

時間に話し相手になり、ユーザーに寄り添った応答をするチャット
ボットがある [1][2]。

3. 長期記憶の重要性

これらの LINE チャットボットは GPT-3.5-turbo-0301 を利用しておりバックエンド側に Chatify [3] というノーコードサービスを利用

一 方で、 前 述 の Lambda 機 能 によ る チャットボットは 長 期 記 憶し GPT へのプロンプトのみで実装されていた。

を 実 装 して い な い。Squire ら に よ る 記 憶 の 分 類 は 記 憶 を「 陳 述Chatify によるチャットボットは高度なコミュニケーションを手軽記 憶 」(declarative memory) と「 非 陳 述 記 憶 」(non-declarativeに実装できる一方、2023 年 6 月 25 日にサービス終了することがmemory) に区別した [7]。

宣言されており、同様のチャットボットを実現する別の手段としてGPT を OpenAI 社提供の API [4] や API Playground [5] により実現す

長期記憶とは陳述記憶と非陳述記憶に大別される。陳述記憶は言語化可能な記憶であり、チャットボットの実装に求められる長期記ることができる。

©︎2023 Digital Hollywood University

25

DHU JOURNAL Vol.10 2023

図1：Squire、湯舟らによる記憶の分類。本研究では「エピソード記憶」と「プライミング」での実装について注目する。[7]憶はこの類にあたる。
前述のワークショップでの実装ではワンショットのチャット GPT、API によるレスポンスを表示しているに留まり、例えばプレイヤーユーザーの名前や、今までどのような会話をしてきたかといったエピソードについては保存されていない。
白井の過去の実装例では、スクリプトプロパティに対してユーザーのIDで過去3回から5回の会話履歴をGPTのユーザーアシスタントメッセージとして与えることで、このワンショットの返答で生成においても十分なリアリズムを持った会話が実現できることが確認出来ている。
但し、この記憶が長くなればなるほど GPT 側へのリクエストトークンが長くなり好ましくない。
ワークショップ内では、各受講生の想定するデジタルコンテンツやサービス開発に活かしていく上で、トレーニングの記録に利用したり、TRPG におけるゲームマスター機能や他プレイヤーとの関係、ゲーム上のステートを管理するような機能も必要であるといった汎用的長期記憶の需要が明らかになってきた。

3-1. 理論GPT 側の機能も急速に追加・更新されており旧来の GPT-3.5turbo-0301 でのトークン制限も過去の 2k、4k から 16k に拡張されより長いプロンプトが利用出来るようになった。
また、Function Calling のようにプログラム上で利用する関数の図2：クッキングママローラ（以下献立ボット）[8]のソフトウェア構造図

引数のようなものを自然言語での会話から判定させ、ユーザーやシステムとのやり取りを確立させる方法も登場している。プライミング
記憶が従来の研究では非陳述記憶として扱われているが、GPT のよ筆者らの実装例、献立ボットの実装の詳細については、Website

うな LLM の推論による補完や、トレーニングボットで求められる日々で公開している [9]。の活動に対する評価やその後の達成に対する助言などは、プライ本実装は GPT-3.5-turbo-0613 が献立を考えるチャットボット

ミング記憶もしくはワンショットではない LLM による言語生成が関である。ただ献立を考えるだけではなく、ユーザーの名前と嫌いな食わるため、一概に過去の研究による定義だけで判断することは難し

べ物を記憶し、ユーザーから採用された献立を覚えたりそれを呼び出いだろう。

す時に GPT-3.5-turbo-0613 が日付の範囲指定をして呼び出す機能

この研究ノートでは前述の『LINE Bot を作ってみよう API をためがある。これらの記憶とその呼び出しの機能には Function Calling

して学んでしっかりわかる』での実装例に加えて、長期記憶のプロトの機能が実装されている入力例として以下のリクエストを送信。

タイプとしてユーザーの名前とステートを記憶可能な外部記憶とし「私の名前はショウです」て DynamoDB(NoSQL データベースサービス ) を利用して実装を試

こ の リ ク エ スト に 対 して、GPT-3.5-turbo-0613 は update_

してみると、ユーザーの名前やユーザーとの会話履歴を保存でき、user_name 関 数 を呼 び 出し引 数 user_name に「 ショウ」を渡 す。

外部システムから参照可能な JSON 形式を取ることでユーザーの苦この引数を用いて DynamoDB にユーザーの名前を保存する。

手な食べ物を把握した献立ボットやトレーニングボットや TRPG 向けのアシストボットもしくはカウンセリング医療向け自治体サービスといった多様な利用可能性が拡がった。以下は実装例である。

4. 実装例
実 装 例 を 示 す 前 に Function Calling に つ い て 説 明 し た い。
Function Calling は GPT への自然言語入力に対して、事前に設定された description に書かれた関数定義を基に、ユーザー関数とその引数となる文字列を JSON 形式で返すことができる。
例えば Dice(a,b) のように引数 a,b が必要な関数を設定し、この関数の discription を「最大数 a, デフォルト 6 のサイコロを b 回振る」とした場合、ユーザーから自然言語入力として「サイコロを 2 個振って」と与えられた場合、JSON 形式で「Dice(6,2)」が出力される。

©︎2023 Digital Hollywood University

図3：update_user_name関数が返却された場合のシーケンス図26

DHU JOURNAL Vol.10 2023

前述ボットのシーケンス図をまとめたものは Website で公開してプレイヤーとより深い関係を築くことができる。以上のように TRPGいる [10]。のコンテキストにおいても、長期記憶の実装は極めて有望な進歩を同じ要領で以下のリクエストを送信。

もたらす。

「私の嫌いな食べ物はグリーンピースです」

以 下 に、 差 分 を確 認するた め 長 期 記 憶 の 実 装 が な かった 場 合、

この入力に対して、GPT-3.5-turbo-0613 は update_hate_food

献立ボットがどのような挙動を示すか検証してみた。

関数を呼び出し引数 hate_food に「グリーンピース」を渡す。この引数を用いて DynamoDB にユーザーの嫌いな食べ物を保存する。「献立考えて」というリクエストを送信するとメインディッシュ、サイドディッシュ、スープ、デザートに至るまで献立を提案してくれる。なぜ「献立考えて」という一言で、4 種類ものレシピを考えてくれるかというと、プロンプトに「あなたはフランス・リヨン出身の 48 歳専業主婦です。
趣味でユーザーの献立を考えるクッキングママをしています」という設定が仕込まれており、その設定に従ってフランスのコース料理のような表現で献立を考えてくれているためと推測する。
一方で、プライミングによってプロンプトの設定を無視することが出来ることも確認されている。
献立ボットには最新 5 件の会話履歴がプロンプトに仕込まれているが、この 5 件が全て「メインディッシュだけ献立考えて」というリクエストとそのレスポンスだった場合、入力を「献立考えて」としてリクエストを叩いた場合にメインディッシュだけをレスポンスすることが確認されている。これまで採用した献立を参照することも可能で、入力を「昨日採用した献立は除外して献立考えて」とリクエストすると、開始日付と終了日付を昨日の日付で DynamoDB からレシピ情報を取得して昨日の献立を除外して献立を考えてくれる。
上記検証のテストエビデンス ( 実施日時 :2023 年 8 月 20 日、付録 2023 年 8 月 29 日 ) は Website で公開している [11]。
図4：ユーザーが名乗った名前を覚えているかをテストした画面

5. 結果
本研究において、汎用の長期記憶を有するチャットボットが完成した。当初、時間経過に対して過去のエピソードなどをどう保存するか課題が残ると考えていたが献立ボットに関してはレシピ等を日時を指定して取得することができた。
DynamoDB へ保存する時点で日付も一緒に保存することでこの課題は解決できた。
DynamoDB に保存された情報を全て長期記憶と捉え、会話履歴はそこから取り出されたエピソード記憶、条件に従って関数を呼び出すFunction Callingは取得に関していえばエピソード記憶でもあり、手続記憶でもあると考えられる。
GPT が会話の連続的な流れを見てレスポンスの仕組み自体を変えることは、会話履歴がエピソード記憶からプライミング記憶に変わったと推定した。
エピソード記憶を整理するとユーザーの名前を記憶していること、ユーザーの嫌いな食べ物を記憶していること、採用した献立を記憶していること、最新 5 件の会話履歴を記憶していることが挙げられる。
プライミング記憶を整理すると、同じリクエストの会話履歴が続くと別のリクエストが送信された場合に同じ内容のレスポンスを返却することを確認できた。
GPT へのエピソード記憶とプライミング記憶の実装が成功したことで、数多くの新たな可能性が開かれた。ユーザーとの対話がより

図5：ユーザーの嫌いな食べ物を覚えているかをテストした画面自然で人間に近いものとなり、ユーザーの満足度が向上した点である。例として、GPT を TRPG におけるゲームマスター機能に用いる
場合、この長期記憶の機能は非常に有用である。
ストーリーの進行やプレイヤーの嗜好をエピソード記憶に記録することでより魅力的な展開をプレイヤーに提供できる。
また、時間経過も表現できる。例えば、プレイヤーが前回のセッションである町を救った場合、次回その町を訪れた時には明らかな変化が見られるかもしれない。長期記憶によって、NPC との対話が一層リアルかつ深化する。過去の対話や出来事を覚えているNPCは、©︎2023 Digital Hollywood University

27

DHU JOURNAL Vol.10 2023

参考文献[1] 全力肯定彼氏くん
https://note.com/o_ob/n/nb2e280ca1309[2] ひまひま女子トモちゃん
https://line.me/R/ti/p/@t0m0?from=page&liff.referrer=https%3A%2F%2Ft.co%2F&accountId=t0m0[3] Chatify[4] OpenAI社提供のAPI
https://platform.openai.com/docs/models/gpt-3-5[5] API Playgroundhttps://platform.openai.com/playground[6] mochikoAsTech：『LINE Botをつくってみよう APIをためして学んでしっかりわかる』,mochikoAsTech発行（2023-05-20版），52-153頁．
[7] 湯舟英一:『長期記憶と英語教育 (1) ― 海馬と記憶の生成、記憶システムの分類、手続記憶と第二言語習得理論 ―』,東洋大学人間科学総合研究所紀要第７号（2007年) 151頁.

[8] クッキングママローラ
https://lin.ee/GtTFe1O[9] クッキングママローラのソースコード
https://github.com/flymywife/creativeAi

図6：採用した献立を覚えているか、採用した献立を覚えることはできるかをテストした画面[10] クッキングママローラのシーケンス図
https://docs.google.com/presentation/d/1fN5qlk-rvWkRz_zrolBC5IJfPjaRKnPFXnO5uZwB1ac/edit#slide=id.p

図のように GPT はあたかもユーザー名や嫌いな食べ物を覚えて[11] クッキングママローラのテストエビデンス

いるかのように返答をするが、実際には何も覚えていないことが示

https://docs.google.com/presentation/d/15b6fqq1YdGされた。

YvVBt6Q4Q0duYrTg7dlVsWjdu6srUF8jU/edit#slide=id.

長期記憶を実装しない場合、会話のコンテキストが成立せずサーg23d3a3a0455_0_103

ビス開発に活かすことが困難となる。

[12] 【この記事だけで出来る】AWSで学びながら長期記憶を実装出

今回の研究結果で GPT に長期記憶を実装することで有意にサービ

来るLINEBOTを作ろう～Function Callingもあります～

ス開発に活かせる可能性を示す事ができた。

https://note.com/flymywife/n/nd368d341bd1a5-1. 考察
Function Calling の誤り、プロンプトの正しい方法などはまだ研究すべきであり、また OpenAI 側の実装が変わることで将来的な実装方法も変わるだろう。
また DynamoDB による実装も、長期運用においてはコストが積み重なる可能性があり、サービス設計においては、より長期の価値（LTV）やそのユーザージャーニーの設計においても考慮すべき要素がある。

6. まとめこれまで紹介したチャットボットとその実装は GPT における長期記憶の研究であるが、その長期記憶を活用した社会実装として、トレーニングボットのプロトタイプとして note でチュートリアル解説として公開した [12]。多くの方に読まれており（2023 年 8 月 8 日の公開から 2023 年 8 月 29 日現在売上 7,700 円）、一定の価値を創出することに成功したことが確認出来た。
2023 年においては ChatGPT をはじめとする LLM が世間を賑わせたが、一方では毎月の ChatGPT サービス利用料や API 費用を上回る事例を作り出すことは難しい。本研究ノートでは特に長期記憶の重要性について注目し、まだ実装例が少ない Function Calling とクラウド上のデータベースを活用し、LLM を利用した汎用的な長期記憶実現のための方法論共有をラボプロジェクトを通して速いイテレーションで行うことができた。社会実装事例については、有料ブログの売上という形でエビデンスを共有したが、このようなアプローチも新たな試みとして理解されることを期待する。

©︎2023 Digital Hollywood University

28

DHU JOURNAL Vol.10 2023