Partie 1: Oracle APEX avec Ollama
La dernière version de Oracle APEX (24.2.x) supporte officiellement de son interface de configuration les fournisseurs de services d'intelligence artificielle: OCI Generative Service, Open AI et Cohere. Toutefois il est théoriquement possible d'utiliser Ollama dans APEX car cette technologie implémente l'API Open AI, mais quand est-il de la pratique?
Motivation
Avec la montée en puissance de l'utilisation des LLM (grands modèles de langage), le problème de sécurité et de confidentialité de données devient un facteur critique à prendre en considération. Grâce à Ollama c'est possible d'avoir ses propres services d'I.A sur son infrastructure et éventuellement utiliser des modèles plus adaptés et spécialisés selon le cas d'utilisation et l'environnement.
Mise en place
Comme environnement de base pour configurer et tester ces services, j'utiliserai le conteneur Docker de Pretius pour l'installation d'une base de données Oracle, ORDS & APEX.
00_start_apex_ords_installer.sh
Le script suivant lancera l'installation de Pretius mais on y rajoute l'exécution d'un autre script qui donnera à la base l'autorisation d'accéder au service Ollama.sh /home/oracle/unattended_apex_install_23c.sh > /home/oracle/unattended_apex_install_23c.log sh /home/oracle/ollama-acl.sh
ollama-acl.sh
Sur la version gratuite de la base, l'ouverture au port 11434 est faite de la manière suivante:
#!/bin/bash echo "Enable access to Ollama port..." sqlplus / as sysdba <<EOF ALTER SESSION SET CONTAINER = FREEPDB1; BEGIN BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => 'ollama_acl', description => 'ACL for Ollama API access', principal => APEX_APPLICATION.G_FLOW_SCHEMA_OWNER, is_grant => TRUE, privilege => 'connect' ); EXCEPTION WHEN OTHERS THEN IF SQLCODE != -31001 THEN -- ACL already exists RAISE; END IF; END; -- Assign ACL to host DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => 'ollama_acl', host => '172.17.0.1', lower_port => 11434, upper_port => 11434 ); COMMIT; END; / EOF
oracle-ords-apex.dockerfile
# Oracle 23c Free Image FROM container-registry.oracle.com/database/free:latest # Mot de passe ENV ORACLE_PWD=E COPY ./ollama-acl.sh /home/oracle/ollama-acl.sh COPY ./00_start_apex_ords_installer.sh /home/oracle/00_start_apex_ords_installer.sh USER oracle WORKDIR /home/oracle # Télécharger les scripts d'installation ORDS & APEX de Pretius: https://pretius.com/blog/oracle-apex-docker-ords/ RUN curl -o unattended_apex_install_23c.sh https://raw.githubusercontent.com/Pretius/pretius-23cfree-unattended-apex-installer/main/src/unattended_apex_install_23c.sh RUN chmod +x unattended_apex_install_23c.sh RUN mv 00_start_apex_ords_installer.sh /opt/oracle/scripts/startup/ EXPOSE 1521 8080 CMD ["/bin/bash", "-c", "/opt/oracle/runOracle.sh"]
A ces services je rajoute l'image Docker de Ollama et le script suivant pour charger le modèle sqlcoder dans l'image. Dans une autre partie on verra comment exploiter ce modèle dans APEX.
run-ollama.sh
#!/bin/bash echo "Starting Ollama..." ollama serve & echo "Waiting for Ollama to be active..." while [ "$(ollama list | grep 'NAME')" == "" ]; do sleep 1 done ollama pull sqlcoder:7b
ollama.dockerfile
FROM ollama/ollama COPY ./run-ollama.sh /tmp/run-ollama.sh WORKDIR /tmp RUN chmod +x run-ollama.sh \ && ./run-ollama.sh EXPOSE 11434
Finalement on regroupe tous les services dans un fichier docker compose.
docker-compose.yml
services: oracle: build: context: ./ dockerfile: oracle-ords-apex.dockerfile container_name: 23cfree environment: ORACLE_PWD: "E" ports: - "1521:1521" - "8080:8080" networks: - my-network volumes: - oracle_data:/opt/oracle/oradata restart: unless-stopped ollama: build: context: ./ dockerfile: ollama.dockerfile ports: - 11434:11434 volumes: - ollama:/root/.ollama container_name: ollama pull_policy: always tty: true restart: always environment: - OLLAMA_KEEP_ALIVE=24h - OLLAMA_HOST=0.0.0.0 networks: - my-network networks: my-network: volumes: oracle_data: ollama:
On peut lancer les services avec la commande.
> docker-compose up
la base, ORDS et ollama seront installés et leurs services lancés.
Ollama dans APEX
Par la suite il vous faudra configurer APEX et rajouter un utilisateur via l'URL
en utilisant les accès par défaut ADMIN / OrclAPEX1999!
Une fois identifié comme un utilisateur ordinaire dans App Builder > Workspace Utilities > Generative AI Services on peut référencer le service de Ollama et voir si ça fonctionne:
Base URL: http://172.17.0.1:11434/v1
API Key: 123 (entrer n'importe quoi)
AI Model: sqlcoder:7b
et cliquer sur bouton Test Connection
Conclusion
L'installation de Ollama dans cet exemple se fait sur un ordinateur qui n'est pas équipé d'une carte NVidia. Il faudra suivre la procédure d'installation documentée sur Docker Hub si vous avez une carte NVidia.
Dans la prochaine partie sera démontré comment exploiter le modèle sqlcoder.
Libellés : I.A, intelligence artificielle, ollama, oracle apex
0 Comments:
Enregistrer un commentaire
<< Home