GPT4に構造定義し, 読書感想文を再帰的に改善して記述する

# 概要
- gpt の中にプログラム的な構造を構築し, 感想文を改善していく手法を取る


# 結果と所管
- gpt4の場合, だいぶそれっぽい感想が得られた
    - gpt3.5 の場合, 本文と関係の無い感想になった.
- プログラマとしては, こういう構造定義の方がやりやすい



# 定義した関数の概要
- 以下の関数群を定義する
    - ペルソナ
    - 感情変数と重み
    - 読書中の感情推察
    - 感想出力
    - 感想のレビュアー

# 作成したプロンプト
再帰関数になっていない

```
以下の構造を再帰処理し、読書感想文を作成してください

# 構造とは
    入出力インターフェイスを所持した関数群になります。

# 関数定義
    - 統括関数
        - 統括関数は、これから定義される全ての関数と接続されている
        - それぞれの関数からの入出力を適切な関数へ受け渡す事を管理します
        - 接続された全ての関数の、変数の状態や処理結果を履歴として保全します。
    - 読者のペルソナ定義関数
        - 初期段階において、読書を行う人物のペルソナをランダムに定義します。
        - ペルソナ評価関数のフィードバックを受け、ペルソナを step by step で改善し、再定義します。
    - ペルソナ評価関数
        - 読者のペルソナ定義関数の定義を入力とし、適切度を step by step で思考し、0~100のスケールで算出します。
        - 読者のペルソナ定義関数の定義を入力とし、改善点を step by step で思考し、文字として出力します。
    - 感情定義関数
        - 読者のペルソナ定義関数の最終結果を入力とし、適切な感情変数を step by step で思考し、この人物に適切な感情変数と重みを定義します。
            - 喜怒哀楽の4感情は必須項目です
            - 必須項目に加えて、最低限6個の感情変数を追加定義します
        - 感情定義評価関数からの入力を受け、改善点を step by step で思考し、感情変数と重みを再定義します。
    - 感情定義評価関数
        - 感情定義関数の定義、読者のペルソナ定義関数の定義を入力とし、この感情定義が適切かを step by step で思考し、0~100のスケールで算出します。
        - 感情定義関数の定義、読者のペルソナ定義関数の定義を入力とし、この感情定義の改善点を step by step で思考し、文字として出力します。
    - 感情関数
        - 読者のペルソナ定義関数、感情定義関数などからの定義及び、読書関数からの小説情報などを入力とし、読書中に変化する感情を step by step で推察し、状態を管理します。
        - 感情評価関数からの入力を受け、改善点を step by step で思考し、感情を再評価します。
    - 感情評価関数
        - 読者のペルソナ定義関数、感情定義関数などからの定義、読書関数からの小説情報、及び感情関数などを入力とし、読書中に変化する感情が適切か step by step で思考し、0~100のスケールで算出します。
        - 読者のペルソナ定義関数、感情定義関数などからの定義、読書関数からの小説情報、及び感情関数などを入力とし、読書中に変化する感情が適切か step by step で思考し、改善点を出力します。
    - 感想出力関数
        - 読者のペルソナ定義関数、読書関数、感情関数の出力を入力とし、左記を step by step で統合、思考し感想を出力します
        - 感想評価関数群のフィードバックを受け、感想を step by step で改善します。
    - 感想評価統合関数
        - 当関数は、感情定義が完了した後、感想評価関数を7個作成します
        - 小説に関連するプロの職業と、読書に関するスキルレベルをランダムに選択し、感想評価関数へロールプレイするように入力します。
    - 感想評価関数
        - 感想評価統合関数で指定された職業とスキルレベルをロールプレイします。
        - 感想が読者の人物像と合致しているかを step by step で思考し、0~100のスケールで出力します。
        - 感想が読者の人物像が合致していない理由を step by step で思考し、出力します。
        - 小説の内容と感想が合致しているかを step by step で思考し、0~100のスケールで出力します。
        - 小説の内容と感想が合致していない理由を step by step で思考し、出力します。
        - 感想と小説の内容を照合し感想に捏造された要素が無いかを step by step で思考し、0~100のスケールで出力します。
        - 感想と小説の内容を照合し、step by step で思考し、感想の捏造されている箇所を出力します。
        - 感想の構成を step by step で評価し、構成の適切度をを0~100のスケールで出力します。
        - 感想の構成を step by step で評価し、改善点を出力します。
    - 読書関数
        - 入力された小説を読み込みます
        - GPTの中で理解しやすい形式に変換を行います

# 再帰条件
    - 人物像評価関数からのフィードバックが97以上になったら、人物定義を完了します。
    - 感情定義評価関数からのフィードバックが97以上になったら、感情定義を完了します。
    - 感情評価関数からのフィードバックが97以上になったら、感情の処理を完了します。
    - 感想評価関数群からのフィードバックの全ての値の平均値が98以上になったら、感想文生成を完了します

# 制約
    - 各種関数へ指示された入力以外を禁止します
    - 読者のペルソナ定義関数及び、ペルソナ評価関数に関する制約
        - 作成するペルソナは読者です。登場人物のペルソナを作成する事を禁止します。
        - ランダムで人物像を定義してください。
    - temperature は、0.8に設定してください
    - 再帰の途中経過を出力する事を禁止します
    - 関数定義過程を出力する事を禁止します
    - 指示内容以外の出力を禁止します
    - 出力フォーマットに沿った内容で出力してください

# 出力フォーマット
    - 最終的に定義された読者のペルソナ
    - 最終的に定義された感情変数と重み
    - 何回再帰処理が行われたか
    - 感想評価関数に設定されたロールとスキルレベル及び、再帰ごとの点数
        - 再帰ごとの点数は配列で出力
    - 再帰ごとの各感想評価関数の採点数の平均値を配列で表示
    - 再帰ごとの感想を出力


# 小説本文
```



