""" Определения моделей данных (pydantic) для представления состояния агента LangGraph. Включают схему для отслеживания хода выполнения диалога и визуализации графа. """ from typing import Dict, Any, List, Optional from langchain_core.pydantic_v1 import BaseModel, Field # Определяем состояние нашего агента (LangGraph) class AgentState(BaseModel): """Состояние графа агента.""" input: str = Field(description="Исходный запрос пользователя.") command: Optional[str] = Field(None, description="Распознанная слеш-команда.") command_args: List[str] = Field([], description="Аргументы команды.") llm_response: Optional[str] = Field(None, description="Ответ от LLM.") image_urls: List[str] = Field( [], description="URL сгенерированных изображений.") analysis_result: Optional[str] = Field( None, description="Результат анализа изображения.") subtitles: Optional[str] = Field(None, description="Полученные субтитры.") summarized_history_text: Optional[str] = Field( None, description="Суммированная история.") error: Optional[str] = Field(None, description="Сообщение об ошибке.") # Для визуализации графа (имитация узлов и ребер) graph_nodes: List[Dict[str, Any]] = Field( [], description="Узлы для визуализации графа.") graph_edges: List[Dict[str, Any]] = Field( [], description="Ребра для визуализации графа.") current_node_id: str = Field( "start", description="ID текущего узла графа для фронтенда.") parent_node_id: Optional[str] = Field(None, description="ID родительского узла.") # Временное хранилище для chat_history, которое не сохраняется в БД # Оно используется для передачи контекста между узлами в пределах одного выполнения temporary_chat_history: List[Dict[str, Any]] = Field( [], description="Временная история чата, не сохраняемая в БД.") system_prompt: Optional[str] = Field(None, description="Системный промпт.")