Los Wisdoms son bases de datos que contienen información clave de tu empresa—conocimientos, productos y servicios—utilizada por liVO para responder a clientes con precisión, eliminando alucinaciones. Esta documentación detalla cómo gestionar Wisdoms mediante la API, subida de Excel, o la interfaz web. Solo los usuarios con permisos de administrador (gestores de la empresa asociada al Wisdom) pueden realizar estas acciones.
Actualiza Wisdoms programáticamente enviando datos JSON a través de una solicitud POST. Ideal para integraciones automáticas, actualizaciones masivas, o ajustes de inventario.
Endpoint: https://livo.cl/wisdom_api/<uuid>/
Método: POST
Autenticación: Requiere una clave API en el encabezado X-API-Key
. Obtén o regenera la clave desde el panel de gestión de Wisdoms.
Modos de solicitud:
items
para actualizar todos los elementos del Wisdom.stock_updates
para modificar cantidades de productos por SKU.bump_processing: true
para continuar el procesamiento de embeddings tras un timeout.Respuestas posibles:
{"status": "success", "message": string, "warnings": [string]?}
{"status": "error", "message": string}
{"status": "bump", "message": string, "bump_payload": {"bump_processing": true}}
(indica que el procesamiento excede 28 segundos; reenviar con bump_processing: true
).Actualiza todos los elementos del Wisdom con un nuevo conjunto de items
.
Estructura de un item:
Inferencia de tipo:
price
ni quantity
.quantity
(entero positivo).price
pero no quantity
, o quantity
= "-1".Ejemplo de solicitud:
curl -X POST \ "https://livo.cl/wisdom_api/<uuid>/" \ -H "X-API-Key: tu-clave-api" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "title": "Política de Devolución", "long_text": "Devoluciones en 30 días con recibo", "category": "Políticas" }, { "title": "Silla de Oficina", "sku": "SOF123", "long_text": "Silla ergonómica con soporte lumbar", "link": "https://tienda.com/silla", "category": "Mobiliario", "price": "50000", "quantity": "10" }, { "title": "Consultoría SEO", "sku": "SEO2023", "long_text": "Optimización de tu sitio web en 3 meses", "category": "Marketing", "price": "200000", "quantity": "-1" } ] }'
import requests url = "https://livo.cl/wisdom_api/<uuid>/" headers = { "X-API-Key": "tu-clave-api", "Content-Type": "application/json" } data = { "items": [ { "title": "Política de Devolución", "long_text": "Devoluciones en 30 días con recibo", "category": "Políticas" }, { "title": "Silla de Oficina", "sku": "SOF123", "long_text": "Silla ergonómica con soporte lumbar", "link": "https://tienda.com/silla", "category": "Mobiliario", "price": "50000", "quantity": "10" }, { "title": "Consultoría SEO", "sku": "SEO2023", "long_text": "Optimización de tu sitio web en 3 meses", "category": "Marketing", "price": "200000", "quantity": "-1" } ] } response = requests.post(url, headers=headers, json=data) print(response.json())
fetch("https://livo.cl/wisdom_api/<uuid>/", { method: "POST", headers: { "X-API-Key": "tu-clave-api", "Content-Type": "application/json" }, body: JSON.stringify({ items: [ { title: "Política de Devolución", long_text: "Devoluciones en 30 días con recibo", category: "Políticas" }, { title: "Silla de Oficina", sku: "SOF123", long_text: "Silla ergonómica con soporte lumbar", link: "https://tienda.com/silla", category: "Mobiliario", price: "50000", quantity: "10" }, { title: "Consultoría SEO", sku: "SEO2023", long_text: "Optimización de tu sitio web en 3 meses", category: "Marketing", price: "200000", quantity: "-1" } ] }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error));
curl -X POST \ "https://livo.cl/wisdom_api/<uuid>/" \ -H "X-API-Key: tu-clave-api" \ -H "Content-Type: application/json" \ -d '{ "stock_updates": [ { "SKU": "SOF123", "quantity": "15", "type": "absolute" }, { "SKU": "SEO2023", "quantity": "5", "type": "additive" } ] }'
import requests url = "https://livo.cl/wisdom_api/<uuid>/" headers = { "X-API-Key": "tu-clave-api", "Content-Type": "application/json" } data = { "stock_updates": [ { "SKU": "SOF123", "quantity": "15", "type": "absolute" }, { "SKU": "SEO2023", "quantity": "5", "type": "additive" } ] } response = requests.post(url, headers=headers, json=data) print(response.json())
fetch("https://livo.cl/wisdom_api/<uuid>/", { method: "POST", headers: { "X-API-Key": "tu-clave-api", "Content-Type": "application/json" }, body: JSON.stringify({ stock_updates: [ { SKU: "SOF123", quantity: "15", type: "absolute" }, { SKU: "SEO2023", quantity: "5", type: "additive" } ] }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error));
curl -X POST \ "https://livo.cl/wisdom_api/<uuid>/" \ -H "X-API-Key: tu-clave-api" \ -H "Content-Type: application/json" \ -d '{"bump_processing": true}'
import requests url = "https://livo.cl/wisdom_api/<uuid>/" headers = { "X-API-Key": "tu-clave-api", "Content-Type": "application/json" } data = {"bump_processing": True} response = requests.post(url, headers=headers, json=data) print(response.json())
fetch("https://livo.cl/wisdom_api/<uuid>/", { method: "POST", headers: { "X-API-Key": "tu-clave-api", "Content-Type": "application/json" }, body: JSON.stringify({bump_processing: true}) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error));
Notas: Reemplaza <uuid>
con el UUID de tu Wisdom y tu-clave-api
con tu clave API. El campo title
es obligatorio; sku
es opcional pero recomendado para productos y servicios. Los tipos se infieren automáticamente. Los embeddings se regeneran tras la actualización.
Actualiza las cantidades de productos existentes mediante su SKU
sin modificar otros campos ni regenerar embeddings.
Estructura de stock_updates:
Restricciones:
price
y quantity
positivo).SKU
debe existir en el Wisdom.additive
.Ejemplo de solicitud: Ver pestañas de código arriba (cURL Stock, Python Stock, JavaScript Stock).
Notas: Las actualizaciones de stock son rápidas, ya que no regeneran embeddings. Si un SKU
no está en los embeddings, se emite una advertencia, pero la cantidad se actualiza en items
.
Si el procesamiento de embeddings excede 28 segundos, la API devuelve un estado bump
. Reenvía la solicitud con bump_processing: true
para continuar.
Estructura de la solicitud:
true
para reanudar el procesamiento de embeddings.Comportamiento:
items
previamente guardados en el Wisdom.success
si completa, bump
si aún excede 28 segundos, o error
si no hay items
.Ejemplo de solicitud: Ver pestañas de código arriba (cURL Bump, Python Bump, JavaScript Bump).
Notas: Usa reintentos con retroceso exponencial (ej. 1s, 2s, 4s) hasta recibir success
o error
. Este modo asume que items
ya está validado.
Actualiza Wisdoms subiendo un archivo Excel (.xlsx) desde el panel de control. Ideal para actualizaciones manuales o datos exportados de otros sistemas.
Pasos:
Estructura de la plantilla:
Columna | Descripción | Obligatorio | Ejemplo |
---|---|---|---|
Title | Nombre del elemento (máx. 1000 caracteres) | Sí | "Silla de Oficina" |
SKU | Código único para productos o servicios (máx. 100 caracteres) | No | "SOF123" |
Long Text | Descripción detallada (máx. 12000 caracteres) | No | "Silla ergonómica con soporte lumbar" |
Link | URL relevante (máx. 2000 caracteres) | No | "https://tienda.com/silla" |
Category | Categoría para productos o servicios (máx. 500 caracteres) | No | "Mobiliario" |
Price | Precio para productos o servicios (formato numérico) | Sí para servicios | "50000" |
Quantity | Cantidad para productos (entero positivo) o "-1" para servicios | Sí para productos | "10" |
Inferencia de tipo:
Price
ni Quantity
.Quantity
(entero positivo).Price
pero no Quantity
, o Quantity
= "-1".Ejemplo de archivo Excel:
Title | SKU | Long Text | Link | Category | Price | Quantity |
---|---|---|---|---|---|---|
Política de Devolución | Devoluciones en 30 días con recibo | Políticas | ||||
Silla de Oficina | SOF123 | Silla ergonómica con soporte lumbar | https://tienda.com/silla | Mobiliario | 50000 | 10 |
Consultoría SEO | SEO2023 | Optimización de tu sitio web en 3 meses | Marketing | 200000 | -1 |
Notas: Descarga la plantilla para garantizar el formato correcto. Usa valores numéricos válidos para Price
y Quantity
. El campo SKU
es opcional pero recomendado para productos y servicios.
La clave API es necesaria para autenticar solicitudes a la API. Puedes obtenerla o regenerarla desde el panel de gestión de Wisdoms.
Pasos:
Notas:
La gestión de Wisdoms está restringida a usuarios con permisos de gestor, verificados contra la empresa asociada al Wisdom.
Requisitos:
login_required
).contact_form.company
.contact_form
o empresa, se deniega el acceso.Acciones restringidas:
Notas: