from pydantic import BaseModel from typing import List, Optional, Dict, Any from enum import Enum class APIType(str, Enum): OPENAI = "openai" GEMINI = "gemini" CLAUDE = "claude" class Message(BaseModel): role: str # "user", "assistant", "system" content: str timestamp: Optional[str] = None class ChatRequest(BaseModel): message: str api_type: APIType = APIType.CLAUDE model: Optional[str] = None # 특정 모델 선택 system_prompt: Optional[str] = None character_name: Optional[str] = None session_id: Optional[str] = None conversation_history: Optional[List[Message]] = None temperature: float = 0.7 max_tokens: Optional[int] = None class ChatResponse(BaseModel): response: str api_type: APIType character_name: str timestamp: str usage: Optional[Dict[str, Any]] = None class CharacterConfig(BaseModel): name: str system_prompt: str api_type: APIType = APIType.OPENAI temperature: float = 0.7 max_tokens: Optional[int] = None