77 lines
1.8 KiB
Python
77 lines
1.8 KiB
Python
"""
|
|
对话 Schema
|
|
"""
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field, ConfigDict
|
|
|
|
from app.base_schema import CSTDatetime
|
|
|
|
|
|
class ConversationCreate(BaseModel):
|
|
"""创建对话"""
|
|
app_id: str = Field(..., description="应用 ID")
|
|
title: str = Field(default="", description="对话标题")
|
|
|
|
|
|
class ConversationUpdate(BaseModel):
|
|
"""更新对话"""
|
|
title: Optional[str] = None
|
|
is_pinned: Optional[bool] = None
|
|
|
|
|
|
class ConversationResponse(BaseModel):
|
|
"""对话输出"""
|
|
id: str
|
|
app_id: str
|
|
app_name: str = ""
|
|
title: str = ""
|
|
message_count: int = 0
|
|
total_tokens: int = 0
|
|
is_pinned: bool = False
|
|
sort: int = 0
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
sys_update_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ConversationListResponse(BaseModel):
|
|
"""对话列表输出"""
|
|
id: str
|
|
title: str = ""
|
|
message_count: int = 0
|
|
is_pinned: bool = False
|
|
sys_update_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class MessageResponse(BaseModel):
|
|
"""消息输出"""
|
|
model_config = ConfigDict(from_attributes=True, protected_namespaces=())
|
|
|
|
id: str
|
|
role: str
|
|
content: str = ""
|
|
status: str = "completed"
|
|
prompt_tokens: int = 0
|
|
completion_tokens: int = 0
|
|
total_tokens: int = 0
|
|
model_name: str = ""
|
|
latency: int = 0
|
|
error_message: str = ""
|
|
feedback: str = ""
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
|
|
|
|
class SendMessageInput(BaseModel):
|
|
"""发送消息"""
|
|
content: str = Field(..., description="消息内容")
|
|
|
|
|
|
class MessageFeedbackInput(BaseModel):
|
|
"""消息反馈"""
|
|
feedback: str = Field(..., description="反馈: like/dislike")
|