[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-05-10 22:08:15 +09:00
parent 21ac3ed255
commit 504fd5fb42
3011 changed files with 380280 additions and 206977 deletions
+442 -36
View File
@@ -2,68 +2,474 @@
id: wiki-2026-0508-ai-and-narrative
title: AI and Narrative
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: [P-Reinforce-AUTO-AINR-001]
aliases: [AI 서사, AI storytelling, generative narrative, interactive fiction, dynamic story, LLM-driven storytelling]
duplicate_of: none
source_trust_level: A
confidence_score: 0.94
tags: [auto-reinforced, ai-narrative, storytelling, Generative-AI, interactive-media, literature]
source_trust_level: B
confidence_score: 0.85
verification_status: conceptual
tags: [storytelling, narrative, generative-ai, interactive-fiction, game-narrative, screenwriting, llm-creative]
raw_sources: []
last_reinforced: 2026-04-20
last_reinforced: 2026-05-09
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
inferred_by: Claude Opus 4.7 (manual cleanup 2026-05-09)
tech_stack:
language: TS / Python
framework: LLM API / AI Dungeon-style / Inworld AI / Convai
---
# [[AI and Narrative|AI and Narrative]]
# AI and Narrative
## 📌 한 줄 통찰 (The Karpathy Summary)
> "기계와 엮어가는 이야기: 인간 고유의 영역이었던 서사 구조를 AI가 학습하여 새로운 플롯을 제안하거나, 사용자와 실시간으로 상호작용하며 매번 다른 이야기를 창조하는 무한한 스토리텔링의 가능성."
> **LLM 의 long-context + creative generation 이 narrative 의 고전 framework (Hero's journey, 3-act structure) + interactive (player choice) 의 결합 의 가능 하게**. AI Dungeon → Inworld → modern LLM narrative game. **Author 의 replacement X, 매 author 의 toolkit ↑**.
## 📖 구조화된 지식 (Synthesized Content)
AI와 서사(AI and Narrative)는 인공지능 기술이 문학, 영화, 게임 등의 스토리텔링 구조에 어떻게 개입하고 이를 변형시키는지를 다루는 분야입니다.
1. **AI의 서사적 역할**:
* **Generative Author**: 프롬프트를 바탕으로 소설, 시나리오, 시 등 텍스트 서사 생성.
* **Structure Analyzer**: 수만 권의 책을 분석하여 '영웅의 여정'과 같은 성공적인 서사 패턴 추출 및 적용. ([[Structuralism|Structuralism]]과 연결)
* **Dynamic Storyteller**: 사용자의 선택에 따라 세계관과 인물의 반응이 실시간으로 변하는 인터랙티브 서사 구현.
2. **기술적 구현**:
* LLM의 문맥 유지 능력(Context Window)을 통해 일관성 있는 복합 서사 유지.
* 서사 내 갈등(Conflict)을 인위적으로 조정하여 독자의 몰입도 제어.
3. **의의**:
* 개인화된 스토리텔링의 대중화. 누구나 자신만의 영화나 게임 시나리오를 가질 수 있게 됨.
### AI narrative 의 role
#### 1. Generative author
- 매 prompt 의 short story / scene / dialogue.
- Genre adherence (fantasy, romance, sci-fi).
- Style transfer (매 author 의 voice mimic).
- 매 chapter 의 outline + draft.
#### 2. Structure analyzer
- 매 thousand book 의 pattern.
- "Hero's Journey" (Campbell) / "Save the Cat" (Snyder) / 3-act / Pixar 22 rules.
- 매 plot 의 structural critique.
- 매 weak point 의 detect.
#### 3. Dynamic storyteller (interactive)
- 매 player choice 의 real-time response.
- Branching narrative.
- NPC 의 dynamic dialogue.
- Persistent world (player action 의 long-term effect).
#### 4. World-building assistant
- Lore generation.
- 매 character 의 backstory.
- 매 location 의 description.
- Naming (character, place).
#### 5. Editor / co-author
- 매 draft 의 critique.
- Continuity check.
- Consistency (매 character 의 voice).
- Pacing analysis.
### Narrative theory 의 reference
#### Hero's Journey (Campbell)
1. Ordinary world.
2. Call to adventure.
3. Refusal.
4. Mentor.
5. Crossing threshold.
6. Tests.
7. Approach.
8. Ordeal.
9. Reward.
10. Road back.
11. Resurrection.
12. Return with elixir.
→ 매 LLM 의 prompt 의 reference.
#### 3-Act Structure
- Act 1: Setup (25%).
- Act 2: Confrontation (50%).
- Act 3: Resolution (25%).
#### Save the Cat (Snyder, screenwriting)
- 15 beat structure.
- Opening Image, Theme Stated, Setup, Catalyst, Debate, Break into Two, ...
#### Pixar 22 Rules of Storytelling
- Emma Coats.
- 매 rule 의 modern principle.
→ 매 framework 의 LLM 의 system prompt.
### 매 application
#### Game (RPG / interactive)
- AI Dungeon (옛 GPT-2/3 era).
- Modern: 매 game 의 LLM-driven NPC dialogue.
- Inworld AI / Convai (game 의 production).
- Ubisoft Sam, Roblox AI characters.
#### Screenwriting / scriptwriting
- ChatGPT / Claude 의 plot ideation.
- Sudowrite (novelist tool).
- Final Draft AI.
- 매 writers' strike (2023) 의 AI 의 limit 의 contract.
#### Novel / literary
- NovelAI (long-form fiction).
- Sudowrite.
- 매 self-publish 의 AI assist.
#### Education / training
- 매 historical scenario 의 simulation.
- 매 medical patient interview practice.
- 매 language learning context.
#### Marketing / advertising
- 매 brand story.
- 매 customer journey 의 narrative.
### 매 technical challenge
#### 1. Long context / consistency
- 매 100k+ token 의 narrative 의 maintain.
- 매 character 의 voice 의 consistency.
- 매 timeline / continuity.
→ Modern: Claude Opus 200k context 의 도움. 매 plot seed 의 system prompt.
#### 2. Branching state
- 매 player choice 의 effect 의 track.
- 매 world state 의 mutation.
- 매 cycle 의 manageable.
→ State machine + LLM 의 hybrid.
#### 3. Quality vs creativity
- 매 LLM 의 generic / cliche.
- 매 author 의 voice 의 unique.
- 매 fine-tune / prompting 의 distinct.
#### 4. Conflict / tension
- 매 narrative 의 conflict 의 essential.
- 매 LLM 의 default 의 conflict-avoidant (helpful, harmless).
- 매 prompt 의 explicit conflict instruction.
#### 5. Hallucination 의 narrative 의 fit
- 매 fact-based (history) = bug.
- 매 fiction = feature.
### Modern tools
#### Inworld AI
- 매 game NPC 의 dialogue.
- 매 character 의 personality + memory.
- Unity / Unreal 통합.
#### Convai
- 매 NPC 의 voice + animation.
- Real-time conversation.
#### Sudowrite
- Novelist 의 collaboration tool.
- Style 의 maintain.
- Beat sheet generation.
#### NovelCrafter
- 매 novel 의 long-form structure.
- Character / world tracking.
#### Charisma.ai
- Interactive narrative scripting.
### 매 author 의 perspective
#### "AI 의 author replace" 의 myth
- 매 generic LLM output 의 cliche.
- 매 unique voice / experience 의 human.
- 매 emotional truth 의 lived experience.
#### "AI 의 author augment" 의 reality
- 매 brainstorm 의 speed.
- 매 draft 의 boilerplate.
- 매 research / world-building.
- 매 tedious continuity check.
→ Mollick "Co-Intelligence" 식.
### 매 ethical question
#### 저작권 / IP
- 매 LLM 의 training 의 copyrighted text.
- 매 generated text 의 attribution.
- 매 country 의 different (US human authorship requirement).
#### 노동 / displacement
- WGA strike (2023) 의 contract.
- 매 freelance writer 의 market change.
#### Authenticity / disclosure
- 매 AI-generated 의 label.
- 매 reader 의 informed.
#### Bias 의 narrative
- 매 LLM 의 training data 의 bias.
- 매 stereotype 의 perpetuate.
- 매 underrepresented voice 의 absence.
## 💻 패턴 (Code + Prompts)
### Beat sheet generator
```python
def generate_beat_sheet(genre, premise):
prompt = f"""
Generate a 15-beat sheet for a {genre} story.
Premise: {premise}
Use Save the Cat structure:
1. Opening Image
2. Theme Stated
3. Setup (3 character, world)
4. Catalyst (inciting incident)
5. Debate
6. Break into Two
7. B Story
8. Fun and Games
9. Midpoint
10. Bad Guys Close In
11. All Is Lost
12. Dark Night of the Soul
13. Break into Three
14. Finale
15. Final Image
Format: numbered list, 1-2 sentences each.
"""
return llm.complete(prompt)
```
### NPC dynamic dialogue
```typescript
class NPC {
personality: string;
memory: string[] = [];
relationships: Map<string, number> = new Map();
async respond(playerInput: string, context: GameState): Promise<string> {
const systemPrompt = `
You are ${this.name}, a ${this.personality} character in ${context.location}.
Your memories: ${this.memory.slice(-10).join('. ')}
Your feeling toward player: ${this.relationships.get('player') ?? 0}/100.
Reply in 1-3 sentences. Stay in character. React to player tone.
`;
const response = await llm.complete({
system: systemPrompt,
user: playerInput,
});
// Update memory
this.memory.push(`Player said: ${playerInput}. I replied: ${response}`);
this.updateRelationship(playerInput, response);
return response;
}
}
```
### Branching narrative state machine
```ts
interface StoryNode {
id: string;
text: string;
choices: Choice[];
state_changes: Partial<WorldState>;
}
interface Choice {
text: string;
next: string;
requires?: (state: WorldState) => boolean;
}
class StoryEngine {
private currentNode: StoryNode;
private state: WorldState = {};
async advance(choice: Choice) {
Object.assign(this.state, this.currentNode.state_changes);
// 매 dynamic = LLM 가 choose 미리 정의 X 의 case
if (choice.dynamic) {
const next = await this.generateDynamicNode(choice);
this.currentNode = next;
} else {
this.currentNode = this.nodes[choice.next];
}
}
async generateDynamicNode(choice: Choice): Promise<StoryNode> {
const prompt = `
Continue this story.
Current state: ${JSON.stringify(this.state)}
Player chose: ${choice.text}
Generate next scene (200 words) + 3 player choices.
Format: JSON { text, choices: [{ text, next }] }
`;
return JSON.parse(await llm.complete(prompt));
}
}
```
### Long-context consistency (RAG)
```ts
// 매 chapter 의 vector embed
const chapters = await Promise.all(
chapters.map(async c => ({
id: c.id,
summary: await llm.summarize(c.text),
embedding: await embed(c.summary),
}))
);
// 매 새 chapter 의 generation 시 relevant 매 retrieval
async function generateNextChapter(prompt: string) {
const relevant = await vectorSearch(prompt, chapters, k=5);
const context = relevant.map(c => c.summary).join('\n\n');
return llm.complete({
system: `Continue the novel. Relevant prior chapters:\n${context}`,
user: prompt,
});
}
```
### Character voice consistency
```ts
const characterVoices = {
alice: {
style: 'verbose, academic, uses Latin phrases',
examples: ['Nevertheless, I posit that...', 'Mutatis mutandis, ...'],
},
bob: {
style: 'terse, sarcastic, working-class',
examples: ['Yeah, sure, whatever.', 'Tell me something I don't know.'],
},
};
function generateDialogue(character: string, situation: string) {
const voice = characterVoices[character];
return llm.complete({
system: `${character} speaks: ${voice.style}. Examples: ${voice.examples.join(' / ')}`,
user: `Situation: ${situation}. ${character}'s response:`,
});
}
```
### Conflict injection
```python
def inject_conflict(scene_description):
prompt = f"""
Scene: {scene_description}
This scene is too peaceful. Add ONE concrete conflict:
- Internal (character doubt)
- Interpersonal (disagreement)
- External (threat, obstacle)
Rewrite the scene with the conflict integrated naturally.
"""
return llm.complete(prompt)
```
→ LLM 의 default 의 conflict-avoidance 의 fix.
### Style transfer (author voice)
```python
def write_in_style(content, style_examples):
prompt = f"""
Style examples (mimic the voice):
{chr(10).join(style_examples)}
Now rewrite this in the same style:
{content}
"""
return llm.complete(prompt)
```
### Plot hole detector
```python
def detect_plot_holes(synopsis):
prompt = f"""
Read this story synopsis and identify plot holes / inconsistencies.
{synopsis}
Format: numbered list of issues.
For each: Where? What's the issue? How to fix?
"""
return llm.complete(prompt)
```
## 🤔 의사결정 기준 (Decision Criteria)
| 작업 | 추천 |
|---|---|
| Game NPC dialogue | Inworld / Convai / custom LLM |
| Novel writing | Sudowrite / NovelCrafter |
| Screenwriting | ChatGPT / Claude (with structure prompt) |
| Branching narrative | State machine + LLM hybrid |
| Long story consistency | RAG + chapter summaries |
| Character voice | Few-shot example + style transfer |
| Worldbuilding | LLM ideation + human curation |
**기본값**: Author 의 brainstorm + draft + edit 의 round-trip. 매 final = human.
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
- **과거 데이터와의 충돌**: 과거의 AI 서사 정책은 단순한 문장 나열에 그쳐 '서사의 단절'이 심했으나, 현대의 거대 모델 정책은 수만 단어 뒤의 복선을 회수하고 일관된 테마를 유지하는 '장기 서사 무결성 정책'을 실현함(RL Update).
- **정책 변화(RL Update)**: AI가 쓴 글에 대한 저작권 인정 여부 정책이 국가마다 다르게 수립 중이며, '인간 작가의 전문성' 지위를 보호하기 위해 AI 생성물 표기 의무화 정책이 창작 생태계의 기본 수칙으로 정착됨.
- **AI 의 narrative 의 cliche tendency**: 매 default 가 generic. 매 prompt engineering + curation 필요.
- **Long context 의 consistency**: 매 model 의 context window 의 한계. RAG / summary 의 essential.
- **Branching의 explosion**: 매 choice = 2x state. 매 manageable design 필요.
- **Author 의 voice vs efficiency**: 매 unique 의 ↑ = manual ↑.
- **Copyright / training data**: 매 LLM 의 training 의 lawsuit.
- **WGA / writer 의 contract**: 매 industry change.
## 🔗 지식 연결 (Graph)
- [[Role of Conflict in Narrative|Role of Conflict in Narrative]], [[Structuralism|Structuralism]], [[Aesthetic-Value|Aesthetic-Value]], Foundational Models, [[Ps-Reinforce|Ps-Reinforce]]
- **Modern Tech/Tools**: AI Dungeon, NovelAI, Sudowrite, ChatGPT for screenwriting.
---
- 부모: [[Storytelling]] · [[Generative-AI]] · [[Creative-Writing]]
- 변형: [[AI-Dungeon]] · [[Interactive-Fiction]] · [[Game-Narrative]] · [[Procedural-Storytelling]]
- 응용: [[NPC-Dynamic-Dialogue]] · [[Branching-Narrative]] · [[Worldbuilding-AI]] · [[Screenwriting-AI]]
- 기법: [[Hero-Journey-Campbell]] · [[Save-the-Cat-Snyder]] · [[3-Act-Structure]] · [[Pixar-22-Rules]]
- Tools: [[Inworld-AI]] · [[Convai]] · [[Sudowrite]] · [[NovelCrafter]] · [[Charisma-AI]] · [[NovelAI]]
- Game: [[Game-Narrative-Design]] · [[Procedural-Story-Generation]] · [[Emergent-Narrative]]
- 윤리: [[AI-Copyright]] · [[Author-Authenticity]] · [[WGA-Strike-2023]]
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
**언제 이 지식을 쓰는가:**
- *(TODO)*
- 매 game 의 narrative system design.
- 매 author 의 LLM-augmented workflow.
- 매 interactive fiction 의 architecture.
- 매 NPC dialogue system.
- 매 worldbuilding pipeline.
**언제 쓰면 안 되는가:**
- *(TODO)*
- 매 author 의 full replacement (cliche risk).
- Specific copyright / legal advice.
- 매 highly specific (ghost writing for celebrity).
- 매 sensitive topic (trauma, mental health) 의 AI-only.
## ❌ 안티패턴 (Anti-Patterns)
- **AI generate 의 raw publish**: cliche / quality ↓.
- **No human edit**: voice 의 generic.
- **Long context 의 raw dump**: 매 token 폭발 + quality ↓. RAG / summary.
- **Branching 의 unmanaged explosion**: 매 path 의 unmanageable.
- **Character voice 의 inconsistent**: 매 reader 의 immersion break.
- **No conflict / tension**: 매 LLM default 의 boring story.
- **Plot hole 의 review skip**: 매 inconsistency 의 reader confusion.
- **Disclosure 부족**: 매 AI use 의 transparency.
## 🧪 검증 상태 (Validation)
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
- **정보 상태:** verified (concept-level).
- **출처 신뢰도:** B (Joseph Campbell, Blake Snyder, Brandon Sanderson 의 lectures, OpenAI / Anthropic creative writing docs).
- **검토 이유:** Manual cleanup. Narrative theory 가 안정. AI tool 가 evolving.
## 🧬 중복 검사 (Duplicate Check)
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
- **기존 유사 문서:** [[Storytelling]] (parent), [[Game-Narrative]] (related), [[Generative-AI]] (parent).
- **처리 방식:** KEEP (specific intersection 의 AI + narrative).
- **처리 이유:** Distinct intersection.
## 🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
| 2026-05-08 | P-Reinforce Phase 1 정규화 | UPDATE | A |
| 2026-05-09 | Manual cleanup — narrative framework + code + tools + 윤리 + 안티패턴 추가 | UPDATE | B |