38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""
|
||
对话相关的Pydantic模型
|
||
"""
|
||
from datetime import datetime
|
||
from typing import Optional, Dict, Any
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class ChatMessage(BaseModel):
|
||
"""聊天消息"""
|
||
role: str = Field(..., description="角色:user或assistant")
|
||
content: str = Field(..., description="消息内容")
|
||
metadata: Optional[Dict[str, Any]] = Field(None, description="元数据")
|
||
|
||
|
||
class ChatRequest(BaseModel):
|
||
"""聊天请求"""
|
||
message: str = Field(..., description="用户消息", min_length=1)
|
||
session_id: Optional[str] = Field(None, description="会话ID")
|
||
user_id: Optional[str] = Field(None, description="用户ID")
|
||
|
||
|
||
class ChatResponse(BaseModel):
|
||
"""聊天响应"""
|
||
message: str = Field(..., description="助手回复")
|
||
session_id: str = Field(..., description="会话ID")
|
||
metadata: Optional[Dict[str, Any]] = Field(None, description="元数据")
|
||
|
||
|
||
class ConversationHistory(BaseModel):
|
||
"""对话历史"""
|
||
session_id: str
|
||
messages: list[ChatMessage]
|
||
created_at: datetime
|
||
|
||
class Config:
|
||
from_attributes = True
|