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
150
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
東京で唐揚げを食べたら北海道の地理にたどり着いた件
tanahiro2010
0
12
Googleが発表した新Web標準ドラフト――WebMCP。実際どうなの? IO Extendedで実装・登壇して分かったこと
tanahiro2010
0
80
PHPの命名規則、結局camelCaseとsnake_caseどっちなんだ
tanahiro2010
0
25
Q. 底辺作家でも流行に乗れば舞えますか? A. はい。分析ランキング分析AIを使えば
tanahiro2010
1
63
OSSコミュニティがくれた「人との繋がり」
tanahiro2010
2
440
Serverlessしかなかったので、ブラウザに働いてもらいました
tanahiro2010
1
67
React Hooksを使いこなせ! ――初心者でも簡単。ポートフォリオ開発で実践するReact講座.pdf
tanahiro2010
0
21
SQLインジェクション ――攻撃の仕組みから対策まで
tanahiro2010
0
54
初心者でも簡単理解。Github講座
tanahiro2010
0
30
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
220
Mobile First: as difficult as doing things right
swwweet
225
10k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
700
Product Roadmaps are Hard
iamctodd
55
13k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
490
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
64k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
500
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