1.1 KiB
1.1 KiB
application/strategies.py
Propósito
Define la interfaz InvoiceExtractorStrategy y una implementación OllamaExtractor para realizar llamadas a un backend compatible con OpenAI/Ollama que procese imágenes + texto.
API pública
class InvoiceExtractorStrategy(ABC)
Interfaz para extraer datos a partir de páginas en base64 e instrucción de texto.
class OllamaExtractor(InvoiceExtractorStrategy)
Extractor que construye prompts multimodales y llama a chat.completions.create.
Métodos clave:
extract(images_b64: list[str], instruction: str) -> dict: devuelve al menos{"raw": ...}con el texto del modelo.update_config(api_key=None, base_url=None, model=None): actualiza y recrea el cliente interno.
Consideraciones
- Reintentos con
tenacityusando la configuración desettings.retry. - Registro de métricas (tokens, tiempos) en
application.api_callsy logs propios.
Ejemplo
from application.strategies import OllamaExtractor
ext = OllamaExtractor()
res = ext.extract([img_b64_1, img_b64_2], "Instrucción...")
text = res["raw"]