Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
minLevel1
maxLevel6
outlinefalse
stylenone
typelist
printabletrue

Introducción

Continuando con la incorporación de herramientas que permitan trabajar con inteligencia artificial y modelos lingüísticos grandes (LLM) en Onesait Platform, desde la versión 6.2.0-Xenon se encuentra disponible Ollama como LLM que puede ejecutar directamente en la Plataforma, sin necesidad de conectarse a otros servicios externos.

...

Note

Es importante dimensionar correctamente los recursos de Ollama a la hora de hacer uso del mismo. En la Plataforma se ha probado con un despliegue de K8s con una limitación de 5 cores y 5 GB de RAM.

Acerca de Ollama

Ollamaes una plataforma de inteligencia artificial que permite usar modelos LLM (Llama 3, Phi 3, Mistral, Gemma 2, etc.) de manera local para generar respuestas y proporcionar información sobre el contenido enviado.

Entre los diferentes modelos de LLM se encuentra LLaVA (Large Language and Vision Assistant), un modelo de inteligencia artificial multimodal. Cuenta con un gran potencial en el procesamiento del lenguaje humano y visión por ordenador, ofreciendo respuestas con un alto nivel de comprensión.

Uso de Ollama en Onesait Platform

Se ha integrado Ollama como un contenedor que ejecuta en el clúster de Kubernetes donde se despliega una instancia de la Plataforma y con el que se comunica vía endpoint REST.

...

Se puede encontrar más información sobre Spring AI en el siguiente enlace:

...

Ollama

Ollama se ha desplegado en el mismo paquete de Rancher donde se encuentra la imagen del servicio. Esto significa que ambos, la aplicación y Ollama, corren en el mismo entorno, permitiendo que la aplicación acceda a Ollama de manera directa y eficiente, sin necesidad de realizar llamadas a servicios externos.

...

Code Block
ollama pull Llama3:70b

Servicio Spring Boot

Plantilla de Microservicio Ollama + Spring Boot + Spring AI

A partir de la versión 6.1.0-Warcraft se ha incluido un tipo de plantilla para Microservicios en la Plataforma que contiene un esqueleto de Microservicio diseñado para operar con Ollama, creado con Spring Boot y Spring AI.

...

Partiendo de la plantilla creada, se ha creado un Microservicio que ofrece un API REST y un frontal HTML.

...

API REST del Microservicio

El Microservicio ofrece una interfaz REST Open API con una serie de operaciones que se van a poder invocar para trabajar con Ollama. Cuenta con cuatro endpoints:

...

A continuación se muestra cómo usar cada uno de los endpoints.

/api/ai/ollama/chat

En primer lugar, el método GET en «/api/ai/ollama/chat» recibe un mensaje de texto como parámetro y devuelva una cadena de texto con la respuesta de la inteligencia artificial.

...

/api/ai/ollama/image

El método POST en «/api/ai/ollama/image» recibe un mensaje de texto y una imagen adjunta como parámetros. Del mismo modo, devuelve una cadena de texto con la respuesta.

...

/api/ai/ollama/default

El método POST en «/api/ai/ollama/default» tan solo recibe una imagen adjunta como parámetro, y devuelve una cadena de texto con lo que la inteligencia artificial percibe en la imagen enviada.

...

/api/ai/ollama/generic

Por último, el método POST en «/api/ai/ollama/generic» tiene tres parámetros obligatorios: el mensaje de texto, la temperatura o grado de imaginación y el modelo a escoger a través de un desplegable.

En función del modelo escogido, se deberá adjuntar, o no, alguno de los dos parámetros opcionales: la URL web de una imagen o directamente el archivo de esta. La respuesta será una cadena de texto de acuerdo al contenido enviado.

...

Capa web

También se incluye un frontal web con una interfaz para interactuar y realizar las mismas acciones.

...

Por otro lado, la pantalla de resultado está formada por la respuesta de Ollama, la imagen a analizar -si es necesaria- y un botón para volver al formulario correspondiente.

...

Spring AI back end

Ollama se complementa muy bien con Spring AI, facilitando la comunicación y la implementación, sin la necesidad de tener que hacer llamadas explícitas al API de Ollama.

...

Code Block
breakoutModewide
languagejava
public String generateResposeWithImage(String message, MultipartFile file) throws IOException {
  byte[] imageData = file.getBytes();
  UserMessage userMessage = new UserMessage(message, List.of(new Media(MimeTypeUtils.IMAGE_PNG, imageData)));
  
  ChatResponse response = chatClient.call(
    new Prompt(
      List.of(userMessage),
      OllamaOptions.create().withModel("llava").withTemperature(0.4f)
    )
  );
  
  return response.getResult().getOutput().getContent();
}

...

API disponible en el API Manager

El Microservicio que se veía antes ha sido publicado como API en el API Manager de la Plataforma para poder usarlo de forma sencilla en cualquiera instalación que tenga disponible el servicio de Ollama:

...