m97j's picture
Initial commit
5fc69e4
raw
history blame
1.99 kB
from pydantic import BaseModel, Field
from typing import List, Dict, Optional, Any
class NPCConfig(BaseModel):
id: Optional[str] = Field(None, description="NPC 고유 ID (섀계 κΈ°μ€€)")
name: Optional[str] = Field(None, description="NPC ν‘œμ‹œ 이름")
persona_name: Optional[str] = Field(None, description="NPC 페λ₯΄μ†Œλ‚˜ 이름")
dialogue_style: Optional[str] = Field(None, description="λŒ€ν™” μŠ€νƒ€μΌ")
relationship: Optional[float] = Field(None, description="κΈ°λ³Έ 관계 수치 (-1.0~1.0)")
npc_mood: Optional[str] = Field(None, description="κΈ°λ³Έ 감정 μƒνƒœ")
trigger_values: Optional[Dict[str, List[str]]] = Field(None, description="트리거 κ°’ λͺ©λ‘")
trigger_definitions: Optional[Dict[str, Dict[str, Any]]] = Field(None, description="트리거 μ •μ˜")
class DialogueTurn(BaseModel):
player: str
npc: str
class Context(BaseModel):
require: Optional[Dict[str, Any]] = Field(default_factory=dict, description="pre 1μ°¨ 쑰건 νŒλ‹¨μš© ν•„μˆ˜/선택 μš”μ†Œ")
player_state: Optional[Dict[str, Any]] = Field(default_factory=dict, description="ν”Œλ ˆμ΄μ–΄ ν˜„μž¬ μƒνƒœ")
game_state: Optional[Dict[str, Any]] = Field(default_factory=dict, description="κ²Œμž„ μ „μ—­ μƒνƒœ")
npc_state: Optional[Dict[str, Any]] = Field(default_factory=dict, description="DB μ΅œμ‹  NPC μƒνƒœ")
npc_config: Optional[NPCConfig] = Field(None, description="RAG 기반 섀계 정보")
dialogue_history: Optional[List[DialogueTurn]] = Field(default_factory=list, description="졜근 λŒ€ν™” νžˆμŠ€ν† λ¦¬")
class AskRes(BaseModel):
session_id: str
npc_output_text: str
deltas: Dict[str, float] = Field(default_factory=dict, description="이번 ν„΄ λ³€ν™”λŸ‰")
flags: Dict[str, int] = Field(default_factory=dict, description="ν”Œλž˜κ·Έ 이진값 {flag_name: 0|1}")
valid: bool
meta: Dict[str, Any] = Field(default_factory=dict, description="μΆ”κ°€ 메타데이터 (npc_id, quest_stage, location λ“±)")