2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「しりとり上手の高木さん」と、LINEでしりとり勝負をしたい!

Last updated at Posted at 2023-07-23

概要

からかい上手の高木さん (© 山本崇一朗 小学館)」 という漫画・アニメにヒントを得て、
高木さんと、LINE でしりとり勝負をするゲーム を作りました。

高木さんのアイコンは、SNSでの個人利用が許可されているものを使っています。

ライトニングトーク 発表資料

2023年7月13日(木)みんなのPython勉強会#95 のLT枠で、本アプリについて紹介をしました。
要点が5分間にまとまっているので、ぜひご覧ください。

発表時の動画

スライド資料

(クリックすると新しいタブで開きます)
image.png

技術

使用している要素技術

アーキテクチャ図

Architecture _diagram.png

ソースコード

GitHubにて公開中 (デプロイ方法などは README に記載)

特徴 / 工夫

image.png
LINE から GPT を呼び出す構成は、技術ブログなどで時々見かけます。
しかし、今回のアプリでは、以下の点にオリジナリティがあると考えています。(LT内でも紹介しているものです)

  1. しりとりができる!
    • 【問題点】GPTは、意外と「しりとり」が得意ではありません。
      • 言葉になっていない言葉を返したり、既出の言葉を返したり、「ん」で終わる言葉を返したり...します。
    • 【解決策】GPTプロンプトの工夫と、チャット履歴を管理するDBを用意することで、「しりとり」ができるようにしました。
      • 具体的には、しりとりのルールと実例を、Few-shot Learning というテクニックを用いて教えこませました。
  2. キャラクターらしいチャットができる!
    • 【問題点】GPTは高木さんのキャラクターを熟知しているわけではないので、「高木さんを演じてください」と言ってもできません。
    • 【解決策】プロンプトを工夫することで、高木さんらしいチャットができるように育て上げました。
      • 前述の Few-shot Learning に加えて、Role prompting というテクニックを使いました。
  3. 文脈に沿った会話ができる!
    • 【問題点】実はGPTのAPIはセッションを持たず、チャットの履歴をAPI側で持ってくれません。
      • そのため、しりとりなのに既出の単語を回答したり、チャットごとに話がコロコロ変わるという問題が起こりえます。
    • 【解決策】AWS 上にチャット履歴を管理する DB を用意しました。
      • 過去のチャット内容を DB に保存しておき、GPT API を呼び出す際には、保存しておいた過去のチャット文を API リクエストに添付する工夫をしました。
  4. デプロイしやすく、ランニングコストも安い!
    • IaC(インフラのコード化)の採用
      • AWS CDK を用いて、AWSリソースをソースコードとして定義しました。
      • これにより、ミスなく簡単にシステムをデプロイできるようになりました。
    • サーバレスサービスの採用
      • AWS Lambda, DynamoDB, API Gateway などのサーバレスサービスを利用し、
        ランニングコストがとても安い構成にすることができました。(おそらく月0~1円程度)

参考資料 / お役立ち資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?