59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
领域模型
|
||
"""
|
||
from datetime import datetime
|
||
from typing import Dict, List
|
||
from pydantic_ai._uuid import uuid7
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class Thought(BaseModel):
|
||
"""
|
||
思考节点领域模型
|
||
"""
|
||
|
||
id: str = Field(..., description="思考唯一标识")
|
||
type: str = Field(..., description="思考类型")
|
||
content: str = Field(..., description="思考内容")
|
||
|
||
|
||
class Dialog(BaseModel):
|
||
"""
|
||
对话领域模型
|
||
"""
|
||
|
||
id: str = Field(..., description="对话唯一标识")
|
||
user_prompt: str = Field(..., description="用户提示词")
|
||
thoughts: List[Thought] = Field(default_factory=list, 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: List[Dialog] = Field(default_factory=list, description="对话列表")
|
||
created_at: datetime = Field(default_factory=datetime.now, description="创建时间")
|
||
|
||
|
||
class ConversationHistoryItem(BaseModel):
|
||
"""
|
||
会话历史项领域模型
|
||
"""
|
||
id: str = Field(..., description="会话唯一标识")
|
||
description: str = Field(..., description="会话描述")
|
||
created_at: str = Field(..., description="会话创建时间")
|