Saltar al contenido principal

🔗 Puntos Finales de API

Esta guía proporciona información esencial sobre cómo interactuar efectivamente con los puntos finales de la API para lograr una integración y automatización sin problemas utilizando nuestros modelos. Tenga en cuenta que este es un entorno experimental y puede estar sujeto a futuras actualizaciones para mejoras.

Autenticación​

Para garantizar un acceso seguro a la API, se requiere autenticación 🛡️. Puede autenticar sus solicitudes de API utilizando el mecanismo Bearer Token. Obtenga su clave de API desde Configuración > Cuenta en la interfaz web abierta, o alternativamente, use un JWT (Token Web JSON) para la autenticación.

Puntos Finales Destacados de la API​

📜 Recuperar Todos los Modelos​

  • Punto Final: GET /api/models

  • Descripción: Recupera todos los modelos creados o agregados mediante la interfaz web abierta.

  • Ejemplo:

    curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:3000/api/models

💬 Completaciones de Chat​

  • Punto Final: POST /api/chat/completions

  • Descripción: Actúa como un punto final de completación de chat compatible con la API de OpenAI para modelos en la interfaz web abierta, incluidos los modelos de Ollama, modelos de OpenAI y modelos de Función de Open WebUI.

  • Ejemplo Curl:

    curl -X POST http://localhost:3000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d {
    "model": "llama3.1",
    "messages": [
    {
    "role": "user",
    "content": "¿Por qué el cielo es azul?"
    }
    ]
    }
  • Ejemplo Python:

    import requests

    def chat_with_model(token):
    url = http://localhost:3000/api/chat/completions
    headers = {
    Authorization: fBearer {token},
    Content-Type: application/json
    }
    data = {
    "model": "granite3.1-dense:8b",
    "messages": [
    {
    "role": "user",
    "content": "¿Por qué el cielo es azul?"
    }
    ]
    }
    response = requests.post(url, headers=headers, json=data)
    return response.json()

🦙 Soporte Proxy de API de Ollama​

Si desea interactuar directamente con modelos de Ollama, incluidos los casos de generación de incrustaciones o transmisión de prompts sin procesar, Open WebUI ofrece un paso transparente a la API nativa de Ollama mediante una ruta proxy.

🔁 Generar Completación (Streaming)​

curl http://localhost:3000/ollama/api/generate -d {
"model": "llama3.2",
"prompt": "¿Por qué el cielo es azul?"
}

📦 Listar Modelos Disponibles​

curl http://localhost:3000/ollama/api/tags

🧠 Generar Incrustaciones​

curl -X POST http://localhost:3000/ollama/api/embed -d {
"model": "llama3.2",
"input": ["Open WebUI es genial!", "Vamos a generar incrustaciones."]
}

Esto es ideal para construir índices de búsqueda, sistemas de recuperación o tuberías personalizadas utilizando modelos de Ollama detrás de la interfaz web abierta.

🧩 Generación Aumentada por Recuperación (RAG)​

La función Generación Aumentada por Recuperación (RAG) le permite mejorar las respuestas incorporando datos de fuentes externas. A continuación, encontrará los métodos para gestionar archivos y colecciones de conocimientos mediante la API, y cómo usarlos eficazmente en las completaciones de chat.

Carga de Archivos​

Para utilizar datos externos en respuestas RAG, primero debe cargar los archivos. El contenido del archivo cargado se extrae automáticamente y se almacena en una base de datos vectorial.

  • Punto Final: POST /api/v1/files/

  • Ejemplo Curl:

    curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Accept: application/json" \
    -F "file=@/path/to/your/file" http://localhost:3000/api/v1/files/
  • Ejemplo Python:

    import requests

    def upload_file(token, file_path):
    url = http://localhost:3000/api/v1/files/
    headers = {
    Authorization: fBearer {token},
    Accept: application/json
    }
    files = {file: open(file_path, rb)}
    response = requests.post(url, headers=headers, files=files)
    return response.json()

Agregar Archivos a Colecciones de Conocimientos​

