Lenguaje Natural Documentación

v1 · engines
Home

Visión general

Análisis de texto por LLM, embeddings, sentimiento y sanitización de PII.

Esta referencia cubre 9 engines. Cada endpoint trae ruta, permiso, parámetros, respuesta y los errores posibles.

Índice geográfico

Compartir
POST/api/v1/geo_embeddings/process
Engine
geo_embeddings
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Indexa los textos de entidades geográficas en las colecciones de conocimiento de cada tipo.

Convierte en vector el texto editorial de entidades geográficas y lo graba en la colección de conocimiento del tipo de esa entidad: countries_knowledge, states_knowledge, cities_knowledge, neighborhoods_knowledge, districts_knowledge o regions_knowledge. País, estado, ciudad, barrio, distrito y región recorren el mismo camino, porque el tipo de la entidad es dato y no comportamiento, y de él solo se sigue la colección de destino. Un tipo desconocido hace fallar el procesamiento, en vez de crear una colección perdida a partir de un error de tipeo, y solo se crean las colecciones en las que el procesamiento escribe.

data es un sobre, no una lista de filas. Envía un objeto con un array entities; un registro por texto, no por entidad, así que una ciudad con una descripción y doce temas son trece registros. El objeto se preserva tal como llegó, tanto en JSON incrustado como en archivo enviado en el formulario.

Escribe la ascendencia dentro de embed_text. Mantén el nombre de la entidad entre corchetes en la primera línea y pon los niveles superiores en la siguiente, como en [San Rafael del Parana]\nItapua, Paraguay\n.... Un vector solo conoce las palabras con las que fue construido, así que un fragmento que nombra solo la ciudad no responde a una búsqueda en texto libre que nombra el país; el filtro por country_code solo ayuda a quien ya sabe a qué país restringir, que es justamente lo que la búsqueda en texto libre no sabe. La ascendencia queda fuera de los corchetes para que quien lea esa apertura de vuelta siga encontrando el nombre de la entidad y nada más. Quita el marcado antes de enviar: las etiquetas no agregan sentido al vector, solo ruido.

Filtrar es una cosa, mostrar es otra. country_uuid, country_code y state_uuid están indexados, junto a entity_uuid, usage y language, y son por donde una búsqueda restringe un nivel de la jerarquía. La ascendencia viaja por uuid y código ISO, y no por un id entero de base, que no significa nada para quien lee y no es la base que lo emitió. Los nombres viajan sin índice: envía state_name y country_name para que un resultado se dibuje sin resolver dos uuids. Cualquier otra clave se lleva al payload sin alteración.

Reenviar es seguro. El id del punto se deriva del propio registro, como uuid5("geo:{entity_type}:{entity_uuid}:{usage}:{language}"), así que el mismo registro sobrescribe su punto en vez de duplicarlo, y se puede enviar por lotes sin controlar lo ya enviado. Usage y language forman parte de esa clave: la descripción de una ciudad y su texto sobre seguridad son dos puntos, y una traducción nunca sobrescribe el original.