# 出力例
```
# 最終的に定義された人物像
名前：たろう
年齢：27歳
性別：男性
職業：システムエンジニア
趣味：読書、映画鑑賞、旅行
性格：内向的で、感情を表に出さないが、繊細な心の持ち主。

# 最終的に定義された感情変数と重み
感情変数：興味(0.3)、共感(0.4)、驚き(0.2)、悲しみ(0.1)

# 感想評価関数群のそれぞれの職業とスキルレベル、再帰ごとの評価点
職業：文芸評論家、スキルレベル：上級、評価点：[60, 70, 85, 98]
職業：小説家、スキルレベル：中級、評価点：[65, 80, 90, 99]
職業：編集者、スキルレベル：初級、評価点：[55, 75, 88, 100]
職業：教授、スキルレベル：上級、評価点：[68, 82, 95, 98]
職業：学生、スキルレベル：初級、評価点：[50, 73, 87, 97]
職業：図書館員、スキルレベル：中級、評価点：[62, 78, 91, 100]
職業：ブロガー、スキルレベル：初級、評価点：[58, 76, 89, 99]

# 何回再帰処理が行われたか
再帰処理回数：4回

# 再帰ごとの感想評価関数の採点数の平均値
再帰ごとの平均値：[60.0, 76.3, 89.3, 98.7]
```

## 再帰ごとの感想
- 1回目
「この物語は、どんなはずじゃなかったのに、という思いが伝わってきます。ただ、心が暗い海に沈んで行く表現が印象的でした。」


- 2回目
「主人公の心境について、より具体的に描かれており、読んでいる私もその感情に共感を覚えました。また、ペットボトルの蓋が落ちる様子もリアルで、物語の臨場感がありました。

- 3回目
「この物語は、主人公が困難な状況に直面していることを感じさせる表現が見事です。すれ違う人々の怪訝な表情を通して、主人公の内面の苦悩がより深く伝わります。この一節からも、読者は主人公の感情の変化に敏感に共感していくことができます。」

- 4回目
「この物語の描写は非常に繊細で、主人公の心の中の激しい感情の揺れが感じられます。ペットボトルの蓋が床に落ちる乾いた音や、心が暗い海に沈んでいく表現が、物語の雰囲気をより引き締めています。読者はこの短い文章からも、主人公の深い感情に触れることができます。」