Tipinfo |
---|
Disponible desde la versión 6.2.0-Xenon |
Table of Contents | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
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.
...
Si se quisiese especificar el modelo Llama3 con el etiquetado un tamaño de parámetros de 70B, se podría puede hacer de la siguiente forma:
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.
...
Entonces, la comunicación con Ollama se realiza en el servicio a través de instancias de la clase OllamaChatModel
:
Code Block | ||
---|---|---|
| ||
private final OllamaChatModel chatClient; |
...
Code Block | ||||
---|---|---|---|---|
| ||||
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:
...