Un registro con texto vacío se saltea y se cuenta, en vez de tumbar el procesamiento. ?dry_run=true recorre el camino entero, vectorización incluida, y no graba nada. El resultado informa points_indexed, by_entity_type, collections, skipped_empty_text, usages y languages.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
from_filestringnoRuta de archivo local a un payload JSON ya descargado, usada solo en pruebas offline del propio engine. Quien llama a la API envía el payload como archivo en el formulario.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
entity_typestringsíUno entre country, state, city, neighborhood, district, region. Decide la colección de destino; un valor desconocido hace fallar el procesamiento.
entity_uuidstringsíEl uuid de la entidad. Forma parte de la identidad del punto, así que un valor vacío hace fallar el procesamiento.
usagestringnoQué texto es este: description, cost_of_living, safety, health, education, employment, mobility, infrastructure, leisure_culture, real_estate_market, connectivity, climate o demographics. Forma parte de la identidad del punto, así que dos usos de la misma entidad son dos puntos.
languagestringnoIdioma del texto, no el de quien lee. Forma parte de la identidad del punto, así que una traducción nunca sobrescribe el original.
embed_textstringsíEl texto a vectorizar, ya sin marcado. Mantén el nombre de la entidad entre corchetes en la primera línea y pon los niveles superiores en la siguiente, como en "[San Rafael del Parana]\nItapua, Paraguay\n...": el vector solo conoce las palabras con las que fue construido, así que un fragmento que nombra solo la ciudad no responde a una búsqueda en texto libre que nombra el país. La ascendencia queda fuera de los corchetes para que quien lea esa apertura de vuelta siga encontrando el nombre de la entidad y nada más. Un registro con texto vacío se saltea y se cuenta, en vez de tumbar el procesamiento.
country_uuidstringnoUuid del país al que pertenece la entidad. Indexado, y con el mismo nombre en las seis colecciones, para que un filtro las atraviese todas sin cambiar.
country_codestringnoCódigo ISO 3166-1 alfa-2 del país. Indexado, y el filtro práctico para quien no tiene el uuid a mano.
state_uuidstringnoUuid del estado al que pertenece la entidad. Indexado. Cualquier otra clave se lleva al payload sin índice, nombres incluidos, porque un nombre es para mostrar y no para filtrar.
state_namestringnoNombre del estado, llevado sin índice para que un resultado de búsqueda se dibuje sin resolver el uuid.
country_namestringnoNombre del país, llevado sin índice por el mismo motivo que state_name.

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/geo_embeddings/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/geo_embeddings/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Embeddings de imagen

Compartir
POST/api/v1/image_embeddings/process
Engine
image_embeddings
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Embeddings de imagen con aceleración dedicada: embed, similitud, búsqueda o dedup por modelo de visión.

