Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:proyectos:agentes:paso2

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:proyectos:agentes:paso2 [2026/02/18 17:34] Lorenzoclase:iabd:pia:proyectos:agentes:paso2 [2026/02/19 17:03] (actual) – [Anexo Técnico: Emulación del Estándar OpenAI Chat Completions] Lorenzo
Línea 65: Línea 65:
   * **content:** Es donde inyectamos el texto que generó Ollama en el paso anterior.   * **content:** Es donde inyectamos el texto que generó Ollama en el paso anterior.
  
-===== Paso 4: Conexión desde Open WebUI =====+  
 +===== Paso 4: Consumo desde Open WebUI =====
  
-Para terminarintegraremos el flujo en la interfaz de chat:+Finalmenteintegramos nuestro n8n como un proveedor de servicios en la interfaz de usuario.
  
-  1Entrar en **Open WebUI** **Settings** **Connections**. +**Instrucciones:** 
-  2. En la sección **OpenAI API**, añadir una nueva conexión+  * En **Open WebUI**, ir a //Settings > Connections > OpenAI API//. 
-  3. **URL:** Poner la URL base de tu n8n (ej: ''http://localhost:5678/webhook/'')El sistema añad+  * Añadir la URL de nuestro webhook de n8n (omitiendo el final ''/v1/chat/completions''). 
 +  * Seleccionar el nuevo modelo en el chat y comprobar que, al preguntar cualquier cosa, la IA responde con el clima real de Valencia obtenido de la AEMET. 
 +   
 +===== Anexo Técnico: Emulación del Estándar OpenAI Chat Completions ===== 
 + 
 +Para que una interfaz como **Open WebUI** o cualquier cliente compatible pueda consumir nuestro flujo de n8n, el Webhook debe comportarse exactamente como un servidor de OpenAI. Esto implica cumplir con una ruta específica y una estructura de respuesta estricta. 
 + 
 +==== 1. Configuración del Endpoint (Ruta) ==== 
 + 
 +Open WebUI busca por defecto el recurso en la ruta estándar de la API de Chat. Por lo tanto, el nodo **Webhook** de n8n debe configurarse con: 
 + 
 +  * **HTTP Method:** ''POST'' 
 +  * **HTTP Path:** ''v1/chat/completions'' 
 +  * **Response Mode:** ''When Last Node Finishes'' (Esto es crítico: n8n debe esperar a que Ollama termine para responder al chat). 
 + 
 +==== 2. La Estructura del JSON de Respuesta ==== 
 + 
 +El cliente de chat espera un objeto JSON complejo. Si n8n responde solo con texto plano, el chat dará un error de "Formato Inválido". El nodo final **Respond to Webhook** debe configurarse para devolver un **JSON** con esta estructura mínima: 
 + 
 +<code json> 
 +
 +  "id": "chatcmpl-n8n-aemet", 
 +  "object": "chat.completion", 
 +  "created": {{ Math.floor(Date.now() / 1000) }}, 
 +  "model": "aemet-valencia-bot", 
 +  "choices":
 +    { 
 +      "index": 0, 
 +      "message":
 +        "role": "assistant", 
 +        "content": "{{ $node["Ollama"].json.output }}" 
 +      }, 
 +      "finish_reason": "stop" 
 +    } 
 +  ], 
 +  "usage":
 +    "prompt_tokens": 0, 
 +    "completion_tokens": 0, 
 +    "total_tokens":
 +  } 
 +
 +</code> 
 + 
 +==== 3. Desglose de Campos Clave ==== 
 + 
 +| Campo | Función | 
 +**id** | Identificador único de la respuesta. Usamos un prefijo estático seguido de un ID aleatorio si se desea. | 
 +| **created** | Marca de tiempo en formato Unix (segundos). En n8n usamos la expresión ''Math.floor(Date.now() / 1000)''. | 
 +| **model** | Nombre que aparecerá en la interfaz del chat como "modelo activo". | 
 +| **choices[0].message.content** | Aquí es donde insertamos la respuesta generada por el nodo de **Ollama**. Es el texto que el usuario leerá en su burbuja de chat. | 
 +| **finish_reason** | Indica que la IA ha terminado de hablar. Debe ser ''"stop"'' para que el chat cierre la conexión correctamente. | 
 + 
 +==== 4. Conexión en el Cliente (Open WebUI) ==== 
 + 
 +En la configuración de conexiones de Open WebUI: 
 +  La **Base URL** debe ser la URL de n8n hasta antes de la versiónEj. ''https://n8n.tu-centro.es/webhook/''. 
 +  * Automáticamente, el cliente añadirá ''v1/chat/completions'' al final de esa URL para realizar la petición POST.
clase/iabd/pia/proyectos/agentes/paso2.1771432442.txt.gz · Última modificación: por Lorenzo