はじめに、
この記事は、chatgpt workを使って基本自動生成しています。
その上で不足記事を追加・修正した上で、動作確認を行っています。
この企画はもともと公式のMLFlowのチュートリアルがちょっとイケてなかったので、chatgpt workを使ってもっと簡単なチュートリアルを作成出来るか検証してみようと思い立ったところから開始しました。
そしてせっかくやるなら面白いテーマでやろうと思い、「生成AIで面白いなろう系小説第一話を書けるのか?」
という実験も兼ねています。
前回までの振り返り
第一回目は、まずは荒いプロンプトで実行、トレース出来るところまで確認しました。
第二回目は、まずは荒い評価基準を導入し、出力した第一話を評価出来るところまで確認しました。
第二の一回目は、急遽評価基準の精度を改善することにしました。
ここがかなり試行錯誤した上で、ようやく及第点(今のところ)の評価基準精度になりました。
第三回目は、改善したプロンプトを作成し、
第四回目は、バージョン毎のプロンプト精度の比較をしてみました。
第四の一回目は、プロンプトを修正し出力の仕方をかなり調整しましたが失敗に終わりました。
第四の二回目は、STEP4-2では、STEP4-1で混在していた生成、検査、修正を分離しました。LLM生成の契約、自動検査、自動修正を外し、コードで作るEpisode Boundary、人物中心構成、最小Story Stateだけを試しましたプロンプトを修正し出力の仕方をかなり調整しましたが失敗に終わりました。
MLflow GUIで始めるプロンプト改善 #4-3:参考作品から本文技法を抽出して比較する
STEP4-2では、入力から決定的に作るEpisode Boundaryによって全Requirementを3/3へ改善しました。しかしQuality平均は3.000で、人物造形と感情は3点のままでした。構成JSONへ「望み」「恐れ」「選択」「代償」という項目を追加しても、本文中の人物が深くなるとは限りません。
STEP4-3では、参考作品の第一話と本編開始話を本文レベルで確認し、固有の文章や設定を転載せず、一般化した執筆技法だけをPromptへ追加します。STEP4-2のBoundary、4場面、最小Story State、生成モデル、Judgeは固定します。
今回のゴール
- 参考作品から本文上の技法を抽出する
- 作品固有の名称、設定、比喩、言い回しを再利用しない
- 主人公固有の判断、会話の含意、感情の蓄積を改善する
- STEP4-2本文をControlとして同じRunで評価する
- Requirement回帰とQuality改善を別々に判断する
1. 参考作品をどう使うか
確認したのは『嘆きの亡霊は引退したい』第一話、『Re:ゼロから始める異世界生活』プロローグと本編開始話、『無職転生』プロローグと本編開始話です。
参考作品の本文をFew-shot例としてPromptへ貼り付ける方法は採りません。長い引用は著作物への依存を強め、モデルが特徴的な表現を模倣する危険があります。また「有名作品風」という指示では、何が品質へ効いたか評価できません。
今回は、複数作品に共通して観察できる次の機能へ一般化します。
- 世界説明が、主人公が今必要としている判断と結び付いている
- 主人公の経歴が、何を見るか、どう誤解するかへ影響している
- 会話が情報伝達だけでなく、警戒、虚勢、回避、関係変化を同時に担う
- 感情がラベルではなく、刺激、解釈、身体反応、選択の順に現れる
- 場面末尾が説明的な予告ではなく、行動結果や未回答の反応で次へ接続する
2. STEP4-2から変更する範囲
| 要素 | Control | STEP4-3 Candidate |
|---|---|---|
| Episode Boundary | コードで構築 | 同じ |
| 場面数 | 4 | 4 |
| Story State | 5項目 | 同じ |
| 自動修正 | なし | なし |
| 構成 | 望み・恐れ・選択・代償 | 固有の知覚、会話の裏、感情連鎖も設計 |
| 本文 | 人物中心の一般指示 | 本文上の働きを具体化 |
変更を構成Promptと本文Promptへ限定することで、本文技法の効果を観測します。
3. 主人公固有の知覚フィルター
人物設定を本文へ一度書くだけでは人物造形になりません。経歴が現在の観察と判断を変える必要があります。
構成にはprotagonist_specific_lens、各場面にはnoticed_detailとpersonal_interpretationを持たせます。本文では、その経歴に固有の比較、警戒、期待、判断を2回以上働かせます。
例えば元会社員なら、単に「ブラック企業で働いていた」と回想するのではなく、人の配置、指示の曖昧さ、壊れた道具を見たときの優先順位へ経験を反映します。経歴を説明ではなく認知の偏りとして使います。
4. 会話に表面と裏を持たせる
情報を尋ね、相手が答えるだけの会話は、設定説明を台詞へ移しただけです。構成へdialogue_surface_goalとdialogue_hidden_intentを分けて持たせました。
本文Promptでは、返答の間、視線、言い直し、避けた話題、発言と矛盾する行動で含意を示します。本音を地の文ですぐ答え合わせせず、読者が推測できる余地を残します。
5. 感情を連鎖として描く
「不安だった」「嬉しかった」で感情を確定すると、出来事と選択の間が省略されます。各場面に次の順序を求めました。
出来事 → 主人公の解釈 → 身体反応・注意の変化 → 発言または選択
構成JSONにはemotional_stimulusとphysical_responseを追加します。本文では感情語だけで終えず、何に注意が向き、声や姿勢がどう変わり、その結果何を選んだかを連続させます。
6. 登録したPrompt
step04-3-narou-prose-outline/1
step04-3-narou-prose-scene/1
step04-3-narou-minimal-state/1
参考作品の固有名詞、設定、文章、比喩、特徴的な言い回しを再利用しない条件も明記しています。
7. 生成文字数
| 企画 | 文字数 | 場面文字数 |
|---|---|---|
| 悪役令嬢転生 | 5,456 | 1,366 / 1,433 / 1,427 / 1,224 |
| 異世界追放 | 5,609 | 1,153 / 1,437 / 1,360 / 1,653 |
| 異世界転生 | 4,394 | 1,049 / 1,011 / 1,211 / 1,117 |
| 平均 | 5,153 | - |
異世界転生だけが4,500文字を106文字下回りました。本文技法を増やした一方、各場面の最低文字数をコードで追補していないためです。
8. 評価結果
Evaluation run IDは35fdfa78b3d249069bcc772d315bc3b2です。
MLflowでSTEP4-3のEvaluation runを開く
| Quality | STEP4-2 Control | STEP4-3 |
|---|---|---|
characterization |
3.00 | 3.67 |
emotional_credibility |
2.67 | 3.00 |
reader_momentum |
3.33 | 3.67 |
opening_engagement |
3.00 | 3.67 |
episode_role_fulfillment |
3.00 | 3.33 |
scene_execution |
3.00 | 2.33 |
| Quality平均 | 3.042 | 3.250 |
人物造形、感情、次話への推進力、冒頭は改善しました。特に異世界追放と悪役令嬢は、人物造形、推進力、冒頭が4点です。本文レベルの技法は、構成項目だけを増やしたSTEP4-2より狙った品質へ作用しました。
一方、scene_executionは低下しました。異世界転生は能力要件もFailです。知覚、会話の含意、感情連鎖へ注意を割いた結果、場面の目的、具体的行動、結果が弱くなった可能性があります。
9. Requirementと採用判断
| Requirement | Control | STEP4-3 |
|---|---|---|
| 設定整合性 | 3/3 | 3/3 |
| 先取り抑制 | 3/3 | 3/3 |
| 能力要件 | 3/3 | 2/3 |
| 4,500文字以上 | 3/3 | 2/3 |
| 8,000文字以内 | 3/3 | 3/3 |
Quality平均は0.208改善しましたが、採用条件の+0.3へ届かず、Requirementにも回帰があります。そのためSTEP4-3 Candidateは採用しません。
ただし、過去の実験と異なり、狙った品質項目が実際に動きました。次の修正は技法を捨てることではありません。場面ごとに「目的・具体的行動・結果」を決定的に確認し、能力発現を担当する場面を構成で一つ指定し、短い場面だけを内容を変えず追補する必要があります。
10. なぜ人物品質と場面実行が逆方向へ動いたか
今回のPromptは、主人公が何を見るか、発言の裏に何を隠すか、感情がどう身体と選択へ現れるかを細かく指定しました。このため人物の反応には固有性が生まれましたが、一場面でモデルが管理する目的も増えています。
場面本文は1,150〜1,600文字という限られた範囲です。その中で知覚の具体化、過去との比較、含意のある会話、四段階の感情連鎖、選択と代償、未解決の結末をすべて描こうとすると、外的な問題へ働きかけ、その結果で状況が変わる部分が圧縮されます。これは文章量不足というより、場面内の注意配分の問題です。
異世界転生ではこの影響が最も強く、各場面が1,011〜1,211文字程度で終わりました。主人公の警戒や迷いは描かれても、能力を具体的に試し、結果を観察して理解する到達点が弱くなりました。そのためability_requirementとscene_executionが同時に落ちています。
一方、異世界追放と悪役令嬢では、第一話の到達点そのものが「料理で魔獣を救う」「断罪を知って決意する」という人物の選択と結び付きやすく、本文技法が場面進行を邪魔しませんでした。両企画で人物造形、冒頭、推進力が4点になったことからも、技法が無効なのではなく、企画の到達点と中心選択の整合性に左右されると考えられます。
これ以上Promptへ構造や修正規則を追加すると、本文技法と場面進行が競合します。人物の判断に必要な過去情報、世界設定、長期プロットを外部コンテキストとして検索し、必要な場面へだけ渡すRAGがない状態では、安定した改善が難しいと判断します。
STEP4-3では初回結果を最終結果とし、以後の場面担当版と局所補完版は採用しません。これらのEvaluation runは失敗記録としてMLflowに残します。
まとめ
STEP4-3では、参考作品を模倣せず、主人公固有の知覚、会話の含意、感情の連鎖、結果で閉じる場面末尾へ一般化しました。
Qualityは3.042から3.250へ改善し、人物造形は3.67、次話への推進力と冒頭は3.67になりました。本文レベルの技法は有効な方向です。
しかし、異世界転生が4,394文字となり、能力要件も落としました。場面実行も2.33へ低下しています。現時点では採用せず、成功した技法を維持しながら、場面の目的・行動・結果と能力発現を回復する次の比較へ進みます。
参考資料
出力された第一話
なんか似たり寄ったりの心理描写が延々と続き、臨場感が薄いが、
以前よりもマシにはなっている。っと思う。
佐藤は、自分が転生した異世界に初めて足を踏み入れた瞬間、耳にした金属の小さなぶつかる音に心を奪われた。目の前に広がっているのは、ひどく廃棄された道具だった。それは彼が知っているはずの、鍛冶屋で作られた精巧な品々。特に一つの剣の刃に軽い傷が見えた。それが廃れた様子と相まって、胸の奥に不思議な感情を呼び起こす。
周囲には、金属の休む音以外に、そこに広がる冒険者たちのざわめきも聞こえる。彼らの視線が自分に集まる中、手が震え、冷や汗がじんわりにじむのを感じた。「これを修理できるか試してみよう。」つい口に出した言葉の裏には、期待に応えたいが、同時に大きな不安が渦巻いていた。
「なんかあの人、やる気満々だね。」一人の冒険者が鼻で笑う。その音に心臓が高鳴った。失敗したら、また無能だと言われるのではないか。これまでの職場環境から、人の期待に応えることが全てだと教え込まれてきた彼にとって、成功のプレッシャーは重たかった。
でも、目の前にはこの厄介な道具がある。これを自分が修理できたら、きっと他者からも信頼されるだろう。彼は脚を一歩前に踏み出し、道具に手を触れた。そして、その瞬間、何も起こらないことに驚いた。まるで金属の塊そのものが、彼の手を否定しているかのように。
「壊れたままだった。」呟きながら、少し視線を外す。他の冒険者たちの笑い声が、胸の中に寒い風を送り込む。周囲の視線に押しつぶされそうになりながらも、彼は自分の能力に確信を持ちたいと思った。それを取り戻すには、再度触れるしかない。なぜなら、このまま諦めることは、自分の中の「何か」を失うことになるからだ。
再チャレンジしたい気持ちと、さらなる失敗が待っているかもしれないという恐れ、その狭間で揺れ動く。手が冷たい金属に再び触れ、力を込める。彼の中で何かがかすかに動き出した。しかし、期待と不安の間で、心が沈みかける。道具が反応するかどうか、何もわからないままだった。
彼の手は震え、全身に微細な緊張が走る。失敗した場合、周囲からの冷ややかな視線が待っている。この運命の瞬間、彼の目は既存の評価を取り戻そうと必死に道具を見つめた。反応があるのか、全てを賭けたこの選択が他者の信頼を得られるのか、今はわからなかった。鼓動が高まり、何かが起こるのを待ち望む彼は、道具の修理に心を取り戻そうと、再度触れる決意を固める。果たしてこの選択が、期待の光をもたらすのか、また新たな失望の影に包まれるのか、それを運命が示すのを待つばかりだった。
佐藤は、触れた金属の冷たさに思わず身体を震わせた。周囲の冒険者たちが見守る中、彼の手が道具に触れた瞬間、何の反応もなかった。金属の塊はただの硬い素材として、彼を無視するかのように感じられた。耳に聞こえるのは、冒険者たちのざわめきと、彼自身の心拍の音だけだった。
「壊れたままだった。」その言葉は軽く空中に漂うようだった。視線を外し、周囲を眺めると、笑い声が遠くから彼の耳に届く。自分の期待に反する現実が、どれほど彼の心を押し返すものか、改めて理解する。過去の職場での評価が、自らの居場所を決める基準だったその習慣が、今もなお彼の足を引っ張っていた。周囲の冒険者たちが示す軽蔑の視線が心に突き刺さる。
冷たい金属に再び手を触れ、彼は深呼吸をした。一息つくことで、緊張を少しでも和らげる試みだった。「これが、自分の能力なのか…?」と心の隅で疑問が渦巻く。出来るはずだ、と思いたいが、もし失敗すれば再び周囲に笑われることになる。「このままでは諦めるわけにはいかない」と自分に言い聞かせ、再度道具の表面に触れることを決意する。
しかし、その決断には恐れが伴う。再び触れた手が震え、硬さが手の内に伝わる。果たして、道具に何が待っているのか?多くの期待が彼に寄せられている中で、彼は手を引っ込めるべきか悩む。この選択が成功するものであれば、彼は周囲の信頼を得られるかもしれない。しかし、万が一うまくいかなければ、自らの価値を疑われることになるだろう。
彼の心を締め付ける視線の中、行動に移る決意が固まった。微細な傷やカットに目を向け、暗い中で感じる可能性に希望を抱く。「少しだけ試してみる。」小さな声で呟くが、本当の思いはそこにはなかった。彼は周囲の期待に応えなくてはならないとの重圧を感じ、その言葉を発することさえも恐るべき挑戦であると気づく。顔を上げ、周囲の冒険者たちの気配を感じながら、彼は自分の能力が正しく発揮されることを願った。
彼の手が冷凍された金属に再び触れる。周囲の視線と執拗な期待が、彼の選択を見守っている。道具が反応するかどうかは不明だが、彼は道具に生命を吹き込む可能性を掴むため、再挑戦の決意を固めた。自らの力を試し、成長するための第一歩を踏み出す覚悟を持って。果たしてこの瞬間、彼が掴むものは何なのか。心臓の鼓動が高鳴り、自身の運命を再び信じようとする佐藤の心の奥には、期待と不安がせめぎ合っていた。
佐藤は冷たい金属の感触に驚き、体が少し震えた。手のひらが触れる道具は、ただの金属の塊に過ぎないのだと実感する。周囲の冒険者たちの視線が自分に注がれていることを感じ、心拍数が急に上がる。彼はこの状況を耐えられないほどの重荷として捉え、一瞬目を閉じて息を整えた。
「当然、こんな道具、壊れてるに決まってるだろ。」それは、自分に言い聞かせるための口に出た言葉だった。自分の期待と不安がせめぎ合う。過去の職場で、そんな状況に遭遇しても、冷静でいることが評価される局面が多かった。しかし、今はその評価基準が通じない。何も生み出さない冷たい金属の感触が、彼の自己嫌悪を深める。
視線を感じながら、再び目を開けると、周囲の冒険者たちは遠巻きにストーブの前で待機しているようだった。不器用な自分を隠そうとする間に、耳に届く笑い声がどこかで遠く響いている。「何かできるはずだ」と自分に言い聞かせるも、心の中にはダメージを受けた自信が静かに広がっていく。
再度道具に手を伸ばす。金属に触れ、その固さが冷たくもあることを感じながら、彼は手のひらに力を込めた。かつての職場では、予想以上の評価を得ることが自分の成功だった。この異世界でも何かを成し遂げたい。その思いとは裏腹に、「自分は本当にできるのだろうか?」と疑念が裂けるように浮かぶ。
手が震え、冷や汗が背中を流れる。彼の心の奥では、さまざまな期待と裏腹の失望が広がっていた。人々の期待と自分のプレッシャーが交差する中、彼は思わず手を引っ込めたくなる欲望に駆られる。
「少しだけ試してみる。」小さな声で呟くが、その言葉が本当に彼の本音である提示しているとも思えなかった。まるで他者に対する見栄を張るかのように振る舞う。深い吸息をし、恐れ戦く自分の心をなだめる。「もし、これがうまくいかなかったらどうなってしまうんだ…」その不安が背後に隠れた真の思いを捉え、彼の一歩をためらわせる。
緊張感が彼の身体を包み込む。なぜ今、選択を迫られているのか。過去の自分のように逃げ出すのか、それとも新たな一歩を踏み出すのか。これこそが決断の時であり、状況を打破するための挑戦だと心に刻む。「これが自分なのか、それとも無力なのか。」その葛藤は、彼の手を進めさせる原動力となった。
金属の感触が彼の手の中で、何かを呼び起こす。周囲の視線がひしめく中、彼は特定の修理道具を選び、再度道具に触れる決意を固めた。心臓が高鳴り、自分の能力を試すためのチャレンジが待っている。「どうか、これが成功するものでありますように。」
佐藤は、手を動かしながら、触れた金属の一部がわずかに光るのを見た。心臓が高鳴る。その瞬間、彼の内に確かな感覚が芽生えた。何かが彼の中で反応し、道具が生き返る気配を感じさせたからだ。彼は、触れた部分が冷たさを和らげるように感じ始め、その金属がほんの少し柔らかくなり、力を込めるごとに細かな亀裂が埋まっていくような目に見えない変化を観察していた。その兆しが彼の心に希望の光を灯し、次第に確信へと変わりつつあった。「これだ、これが自分の能力かもしれない…!」手のひらに込めた力はただの願いを超え、彼が何かを変える力を持っていることを示唆していた。佐藤の目が輝く。もしかしたら、彼にできるかもしれないと、彼は期待を新たに抱くのだった。成功への期待と、不安がせめぎ合う中、彼の手は道具の冷たさに再び触れられた。
そうして彼は、自分の運命を信じる第一歩を踏み出す。果たして、自分が所持しているはずの能力が、道具に実を結ぶ瞬間がやってくるのかどうかは、定かでなかった。期待と恐れが交錯する中、佐藤はその瞬間を見つめていた。
金属と土の混ざった冷たい感触が、佐藤の手のひらにじんわりと伝わる。触れた瞬間、その道具がただの金属の塊であることを彼は理解した。周囲の冒険者たちの視線が自分に集まるのを感じ、心はざわめき、鼓動が速くなった。まるで狙われているかのように、背中が冷たくなる。
そんな状況が耐えられないと彼は思った。「何かできるはずだ」と自分に言い聞かせるも、心の奥には不安が静かに広がり、自己嫌悪がじわりと押し寄せてきた。彼はブラック企業での経験を思い返し、「何も生み出さない」自分が評価されるはずがないとはっきり感じていた。この異世界で自分の可能性を証明できなければ、再び失敗するのではないかという恐怖に苛まれる。
手を引っ込めたくなる欲望と闘いながら、再度道具に手を伸ばす。手のひらに力を込め、何とか期待を抱こうとする。「これを修理できたら、周囲に認められるかもしれない」と、彼はその思いを強めるが、「本当にできるのだろうか」と心に疑念が漂う。
佐藤は金属の冷たさを再び感じる。その感触は、過去の職場で、冷静さが求められる状況によって緊張感を高められた経験に似ていた。周囲の視線が自分に向けられているのを感じながら、彼は再度思考を整理した。「もしこれがうまくいかなかったら、どうなるのか…」その不安が再び思考を捉え、足を引き留める。
「少しだけ試してみる。」ともすれば口から出そうな声が、今や呟きに変わった。無理に明るく振舞う気持ちの裏側には、自己肯定感を高めようとする焦りが隠れている。深い呼吸をして、自分を落ち着かせようとしたが、心臓が高鳴るばかりで緊張が収まらなかった。
