# -*- coding: utf-8 -*- """ 领域模型 """ from datetime import datetime from typing import Dict, List, Optional, Callable, Any from pydantic import BaseModel, Field from pydantic_ai import Agent, UsageLimits from pydantic_ai._uuid import uuid7 from enum import StrEnum class Thought(BaseModel): """ 思考节点领域模型 """ type: str = Field(..., description="思考类型") content: str = Field(..., description="思考内容") class Dialog(BaseModel): """ 对话领域模型 """ id: str = Field(default_factory=lambda: str(uuid7()), description="对话唯一标识") user_prompt: str = Field(default="", description="用户提示词") thoughts: Dict[int, Thought] = Field(default_factory=dict, description="思考列表") result_output: str = Field(default="", description="结果输出") is_thinking: bool = Field( default=False, description="正在思考,True 表示正在思考,False 表示未正在思考" ) is_expanded: bool = Field( default=False, description="思考折叠面板展开状态,True 表示展开,False 表示折叠" ) class Conversation(BaseModel): """ 会话领域模型 """ id: str = Field(default_factory=lambda: str(uuid7()), description="会话唯一标识") description: str = Field(default="新会话", description="会话描述") is_running: bool = Field( default=False, description="正在运行,True 表示正在运行,False 表示未正在运行" ) dialogs: Dict[str, Dialog] = Field(default_factory=dict, description="对话列表") created_at: str = Field( ..., description="创建时间", ) class TaskType(StrEnum): """ 任务类型枚举 """ CHAT = "chat"