Spaces:
Runtime error
Runtime error
| """ | |
| Request models para para.AI API v3.0 | |
| Define estrutura de requests para todos os endpoints | |
| """ | |
| from typing import Optional, List | |
| from pydantic import BaseModel, Field, field_validator | |
| # ============================================================================ | |
| # PROCESSING | |
| # ============================================================================ | |
| class ProcessingOptionsRequest(BaseModel): | |
| """Opções de processamento.""" | |
| llm_provider: str = Field(default="groq", description="Provedor LLM (groq/openai/anthropic)") | |
| model_type: str = Field(default="balanced", description="Tipo de modelo (fast/balanced/quality)") | |
| enable_parallel: bool = Field(default=True, description="Habilitar processamento paralelo") | |
| max_workers: int = Field(default=3, ge=1, le=10, description="Número de workers paralelos") | |
| save_to_db: bool = Field(default=False, description="Salvar resultados no banco") | |
| def validate_provider(cls, v): | |
| allowed = ["groq", "openai", "anthropic"] | |
| if v not in allowed: | |
| raise ValueError(f"Provider deve ser um de: {allowed}") | |
| return v | |
| def validate_model_type(cls, v): | |
| allowed = ["fast", "balanced", "quality"] | |
| if v not in allowed: | |
| raise ValueError(f"Model type deve ser um de: {allowed}") | |
| return v | |
| # ============================================================================ | |
| # LLM TESTING | |
| # ============================================================================ | |
| class LLMGenerateRequest(BaseModel): | |
| """Request para gerar texto com LLM.""" | |
| prompt: str = Field(..., description="Prompt para o LLM", min_length=1) | |
| provider: str = Field(default="groq", description="Provedor LLM") | |
| model: Optional[str] = Field(default=None, description="Model específico (opcional)") | |
| temperature: float = Field(default=0.7, ge=0.0, le=2.0, description="Temperatura") | |
| max_tokens: int = Field(default=1024, ge=1, le=4096, description="Máximo de tokens") | |
| # ============================================================================ | |
| # PROCESSOR TESTING | |
| # ============================================================================ | |
| class ProcessorTestRequest(BaseModel): | |
| """Request para testar processador.""" | |
| processor_name: str = Field(..., description="Nome do processador (1-9 ou nome completo)") | |
| ementa: str = Field(..., description="Texto da ementa", min_length=10) | |
| integra: str = Field(..., description="Texto da íntegra", min_length=10) | |
| tribunal: str = Field(default="TJPR", description="Sigla do tribunal") | |
| llm_provider: str = Field(default="groq", description="Provedor LLM") | |
| # ============================================================================ | |
| # FILE OPERATIONS | |
| # ============================================================================ | |
| class FileCreateRequest(BaseModel): | |
| """Request para criar arquivo.""" | |
| content: str = Field(..., description="Conteúdo do arquivo") | |
| filename: str = Field(..., description="Nome do arquivo") | |
| acordao_id: Optional[str] = Field(default=None, description="ID do acórdão relacionado") | |
| class FileListRequest(BaseModel): | |
| """Request para listar arquivos.""" | |
| acordao_id: Optional[str] = Field(default=None, description="Filtrar por acórdão") | |
| limit: int = Field(default=100, ge=1, le=1000, description="Limite de resultados") | |
| offset: int = Field(default=0, ge=0, description="Offset para paginação") | |