41 lines
2.7 KiB
Python
41 lines
2.7 KiB
Python
"""
|
||
Определения моделей данных (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="Системный промпт.")
|
||
selected_model: str = Field(None, description="Модель llm.") |