Después de cargar, puede agrupar archivos en una colección de conocimientos o referenciarlos individualmente en chats.

  • Punto Final: POST /api/v1/knowledge/{id}/file/add

  • Ejemplo Curl:

    curl -X POST http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d {"file_id": "your-file-id-here"}
  • Ejemplo Python:

    import requests

    def add_file_to_knowledge(token, knowledge_id, file_id):
    url = fhttp://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add
    headers = {
    Authorization: fBearer {token},
    Content-Type: application/json
    }
    data = {file_id: file_id}
    response = requests.post(url, headers=headers, json=data)
    return response.json()

Uso de archivos y colecciones en finalizaciones de chat​

Puedes referenciar tanto archivos individuales como colecciones completas en tus consultas RAG para obtener respuestas enriquecidas.

Utilización de un archivo individual en finalizaciones de chat​

Este método es beneficioso cuando deseas enfocar la respuesta del modelo de chat en el contenido de un archivo específico.

  • Endpoint: POST /api/chat/completions

  • Ejemplo en Curl:

    curl -X POST http://localhost:3000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d {
    "model": "gpt-4-turbo",
    "messages": [
    {"role": "user", "content": "Explica los conceptos en este documento."}
    ],
    "files": [
    {"type": "file", "id": "your-file-id-here"}
    ]
    }
  • Ejemplo en Python:

    import requests

    def chat_with_file(token, model, query, file_id):
    url = http://localhost:3000/api/chat/completions
    headers = {
    Authorization: fBearer {token},
    Content-Type: application/json
    }
    payload = {
    model: model,
    messages: [{role: user, content: query}],
    files: [{type: file, id: file_id}]
    }
    response = requests.post(url, headers=headers, json=payload)
    return response.json()
Utilización de una colección de conocimiento en finalizaciones de chat​

Aprovecha una colección de conocimiento para mejorar la respuesta cuando la consulta pueda beneficiarse de un contexto más amplio o de múltiples documentos.

  • Endpoint: POST /api/chat/completions

  • Ejemplo en Curl:

    curl -X POST http://localhost:3000/api/chat/completions \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d {
    "model": "gpt-4-turbo",
    "messages": [
    {"role": "user", "content": "Proporciona información sobre las perspectivas históricas cubiertas en la colección."}
    ],
    "files": [
    {"type": "collection", "id": "your-collection-id-here"}
    ]
    }
  • Ejemplo en Python:

    import requests

    def chat_with_collection(token, model, query, collection_id):
    url = http://localhost:3000/api/chat/completions
    headers = {
    Authorization: fBearer {token},
    Content-Type: application/json
    }
    payload = {
    model: model,
    messages: [{role: user, content: query}],
    files: [{type: collection, id: collection_id}]
    }
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

Estos métodos permiten la utilización efectiva de conocimientos externos mediante archivos subidos y colecciones de conocimiento, mejorando las capacidades de las aplicaciones de chat mediante la API de Open WebUI. Ya sea utilizando archivos individualmente o dentro de colecciones, puedes personalizar la integración según tus necesidades específicas.

Ventajas de usar Open WebUI como un proveedor unificado de LLM​

Open WebUI ofrece una multitud de beneficios, convirtiéndose en una herramienta esencial para desarrolladores y empresas por igual:

  • Interfaz Unificada: Simplifica tus interacciones con diferentes LLMs a través de una plataforma única e integrada.
  • Facilidad de Implementación: Integración rápida con documentación completa y soporte comunitario.

Enlaces de documentación Swagger​

important

Asegúrate de configurar la variable de entorno ENV en dev para acceder a la documentación Swagger de cualquiera de estos servicios. Sin esta configuración, la documentación no estará disponible.

Accede a la documentación detallada de la API para los diferentes servicios proporcionados por Open WebUI:

AplicaciónRuta de la Documentación
Principal/docs

Siguiendo estas pautas, puedes integrar y comenzar a utilizar la API de Open WebUI rápidamente. Si encuentras algún problema o tienes preguntas, no dudes en comunicarte a través de nuestra Comunidad de Discord o consultar las preguntas frecuentes. ¡Feliz programación! 🌟