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
Mise en place
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
#!/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"]
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
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:
Ollama dans APEX
Conclusion
Libellés : I.A, intelligence artificielle, ollama, oracle apex