""" Определения моделей данных (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="Аргументы команды.") chat_history: List[Dict[str, str]] = Field( [], description= "Полная история сообщений в текущей ветке диалога. Формат: [{'role': 'user/assistant', 'content': 'message'}]" ) 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 родительского узла.")