Files
ChatAIBot/models/schemas.py
T
2026-06-05 14:57:15 +03:00

100 lines
2.5 KiB
Python

from pydantic import BaseModel
from typing import Optional
class ChatRequest(BaseModel):
message: str
session_id: str
persona_id: Optional[str] = "default"
is_narrator_choice: bool = False
skip_user_add: bool = False
first_mes_override: Optional[str] = None
# After arc completion: "user" = injection only, player speaks next;
# "character" = injection then character opens the new arc.
new_arc_first: Optional[str] = None
class MessageEditRequest(BaseModel):
content: str
truncate_after: bool = False
class RegenerateRequest(BaseModel):
session_id: str
persona_id: Optional[str] = "default"
message_id: Optional[int] = None
class ForkSessionRequest(BaseModel):
until_message_id: int
class RebindPersonaRequest(BaseModel):
persona_id: str
clear_history: bool = False
class QuestStatusPatch(BaseModel):
status: str
class RpgStateDebugPatch(BaseModel):
"""Debug override for relationship/stats (session-scoped to current player for now)."""
affinity: Optional[int] = None
lust: Optional[int] = None
stamina: Optional[int] = None
tension: Optional[int] = None
class SessionContextPatch(BaseModel):
"""Live-edit RPG / SD context fields for the active session."""
status_quo: Optional[str] = None
global_plot: Optional[str] = None
outfit_json: Optional[str] = None
scene_json: Optional[str] = None
facts_json: Optional[str] = None
plot_arc_json: Optional[str] = None
affinity: Optional[int] = None
lust: Optional[int] = None
stamina: Optional[int] = None
tension: Optional[int] = None
class ChatResponse(BaseModel):
reply: str
session_id: str
image_prompt: Optional[str] = None
class PersonaCreate(BaseModel):
persona_id: str
name: str
emoji: str = "🤖"
description: str = ""
prompt: str = ""
sd_enabled: bool = False
lora_name: str = ""
lora_weight: float = 0.8
appearance_tags: str = ""
personality: str = ""
scenario: str = ""
first_mes: str = ""
mes_example: str = ""
lorebook_json: str = "[]"
avatar_path: str = ""
class PersonaResponse(BaseModel):
persona_id: str
name: str
emoji: str
description: str
prompt: str
custom: bool = False
sd_enabled: bool = False
lora_name: str = ""
lora_weight: float = 0.8
appearance_tags: str = ""
personality: str = ""
scenario: str = ""
first_mes: str = ""
mes_example: str = ""
lorebook_json: str = "[]"
avatar_path: str = ""