kokh log

yumikokhの開発日記

日報から1ヶ月を振り返るプロンプトを作成した

ここ数年、日報代わりにNotionで日々の記録を書いています。
月の終わりに、目視で30日分の記録を振り返るのが億劫なことが課題だったのですが、 AIを使えばいい感じに振り返りができるのではないかと思いました。

思い通りの出力結果になるまでにプロンプトの調整で苦労したので記録しておきます。

振り返りプロンプト

まず、プロンプトはこの形に落ち着きました。

出来事を振り返るためのプロンプト

日々の出来事を要約します。
- 下記のカテゴリごとに端的に振り返って。
  - 仕事・制作
  - 健康
  - 鑑賞
  - 人間関係
  - 家計
  - メンタル
- 2000文字程度にして
- 具体的な日付を含めないで
- できるだけ出来事を省略しないで
- 固有名詞は残して
- 次のフォーマットに従って
### {カテゴリ}
- {内容}

評価のためのプロンプト

あなたは私のメンターです。日々の記録について、PDCAを回すための振り返りを行います。
- 目標ごとに振り返りをして
- 目標は次の通り
  - 個人開発を進める
  - 毎日英語学習を継続する
  - 週5以上運動する
- {評価}は5段階評価とし、次の絵文字を使ってください: 😭😞😐😊😆
- 2000文字程度にして
- 具体的な日付を含めないで
- 固有名詞は残して
- 次のフォーマットに従って
### {目標}:{評価}
**良かった点**
- **{項目}**: {内容}
**改善点**
- **{項目}**: {内容}

注意点

期待した出力を安定して得るためのプロンプト生成については、OpenAI公式のガイドラインがあります。
Prompt engineering - OpenAI API

上記を参考に、気をつけたポイントは以下です。

  1. 指示を明確にする

    • 評価したい項目は具体的に指定しました。「など」のような曖昧な表現があると出力も曖昧になります。
    • 目標は定量評価できるように指定しました。(プロンプトだけでなく、日報でも定量的なデータが含まれるようにしておくと◎)
    • 評価のプロンプトではメンターを指定し、役割を明確にしました。
    • 〜文字のように、出力の長さを指定しました。
    • テンプレートを指定しました。
    • 何度か出力しながら、出力に含めたくない項目などを指定しました(具体的な日付など)
  2. APIのパラメーター調整
    同じプロンプトで実行しても、基本的に同じ出力結果にはなりませんが、下記のパラメーターが出力結果の一貫性に関係するようです。

    • temperature : 確率分布の散らばり具合(大きい値程ランダム性が増す)
    • t_top : 上位p%のトークンを取得

    公式 にも記載がありますが、両方とも値を変えることは推奨されていません。私は temperature を 0 にしてみました。この2つのパラメーターについては下記の記事がわかりやすかったです。

    techblog.a-tm.co.jp

  3. トークンを節約する

    トークン制限は、1リクエストの出力に対する最大トークン、指定された期間内にクライアントがアクセスできる回数対するレート制限の2種類あります。(最初前者の存在に気づかず、プロンプトで指定した文字数が無視されていました..)

    • 1リクエストの出力に対する最大トークン: モデルごとに違う。gpt-4o-2024-08-06 の場合は16,384 tokens ref: OpenAI Platform
    • レート制限: 利用量によって決まるクラス(tier)とモデルによって違う。dashboardで確認できる。

    入力と出力のトークンは合算して換算されます。1ヶ月の日報をすべて入力に含めただけで上限を超えそうだったので、画像のURL、コードなど振り返りに無関係な値はリクエスト前にトリミングするようにしました。また、日本語よりも英語の方がトークン的に有利なのですが、今回は取り回しのしやすさ優先で日本語のままにしています。

  4. リクエストを分ける
    当初は出来事の要約と評価を1つのプロンプトで行おうとしていました。ただ、1と3の観点から、目的ごとにリクエストを分けたことで、かなり期待値に近い出力になりました。

生成結果

長いので全ては割愛しますが、こんな感じのレスポンスが返ってきました。

振り返りの結果

鑑賞

  • セーラームーンの原作を読み、アニメとの違いに驚く。絵の美しさや時代性を感じるが、アニメスタッフの努力に感動。
  • Base Ball Bearの楽曲を聴き、懐かしさを感じる。特に「真夏の条件」や「STAND BY ME」が印象的。
  • 呪術廻戦の考察系YouTuberのサムネがネタバレしてしまい、楽しみが半減。

評価の結果

毎日英語学習を継続する: 😐

良かった点

  • 英語を使ったコミュニケーション: 輪読会で英語を使ったコミュニケーションを行っている点は良いです。特に、フランス人のメンバーとの会話や、英語での対応ができていることは、英語力の維持に役立っています。

改善点

  • 学習の一貫性: 英語学習が毎日継続できていない点が課題です。特に、英語の学習が「No」となっている日が多いので、学習の一貫性を保つために、短時間でも良いので毎日学習する習慣をつけると良いでしょう。
  • 学習内容の多様化: 英語学習がコミュニケーションに偏っている印象があります。リーディングやリスニング、ライティングなど、他のスキルもバランスよく学習することで、総合的な英語力を向上させることができます。

週5以上運動し、体重を減らす習慣を身につける: 😆

良かった点

  • 運動の継続: 週5以上の運動がしっかりと継続できている点は非常に素晴らしいです。特に、パーソナルトレーニングでの追い込みや、有酸素運動の成果が出ている点は、体重減少に向けた良い習慣が身についている証拠です。
  • 食事管理の徹底: あすけんを使った食事管理がしっかりとできており、100点を取ることができた点は非常に良いです。食事と運動のバランスが取れているため、体重減少に向けた良い習慣が身についています。

改善点

  • 食事のバリエーション: 食事管理が徹底されている一方で、献立を考えることに時間がかかっている点が課題です。固定メニューを決めるなど、食事のバリエーションを増やしつつ、時間を節約する工夫が必要です。
  • メンタルケア: 体重が変わらないストレスを感じている点が気になります。運動や食事管理がうまくいっている一方で、メンタル面でのケアも重要です。体重の変動に一喜一憂せず、長期的な視点で取り組むことが大切です。

ときどき事実と異なることが出力されることもありますが、兼ね兼ね的を得た結果が返ってきています。

所感

AIに関する知見が全くなく軽い気持ちではじめたのですが、プロンプトエンジニアリングと言われるだけあってプロンプト作成の難しさを知りました。 AIで振り返りを行うようにしたことで、時間の削減だけでなく、自分以外の視点から評価してもらえる点はよかったと思います。
AI業界の流れは速く、奥も深いのでなかなか完璧なプロンプトを作るのは難しいですが、今後改良を重ねていきたいと思います。