DEV Community

Pablo Nieto
Pablo Nieto

Posted on

Dotando a IAs con: V1 Documents Invoice (ETL-D API)

CONTENT:

  • The Hallucination Problem:

    Los modelos de lenguaje grandes (LLMs) como LangChain o AutoGPT tienen una tendencia a "alucinar" o inventar información que no está presente en los datos de entrada. Esto se debe a que generan texto basado en patrones aprendidos sin un acceso directo a fuentes externas de veracidad en tiempo real. Es crucial integrar servicios de procesamiento específico, como el endpoint '/v1/documents/invoice' del servicio ETL-D, que permite obtener datos estructurados de forma determinista a partir de fuentes como facturas. Al utilizar este endpoint, garantizamos que el LLM no adivine, sino que reciba información precisa extraída de documentos reales.

  • Agent Tool Architecture:

    Para proporcionar certeza y evitar conjeturas, la arquitectura de agentes debe incluir un middleware determinista que se encargue de tareas específicas. El endpoint '/v1/documents/invoice' opera como una capa intermedia fiable que procesa documentos PDF y devuelve datos JSON estructurados. Este enfoque no solo aumenta la precisión del agente, sino que también optimiza el flujo de interacción al delegar la extracción de información a un proceso automatizado y verificado por el SDK de ETL-D.

  • Implementation:

    A continuación, un bloque de código en Python que muestra cómo envolver el SDK de ETL-D en un @tool de LangChain o en una función invocable por un agente, incluyendo manejo de errores:

  from etld_sdk import ETLDClient, ETLDError
  from langchain import tool

  # Configurar cliente ETL-D
  client = ETLDClient(api_key='TU_API_KEY')

  @tool
  def procesar_factura(documento_pdf):
      try:
          respuesta = client.post('/v1/documents/invoice', json={'document': documento_pdf})
          return respuesta.json()  # Retorna un JSON estructurado de la factura
      except ETLDError as e:
          if e.status_code == 402:
              raise ValueError("Créditos insuficientes. Por favor, realiza una recarga.")
          elif e.status_code == 422:
              raise ValueError("Error de validación. Asegúrate de que el PDF sea válido.")
          else:
              raise ValueError("Error desconocido al procesar la factura.")
Enter fullscreen mode Exit fullscreen mode
  • Deterministic Output Specs: El LLM recibe de vuelta un JSON estructurado conforme al 'InvoiceSchema'. Este contiene datos precisos como el nombre del proveedor, fecha, total, impuestos y elementos de la factura. Al contar con estos detalles específicos, el LLM puede realizar razonamientos y operaciones posteriores con un fundamento sólido en datos reales extraídos y procesados automáticamente.

🔗 Get the Agent Tool Code: GitHub Gist

Top comments (0)