はじめに
ユーモア生成をやろうとすると、多くの場合こうなります:
- ルールベース → 固くなる
- LLM単体 → 面白さが不安定
そこで有効なのが、
ABCモデル(構造) × LLM(表現)
という分離アプローチです。
本記事では:
- ABCモデルで「面白さの構造」を作る
- LLMで自然な文章にする
- Pythonでの実装方法
- そのまま使えるプロンプト集
までまとめます。
1. 全体像(結論)
まず最初に完成形です:
入力(状況)
↓
ABCモデルで構造化
↓
ズレを抽出(A/B/C)
↓
意味に変換(言語化)
↓
LLMで自然文生成
ポイントはこれ:
❌ LLMに全部やらせない
⭕ 構造と表現を分離する
2. ABCモデルとユーモア
ABCモデルは以下の3軸:
| 軸 | 意味 | ユーモアでの役割 |
|---|---|---|
| A | 本音・生 | 人間くささ |
| B | 理想・評価 | 「こうあるべき」 |
| C | 俯瞰・メタ | ツッコミ |
このときユーモアは:
A・B・Cのズレから生まれる
例
A: 眠い
B: 頑張るべき
C: いや寝ろよ
👉 この三層構造が「面白さ」
3. 数式の役割(重要)
ABCモデルの数式は:
- 状態(v, Δ, State)を更新
- 外部要因(EF)を重ねる
- 状態遷移(TR)を起こす
つまり:
❌ 面白い文章を作る
⭕ 面白くなる「ズレ」を作る
4. 実装アーキテクチャ(Python)
3層に分けるのがコツです。
4.1 力学層(ABC計算)
def summarize_abc(model):
A = "やる気が弱い" if model.A.v < 1 else "やる気はある"
B = "ちゃんとすべき気持ちが強い" if model.B.v > 1.5 else "多少気にしている"
C = "その状況を俯瞰している" if model.C.v > 1 else "あまり気づいていない"
return A, B, C
4.2 ズレ抽出
def extract_twist(A, B, C):
return "理想と現実がズレている"
4.3 LLM接続
def build_prompt(A, B, C, twist):
return f"""
あなたは自然なユーモア文章を書くアシスタントです。
- 本音:{A}
- 理想:{B}
- メタ:{C}
- ズレ:{twist}
1〜2文でユーモアにしてください。
"""
5. 出力例
入力:
{
"A": "眠くて動けない",
"B": "ちゃんとやるべき",
"C": "その矛盾に気づいている",
"twist": "理想だけが先行している"
}
出力:
頑張る気持ちはあるのに、身体だけが先に退勤しています。
6. 精度を上げる3つのコツ
① C(メタ)を必ず入れる
→ ユーモアの核
② ズレを明文化する
→ LLMが理解しやすくなる
③ 抽象度を揃える
→ 崩れない文章になる
7. 応用:スタイル制御
プロンプトに追加:
- 自虐寄り
- 優しいトーン
- 皮肉気味
- ビジネス風
👉 同じ構造でも別のユーモアになる
8. まとめ
最も重要な一文:
ABCで構造を作り、LLMで表現する
これだけで、
- 安定性
- 自然さ
- 再現性
が一気に上がります。
9. 巻末:そのまま使えるプロンプト集
コピペOKです。
① 基本ユーモア
あなたは自然なユーモア文章を書くアシスタントです。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
1〜2文で、軽いユーモアにしてください。
説明は禁止。
② 自虐ユーモア
あなたは自虐的なユーモアを書くプロです。
以下をもとに、少しだけ自分を笑う一文を書いてください。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
ネガティブすぎず、軽く笑えるトーンで。
③ 皮肉ユーモア
あなたは少し皮肉の効いたユーモアを書く人です。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
少しだけ知的な皮肉を入れて、短く書いてください。
④ 優しいユーモア
あなたは優しくて安心感のあるユーモアを書く人です。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
読み手が安心するような柔らかい表現にしてください。
⑤ ビジネス風ユーモア
あなたはビジネス文脈で軽いユーモアを書く人です。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
フォーマル寄りで、少しだけ笑える表現にしてください。
⑥ 一言オチ型
以下をもとに「一言でオチ」を作ってください。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
15〜25文字で。
⑦ 共感系ユーモア
あなたは「あるある」系ユーモアを書く人です。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
多くの人が共感できる形にしてください。
⑧ メタ強めユーモア
あなたはメタ視点のユーモアを書く人です。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
状況を一段上から観察する形で書いてください。
⑨ 状態説明風ユーモア
以下の状態を「それっぽい説明風」でユーモアにしてください。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
専門用語っぽくしてOKです。
⑩ 疲労・やる気系特化
あなたは「疲れている人のユーモア」を書く人です。
- 本音:{{A}}
- 理想:{{B}}
- メタ:{{C}}
- ズレ:{{twist}}
無理せず、少しだけ笑える表現にしてください。