Carga las imágenes nombradas por image_column y las codifica con un modelo de visión (con aceleración dedicada cuando está disponible); según el mode, devuelve el mapa id->vector, un ranking de similitud por coseno entre pares, los vecinos más cercanos de una imagen de consulta, o pares casi duplicados por encima de un umbral de similitud. Cada entrada puede ser una URL http(s), una URL s3://bucket/clave, una ruta en el sistema de archivos de quien ejecuta, o una clave de objeto del almacenamiento de la plataforma; una URL se descarga con timeout de 15s, límite de 25 MB y solo desde una dirección pública.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
image_columnstringsíColumna con las referencias de las imágenes (URL, s3://bucket/clave, ruta en el sistema de archivos de quien ejecuta o clave de objeto del almacenamiento de la plataforma).
id_columnstringsíColumna con los identificadores de los ítems.
modelstringno"openai/clip-vit-base-patch32"Nombre del modelo de visión a usar.
modestringno"embed"Uno de embed, similarity, search, dedup.
batch_sizeintegerno64Tamaño del lote de codificación.
query_imagestringnoReferencia de la imagen de consulta, en las mismas formas que la columna; obligatorio cuando mode=search.
similarity_thresholdnumberno0.95Umbral de similitud por coseno del modo dedup, entre 0 y 1.
top_nintegerno10Cantidad de resultados devueltos en modo search.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
image_pathstringsíReferencia de la imagen: URL http(s), URL s3://bucket/clave, ruta en el sistema de archivos de quien ejecuta o clave de objeto del almacenamiento de la plataforma (nombre de la columna configurable vía image_column).
idstringsíIdentificador del ítem (nombre de columna configurable vía id_column).

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/image_embeddings/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/image_embeddings/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

LLM

Compartir
POST/api/v1/llm/process
Engine
llm
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Procesamiento de texto por LLM en el tier de aceleración dedicada: sentimiento, resumen, clasificación, extracción, análisis, traducción o prompt custom.

¿Por qué? Procesamiento de texto de propósito general vía LLM, con aceleración dedicada para inferencia de baja latencia. Cubre análisis de sentimiento, resumen, clasificación, extracción de entidades, traducción y prompts personalizados, entregando los resultados de cada operación de forma consistente para lotes de textos.

¿Cómo? La inferencia se realiza a través del proveedor de LLM configurado en la plataforma, con ingeniería de prompts y muestreo por temperatura configurable. El paralelismo se controla internamente para procesar múltiples textos sin sobrecargar al proveedor.

Origen El enfoque se apoya en Brown et al. (2020), "Language Models are Few-Shot Learners", NeurIPS.

Literatura de referencia

  • Brown, T. et al. (2020). "Language Models are Few-Shot Learners." NeurIPS.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
operationstringno"analyze"Una de sentiment, summarize, classify, extract, analyze, translate_pt, translate_en, custom.
text_columnstringno"text"Nombre de la columna con el texto a procesar.
custom_promptstringnoPlantilla de prompt con el placeholder {text}; obligatoria cuando operation=custom.
temperaturenumberno0.1Temperatura de generación del LLM, entre 0 y 2.
max_tokensintegerno512Máximo de tokens generados por texto.
max_concurrentintegerno5Máximo de textos procesados en paralelo.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíContenido de texto a procesar (nombre de columna configurable vía text_column).

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/llm/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/llm/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Análisis de texto (EN)

Compartir
POST/api/v1/nlp_analisys_en/process
Engine
nlp_analisys_en
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Análisis de texto por LLM fijado en inglés: sentimiento, resumen, clasificación, extracción, análisis o traducción al portugués.

¿Por qué? Análisis de lenguaje natural especializado en textos en inglés, con prompts y heurísticas específicos del idioma que mejoran la calidad del análisis. Ideal cuando el corpus es mayormente anglófono, como reseñas internacionales o tickets de soporte en inglés.

¿Cómo? Se construye sobre el hub de NLP de la plataforma, ejecutando las operaciones a través del proveedor de LLM configurado. Usa plantillas de prompt optimizadas para la lengua inglesa, con instrucciones de sistema específicas para el análisis en inglés, manteniendo la misma arquitectura del engine base.

Origen El enfoque se apoya en Brown et al. (2020), "Language Models are Few-Shot Learners", NeurIPS.

Literatura de referencia

  • Brown, T. et al. (2020). "Language Models are Few-Shot Learners." NeurIPS.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
operationstringno"analyze"Una de sentiment, summarize, classify, extract, analyze, translate_pt, custom. translate_en se rechaza.
response_formatstringno"text"Formato deseado de la respuesta, anexado al prompt: json, markdown o text.
custom_promptstringnoPlantilla de prompt con el placeholder {text}; obligatoria cuando operation=custom.
temperaturenumberno0.1Temperatura de generación del LLM, entre 0 y 2.
max_tokensintegerno512Máximo de tokens generados por texto.
max_concurrentintegerno5Máximo de textos procesados en paralelo.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíContenido de texto en inglés a analizar.

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/nlp_analisys_en/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/nlp_analisys_en/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Embeddings de texto

Compartir
POST/api/v1/nlp_embeddings/process
Engine
nlp_embeddings
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Embeddings semánticos de texto con aceleración dedicada: embed, similitud, búsqueda o clustering.

Codifica una columna de texto en vectores densos con un modelo de sentence embeddings (con aceleración dedicada cuando está disponible); según el mode, devuelve el mapa id->vector, un ranking de similitud por coseno entre pares, los vecinos más cercanos de un string de consulta, o asignaciones de clusters KMeans.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
text_columnstringsíColumna con el texto a codificar.
id_columnstringsíColumna con los identificadores de los ítems.
modelstringno"all-MiniLM-L6-v2"Nombre del modelo de sentence embeddings.
modestringno"embed"Uno de embed, similarity, search, cluster.
batch_sizeintegerno256Tamaño del lote de codificación.
normalizebooleannotrueSi los embeddings deben normalizarse en L2 antes de similitud/búsqueda/cluster.
querystringnoTexto de consulta a codificar y comparar; obligatorio cuando mode=search.
top_nintegerno10Cantidad de resultados devueltos en modo search.
n_clustersintegerno5Número de clusters KMeans (mode=cluster), >= 2.
random_stateintegerno42Semilla aleatoria del clustering KMeans.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíTexto a codificar (nombre de columna configurable vía text_column).
idstringsíIdentificador del ítem (nombre de columna configurable vía id_column).

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/nlp_embeddings/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/nlp_embeddings/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Análisis de texto

Compartir
POST/api/v1/nlp_local/process
Engine
nlp_local
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Análisis de texto vía LLM: sentimiento, resumen, clasificación, extracción, análisis, traducción o prompt custom.

¿Por qué? Hub central de NLP de la plataforma: una interfaz unificada que entrega análisis de sentimiento, resumen, clasificación, extracción, traducción y operaciones personalizadas. En la práctica, es el punto único de entrada para cualquier procesamiento de lenguaje natural, sin que la aplicación necesite conocer el proveedor detrás.

¿Cómo? Las llamadas se realizan al proveedor de LLM configurado en la plataforma, con selección dinámica de proveedor. Usa ingeniería de prompts con plantillas especializadas por tipo de operación y procesa múltiples textos de forma concurrente.

Origen El enfoque se apoya en Brown et al. (2020), "Language Models are Few-Shot Learners", NeurIPS.

Literatura de referencia

  • Brown, T. et al. (2020). "Language Models are Few-Shot Learners." NeurIPS.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
operationstringno"analyze"Una de sentiment, summarize, classify, extract, analyze, translate_pt, translate_en, custom.
response_formatstringno"text"Formato deseado de la respuesta, anexado al prompt: json, markdown o text.
custom_promptstringnoPlantilla de prompt con el placeholder {text}; obligatoria cuando operation=custom.
temperaturenumberno0.1Temperatura de generación del LLM, entre 0 y 2.
max_tokensintegerno512Máximo de tokens generados por texto.
max_concurrentintegerno5Máximo de textos procesados en paralelo.
languagestringnoPista de idioma pasada al cliente de LLM (normalizada en el servidor).

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíContenido de texto a analizar.

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/nlp_local/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/nlp_local/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Sanitización de PII

Compartir
POST/api/v1/sanitize/process
Engine
sanitize
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Remoción de PII: enmascara emails, teléfonos, CPF/CNPJ, tarjetas de crédito e IPs en texto libre.

¿Por qué? Elimina información personal identificable (PII) de campos de texto, sustituyendo correos electrónicos, teléfonos brasileños, CPF, CNPJ, números de tarjeta de crédito (Visa, Mastercard, Amex) y direcciones IPv4 por una máscara configurable (por defecto [REDACTED]). Además de los datos sanitizados, entrega un informe de detección con conteo por tipo de PII, filas y columnas afectadas. Fundamental para el cumplimiento normativo en pipelines de procesamiento de datos.

¿Cómo? Aplica expresiones regulares en secuencia sobre cada celda de texto, de los patrones más específicos a los más generales, por ejemplo CPF antes que teléfono, para evitar falsos positivos. Cada ocurrencia se sustituye por la máscara configurable, con validación opcional por dígito verificador (módulo 11 para CPF, Luhn para tarjetas). Al final genera el informe con el total de detecciones por tipo, filas y columnas afectadas.

Origen Responde directamente a las exigencias de la LGPD (Lei Geral de Proteção de Dados, Ley 13.709/2018 de Brasil) y del GDPR (Reglamento General de Protección de Datos, EU 2016/679).

Literatura de referencia

  • LGPD (Lei Geral de Protecao de Dados, Lei 13.709/2018)
  • GDPR (General Data Protection Regulation, EU 2016/679)

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
maskstringno"[##INTELLIGENCE##]"String de reemplazo usado en cada ocurrencia enmascarada.
sanitize_emailsbooleannotrueDetectar y enmascarar direcciones de email.
sanitize_phonesbooleannotrueDetectar y enmascarar teléfonos brasileños/internacionales.
sanitize_cpfbooleannotrueDetectar y enmascarar números de CPF.
sanitize_cnpjbooleannotrueDetectar y enmascarar números de CNPJ.
sanitize_credit_cardsbooleannotrueDetectar y enmascarar números de tarjeta de crédito.
sanitize_ipsbooleannofalseDetectar y enmascarar direcciones IPv4.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíTexto libre a sanitizar de información personal identificable.

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/sanitize/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/sanitize/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Sentimiento en tiempo real

Compartir
POST/api/v1/sentiment_realtime/process
Engine
sentiment_realtime
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Sentimiento por reglas para micro-lotes: léxico + emojis + negación, sin LLM.

¿Por qué? Análisis de sentimiento optimizado para micro-lotes y latencia crítica, con inferencia en tiempo real por debajo de 50ms por texto y un score normalizado entre -1 y +1 para cada entrada. Está diseñado para escenarios de alta velocidad, como chat en vivo y streaming de redes sociales, donde esperar un modelo pesado no es una opción.

¿Cómo? Usa coincidencia basada en reglas contra léxicos extendidos de palabras de sentimiento. Maneja la negación con inversión de polaridad, detecta intensificadores (muy, extremadamente) y puntúa emojis para capturar el sentimiento visual. El score final se normaliza entre -1 y +1.

Origen Se inspira en Hutto y Gilbert (2014), "VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text", ICWSM.

Literatura de referencia

  • Hutto, C. J. & Gilbert, E. (2014). "VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text." ICWSM.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
languagestringno"en"Idioma del léxico: en o pt.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíContenido de texto a analizar.

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/sentiment_realtime/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/sentiment_realtime/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Voz del cliente

Compartir
POST/api/v1/sentiment_voc/process
Engine
sentiment_voc
Grupo
nlp
Auth
X-TENANT-KEY | Authorization: Bearer
Entrada
JSON inline (data[]) o archivo .json/.csv/.parquet vía multipart/form-data
Modos
asíncrono (202) · ?sync=true (200) · ?dry_run=true (200, efímero)

Propósito

Análisis de voz del cliente vía LLM local (sentimiento, palabras clave o tópicos) con fallback por reglas.

¿Por qué? Analiza el sentimiento de textos con foco en Voice of Customer, capturando la voz del consumidor en feedback y reseñas y entregando la distribución agregada de sentimiento entre los textos. Alimenta el análisis cualitativo de la experiencia del cliente con una lectura consolidada de lo que expresan los consumidores.

¿Cómo? La clasificación primaria es contextual, realizada por el proveedor de LLM configurado en la plataforma, con un respaldo basado en reglas que usa la frecuencia de palabras de un léxico de sentimiento. Los lotes de textos se procesan de forma asíncrona y la distribución de sentimiento se agrega estadísticamente.

Origen Se fundamenta en Liu (2012), "Sentiment Analysis and Opinion Mining", Morgan & Claypool Publishers.

Literatura de referencia

  • Liu, B. (2012). "Sentiment Analysis and Opinion Mining." Morgan & Claypool Publishers.

Parámetros (params)

CampoTipoObligatorioPor defectoDescripción
operationstringno"sentiment"Una de sentiment, keywords, topics.
modelstringno"deepseek-r1:14b"Nombre del modelo usado en la inferencia.
inference_urlstringno"http://localhost:11434"URL base del servidor de inferencia local. Alias heredado: ollama_url, aún aceptado.
max_textsintegerno500Máximo de filas procesadas (1-2000); las excedentes se truncan.

Columnas de data[]

ColumnaTipoObligatoriaDescripción
textstringsíContenido de texto a analizar.

Respuesta

En modo asíncrono (por defecto), 202 Accepted con {"process_uuid", "result_url"}; el resultado sale en GET /api/v1/results/{process_uuid}. Con ?sync=true o ?dry_run=true la respuesta es 200 con el resultado inline (y 504 con el process_uuid si el worker no responde a tiempo).

Errores

  • 403 - la engine no está en allowed_engines de tu suscripción.
  • 413 - subida por encima de max_upload_mb.
  • 422 - engine desconocida o inactiva en el catálogo.
  • 429 - cuota diaria (max_jobs_per_day) o por minuto excedida.

La validación es fail-fast: un envío rechazado no tiene ningún efecto secundario.

Probar solicitudOPENAPI
POST
https://intelligence.echosistema.live/api/v1/sentiment_voc/process?dry_run=true&playground=true
AUTENTICACIÓN
X-TENANT-KEY
QUERY PARAMS
sync
dry_run
playground
REQUEST BODY · JSON
Envía la solicitud para ver la respuesta.
curl
curl -X POST "https://intelligence.echosistema.live/api/v1/sentiment_voc/process?dry_run=true&playground=true" \
  -H "X-TENANT-KEY: $TENANT_KEY"

Entrar

Usa tu cuenta EchoSistema para seguir tus integraciones.