51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""Pydantic модели для диалогов с ИИ."""
|
||
from datetime import datetime
|
||
from typing import List, Optional
|
||
from uuid import UUID
|
||
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class Message(BaseModel):
|
||
"""Модель сообщения в диалоге."""
|
||
|
||
role: str = Field(..., description="Роль: system, user, assistant")
|
||
content: str = Field(..., description="Текст сообщения")
|
||
timestamp: Optional[datetime] = None
|
||
|
||
|
||
class ConversationCreate(BaseModel):
|
||
"""Модель для создания диалога."""
|
||
|
||
user_id: UUID
|
||
title: Optional[str] = None
|
||
|
||
|
||
class ConversationResponse(BaseModel):
|
||
"""Модель ответа с диалогом."""
|
||
|
||
id: UUID
|
||
user_id: UUID
|
||
title: Optional[str]
|
||
messages: List[Message] = Field(default_factory=list)
|
||
created_at: datetime
|
||
updated_at: datetime
|
||
|
||
|
||
class ChatRequest(BaseModel):
|
||
"""Запрос на отправку сообщения в чат."""
|
||
|
||
message: str = Field(..., min_length=1, max_length=2000)
|
||
conversation_id: Optional[UUID] = None
|
||
user_id: UUID
|
||
|
||
|
||
class ChatResponse(BaseModel):
|
||
"""Ответ от ИИ-агента."""
|
||
|
||
response: str
|
||
conversation_id: UUID
|
||
tokens_used: Optional[int] = None
|
||
model: Optional[str] = None
|
||
|