Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LLM AgentでTRPGを動かしたら、Agentの地獄を(多分)全部見た
Search
tanahiro2010
May 31, 2026
71
0
Share
LLM AgentでTRPGを動かしたら、Agentの地獄を(多分)全部見た
GDGoC Osakaで登壇しました
https://www.youtube.com/watch?v=d8-dpm3HvQE
tanahiro2010
May 31, 2026
More Decks by tanahiro2010
See All by tanahiro2010
だから僕はMarpを使う ――Bokuchiのすゝめ
tanahiro2010
0
5
私にとって便利なもの。個人開発LT
tanahiro2010
2
160
仕様交渉で信頼を積む方法、あるいは積んでしまった話
tanahiro2010
0
9
残念、8割は画像でした
tanahiro2010
0
14
ゴミ捨てLINE通知SaaSを作ろうとしたら気づいたらCron SaaS作ってた話
tanahiro2010
1
44
Ban。〜管理者権限という名の精神安定剤について〜
tanahiro2010
1
26
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
270
How to Ace a Technical Interview
jacobian
281
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
Music & Morning Musume
bryan
47
7.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
So, you think you're a good person
axbom
PRO
2
2k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
710
Transcript
LLM AgentでTRPGを動かしたら、 Agentの地獄を(多分)全部見た GDGoC Osaka — LLM Agent Build with
AI 田中博悠 / 2026 1
自己紹介 田中博悠 / tanahiro2010 三田学園高等学校 1年生 兵庫の辺境に住んでる TypeScript / Python
/ Rubyをメインに開発 興味が赴くがままに他の言語フレームワークも使用中 2
突然ですが質問です 「趣味と技術、合体させたくなったことありますか?」 3
なぜこれを作ったか LTネタを探す → TRPGが好き × LLM Agent触りたい → 合体させよう() 気づいたら一から実装していました
4
作ろうとしたもの 複数のLLM AgentがTRPGを自律進行するシステム GM Agent : シナリオを読んで描写・進行 PL Agent :
キャラクターとして行動宣言 Rule Engine: ダイス判定・状態管理(TypeScript) 設計思想: 「AI = 演技」 「TypeScript = 世界」 LLMには喋らせるだけ、ロジックは絶対コードで持つ(謎のこだわり) 5
システム構成 ┌─────────────────────────────────────┐ │ TypeScript Engine │ │ ターン管理 / 状態
/ ダイス / ログ │ └────────────┬────────────┬────────────┘ │ │ ┌─────▼─────┐ ┌───▼──────┐ │ GM Agent │ │ PL Agent │ │ (Cohere) │ │ (Cohere) │ └────────────┘ └──────────┘ PLは [action]...[/action] タグで構造化出力 → zodでバリデーション 6
実際に動かしたら シナリオ(1ページ目) : 「あなたがいつも通りの日常を送っていると、唐突に目の前にどこ◦もドアっぽい物 が現れる」 → 入る? 入らない? 7
実際に動かしたら GMの出力: 「夜の街を歩く探索者たちの前に、突然、どこか異次元を思わせる扉が現れた。その 扉は、無機質な白と黒の幾何学模様が織りなす不思議な光景を映し出している。 」 夜の街、どこから来た? 探索者たち(複数) 、誰? 8
4ターン後の状態 項目 期待 実際 フェーズ 分岐・戦闘へ dialog のまま ダイス 複数回
0回 アクション skill_check / move speak のみ シナリオ進行 3〜4ページへ 1ページから動かず PLが4ターン連続で少女に話しかけ続けた 9
何がなぜ壊れたか ① GMがシナリオを「文脈」として使った テキストで渡すと、LLMは雰囲気だけ吸って創作する 分岐を「制御すべき構造」とは認識しない ② PLがspeakしか選ばない 「キャラクターらしく行動せよ」だけでは 安全策として会話を選び続ける ③
Scenario Parserが未実装 現在のページ・選択肢・次ページをエンジンが把握できていない 10
学んだこと LLMに構造を守らせたいなら、構造化した入力を渡せ テキスト渡し → LLMは文脈として解釈 → 脱線 構造体渡し → LLMは制約として認識
→ 制御できる { "currentPage": 2, "choices": ["入る → 3ページ", "入らない → 4ページ"], "instruction": "必ずどちらかの選択肢に誘導すること" } 「AIに任せる部分」と「コードで縛る部分」の境界設計が全て 11
まとめ・今後 動いたこと Agent間の会話ループ 構造化出力 + zodバリデーション セッションログ(JSONL) これからやること Scenario Parser実装
ページ状態をエンジンで管理 複数PL対応 Gemini混在構成 リポジトリ: github.com/tanahiro2010/ai_agent_trpg 12
ご清聴ありがとうございました 「AI = 演技、TypeScript = 世界」 …のはずだった 失敗ログも全部コミット済みです() github.com/tanahiro2010/ai_agent_trpg 13