Spaces:
Running
Running
Guilherme Favaron
Major update: Add hybrid search, reranking, multiple LLMs, and UI improvements
1b447de
| """ | |
| Classe base abstrata para provedores de LLM | |
| """ | |
| from abc import ABC, abstractmethod | |
| from typing import Dict, Any, Optional | |
| class BaseLLM(ABC): | |
| """Classe abstrata para provedores de LLM""" | |
| def __init__(self, model_id: str, **kwargs): | |
| """ | |
| Inicializa o provider LLM | |
| Args: | |
| model_id: ID do modelo | |
| **kwargs: Configurações adicionais | |
| """ | |
| self.model_id = model_id | |
| self.config = kwargs | |
| self.last_error: str = "" | |
| def generate( | |
| self, | |
| prompt: str, | |
| temperature: float = 0.3, | |
| max_tokens: int = 512, | |
| **kwargs | |
| ) -> str: | |
| """ | |
| Gera resposta a partir de um prompt | |
| Args: | |
| prompt: Texto do prompt | |
| temperature: Temperatura de geração (0.0-2.0) | |
| max_tokens: Máximo de tokens na resposta | |
| **kwargs: Parâmetros adicionais específicos do provider | |
| Returns: | |
| Texto gerado | |
| """ | |
| pass | |
| def is_available(self) -> bool: | |
| """ | |
| Verifica se o provider está disponível | |
| Returns: | |
| True se disponível, False caso contrário | |
| """ | |
| pass | |
| def get_model_info(self) -> Dict[str, Any]: | |
| """ | |
| Retorna informações sobre o modelo | |
| Returns: | |
| Dicionário com informações do modelo | |
| """ | |
| pass | |
| def validate_parameters( | |
| self, | |
| temperature: float, | |
| max_tokens: int | |
| ) -> tuple[bool, str]: | |
| """ | |
| Valida parâmetros de geração | |
| Args: | |
| temperature: Temperatura de geração | |
| max_tokens: Máximo de tokens | |
| Returns: | |
| Tupla (válido, mensagem_erro) | |
| """ | |
| if not 0.0 <= temperature <= 2.0: | |
| return False, "Temperature deve estar entre 0.0 e 2.0" | |
| if max_tokens < 1 or max_tokens > 4096: | |
| return False, "Max tokens deve estar entre 1 e 4096" | |
| return True, "" | |
| def __repr__(self) -> str: | |
| return f"{self.__class__.__name__}(model_id='{self.model_id}')" | |