Files
New-planet-api/new-planet-backend/app/schemas/ai.py
T
kuzakhmetovartur a649fb1192 Изменения:
-добавлены нетворки в докер композ
-исправлен рутинг (баг пайчарма)
-запросы к ии агентам не проходят из-за ссл сертификата (пробовали отключить, но пока не выходит, нужно доделать)
2025-12-19 00:57:13 +03:00

78 lines
2.4 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, List, Dict, Any
from datetime import datetime
class ChatRequest(BaseModel):
message: str = Field(..., min_length=1, max_length=2000)
conversation_id: Optional[str] = None
class ChatResponse(BaseModel):
response: str
conversation_id: str
tokens_used: Optional[int] = None
model: Optional[str] = None
class ScheduleGenerateRequest(BaseModel):
child_age: int = Field(..., ge=1, le=18)
preferences: List[str] = Field(default_factory=list)
date: str # ISO format date string
description: Optional[str] = None
class ScheduleGenerateResponse(BaseModel):
schedule_id: str
title: str
tasks: List[Dict[str, Any]]
tokens_used: Optional[int] = None
class ConversationHistory(BaseModel):
conversation_id: str
messages: List[Dict[str, Any]]
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class ConversationListItem(BaseModel):
"""Элемент списка разговоров"""
conversation_id: str
last_message: Optional[str] = None
created_at: datetime
updated_at: datetime
message_count: int = 0
class Config:
from_attributes = True
class ScheduleUpdateRequest(BaseModel):
"""Запрос на обновление расписания через ИИ"""
user_request: str = Field(..., min_length=1, max_length=1000, description="Описание желаемых изменений")
class ScheduleUpdateResponse(BaseModel):
"""Ответ после обновления расписания"""
schedule_id: str
title: str
tasks: List[Dict[str, Any]]
tokens_used: Optional[int] = None
class RecommendationRequest(BaseModel):
"""Запрос на получение рекомендаций"""
preferences: List[str] = Field(default_factory=list, description="Предпочтения пользователя")
category: Optional[str] = Field(None, description="Категория заданий")
completed_tasks: Optional[List[str]] = Field(default_factory=list, description="Уже выполненные задания")
top_k: int = Field(5, ge=1, le=20, description="Количество рекомендаций")
class RecommendationResponse(BaseModel):
"""Ответ с рекомендациями"""
recommendations: List[Dict[str, Any]]
total: int