Просмотр исходного кода

:wrench: add ai-translate(python) openai-proxy(nodejs) support

Jeremy Zheng 8 месяцев назад
Родитель
Сommit
921e246bd4

+ 1 - 1
ai-translate/config.orig.toml

@@ -13,4 +13,4 @@ port = 6371
 
 [app]
 api-url = 'http://127.0.0.1:8000/api'
-openai-proxy = 'http://localhost:4000/api/openai'
+openai-proxy-url = 'http://localhost:4000/api/openai'

+ 35 - 0
deploy/roles/mint-v2.1/tasks/ai-translate.yml

@@ -0,0 +1,35 @@
+- name: Upload script for ai.translate
+  ansible.builtin.template:
+    src: containers/ai-translate.sh.j2
+    dest: "{{ app_deploy_target }}/scripts/worker-mq-ai.translate.sh"
+    mode: "0555"
+
+- name: Upload config for ai.translate
+  ansible.builtin.template:
+    src: v2/ai-translate.toml.j2
+    dest: "{{ app_deploy_target }}/ai-translate/config.toml"
+    mode: "0555"
+
+- name: Stop ai.translate
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-worker-mq-ai.translate"
+    state: absent
+
+- name: Create ai.translate container
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-worker-mq-ai.translate"
+    image: "mint-python-3.13"
+    command: "{{ app_deploy_target }}/scripts/worker-mq-ai.translate.sh"
+    volumes:
+      - "{{ app_deploy_target }}/ai-translate:{{ app_deploy_target }}:z"
+    workdir: "{{ app_deploy_target }}"
+    state: present
+    auto_remove: true
+    generate_systemd:
+      path: "{{ ansible_env.HOME }}/.config/systemd/user"
+      container_prefix: "{{ app_container_prefix }}"
+      new: true
+      names: true
+      restart_policy: always
+      restart_sec: 10
+      stop_timeout: 5

+ 2 - 1
deploy/roles/mint-v2.1/tasks/workers/php.yml → deploy/roles/mint-v2.1/tasks/laravel-workers.yml

@@ -1,6 +1,6 @@
 - name: Upload script for worker-{{ zone_name }}-{{ worker_name }}
   ansible.builtin.template:
-    src: containers/worker/php.sh.j2
+    src: containers/laravel-worker.sh.j2
     dest: "{{ app_deploy_target }}/scripts/worker-{{ zone_name }}-{{ worker_name }}.sh"
     mode: "0555"
 
@@ -16,6 +16,7 @@
     command: "{{ app_deploy_target }}/scripts/worker-{{ zone_name }}-{{ worker_name }}.sh"
     volumes:
       - "{{ app_deploy_target }}:{{ app_deploy_target }}:z"
+      - "/srv/{{ app_domain }}/clove:/srv/{{ app_domain }}/clove:z"
     workdir: "{{ app_deploy_target }}"
     state: present
     auto_remove: true

+ 1 - 1
deploy/roles/mint-v2.1/tasks/laravel.yml

@@ -33,7 +33,7 @@
     auto_remove: true
 
 - name: Setup background php worker
-  ansible.builtin.include_tasks: php/workers.yml
+  ansible.builtin.include_tasks: laravel-workers.yml
   vars:
     zone_name: mq
   loop:

+ 35 - 0
deploy/roles/mint-v2.1/tasks/openai-proxy.yml

@@ -0,0 +1,35 @@
+- name: Upload script for openai-proxy
+  ansible.builtin.template:
+    src: containers/openai-proxy.sh.j2
+    dest: "{{ app_deploy_target }}/scripts/openai-proxy.sh"
+    mode: "0555"
+
+- name: Upload config for openai-proxy
+  ansible.builtin.template:
+    src: v2/openai-proxy.json.j2
+    dest: "{{ app_deploy_target }}/open-ai-server/config.json"
+    mode: "0555"
+
+- name: Stop openai-proxy server
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-openai.proxy"
+    state: absent
+
+- name: Create openai-proxy container
+  containers.podman.podman_container:
+    name: "{{ app_domain }}-openai.proxy"
+    image: "mint-nodejs-jod"
+    command: "{{ app_deploy_target }}/scripts/openai-proxy.sh"
+    volumes:
+      - "{{ app_deploy_target }}/open-ai-server:{{ app_deploy_target }}:z"
+    workdir: "{{ app_deploy_target }}"
+    state: present
+    auto_remove: true
+    generate_systemd:
+      path: "{{ ansible_env.HOME }}/.config/systemd/user"
+      container_prefix: "{{ app_container_prefix }}"
+      new: true
+      names: true
+      restart_policy: always
+      restart_sec: 10
+      stop_timeout: 5

+ 14 - 0
deploy/roles/mint-v2.1/templates/containers/ai-translate.sh.j2

@@ -0,0 +1,14 @@
+#!/bin/bash
+
+set -e
+
+export WORK_DIR="{{ app_deploy_target }}"
+
+source $HOME/python3/bin/activate
+
+cd $WORK_DIR/
+# https://github.com/iapt-platform/mint/blob/df8e1cf7ade16d17add360e7a869540c1ddaf1b9/api-v8/config/mint.php#L129
+python3 -m ai_translate -c config.toml -n ai.translate -q ai_translate_v2
+
+ai_translate_v2
+exit 0

+ 0 - 0
deploy/roles/mint-v2.1/templates/containers/workers/php.sh.j2 → deploy/roles/mint-v2.1/templates/containers/laravel-worker.sh.j2


+ 13 - 0
deploy/roles/mint-v2.1/templates/containers/openai-proxy.sh.j2

@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+export WORK_DIR="{{ app_deploy_target }}"
+
+export NVM_DIR="$HOME/.nvm"
+source "$NVM_DIR/nvm.sh"
+
+cd $WORK_DIR/
+node dist/main-*.js config.json
+
+exit 0

+ 16 - 0
deploy/roles/mint-v2.1/templates/v2/ai-translate.toml.j2

@@ -0,0 +1,16 @@
+[rabbitmq]
+host = '{{ app_rabbitmq_host }}'
+port = {{ app_rabbitmq_port }}
+user = '{{ app_rabbitmq_user }}'
+password = '{{ app_rabbitmq_password }}'
+virtual-host = '{{ app_rabbitmq_virtual_host }}'
+customer-timeout = 3600
+
+[redis]
+namespace = '{{ app_domain }}://'
+host = '{{ app_redis_host }}'
+port = {{ app_redis_port }}
+
+[app]
+api-url = '{{ app_openai_proxy_server }}/api'
+openai-proxy-url = '{{ app_openai_proxy_server }}/api/openai'

+ 5 - 0
deploy/roles/mint-v2.1/templates/v2/openai-proxy.json.j2

@@ -0,0 +1,5 @@
+{ 
+    "port": 4000, 
+    "debug": false, 
+    "api-server": "{{ app_api_server }}" 
+}

+ 5 - 1
open-ai-server/config.orig.json

@@ -1 +1,5 @@
-{ "port": 4000, "debug": true, "api_server": "http://staging.wikipali.org/api" }
+{
+  "port": 4000,
+  "debug": true,
+  "api-server": "https://staging.wikipali.org"
+}