Spaces:
Runtime error
Runtime error
File size: 3,568 Bytes
8b10e33 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
"""
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")
@field_validator("llm_provider")
@classmethod
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
@field_validator("model_type")
@classmethod
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")
|