SqlChat - NL to SQL

Da Webmobili Wiki.

https://github.com/sqlchat/sqlchat

Si propone di fare query con linguaggio naturale, leggendo la struttura del database.

Non fa altro che cercare di interpretare e generare un SQL corrispondente.


Installazione in produzione

Node.js

Configurare l'ambiente per Node.js

# Scarica l'ultima versione di nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.bashrc

# Installa Node.js 22
nvm install 22
nvm use 22

# Verificare con
node --version

# Verifica i rilasci ufficiali
nvm ls-remote

# eventualmente installare la versione voluta con
nvm install [version_number]

Aggiornare npm , Node Package Manager

npm install npm@latest -g

Installare pnpm, Performant Node Package Manager

npm install pnpm

Applicazione

Copiare la cartella principale in un folder tra i siti web, es /var/www/sqlchat.dbdemo47.com

Installa le dipendenze e genera il client

cd /var/www/sqlchat.dbdemo47.com
pnpm i
pnpm update
pnpm prisma generate
# Fa una copia di .env.nodb su .env
cp .env.nodb .env

Aprire il file .env e compilare le variabili d'ambiente OPENAI_API_KEY e NEXTAUTH_SECRET

OPENAI_API_KEY=sk-proj-y_CdQA08RfBBfRT_a7-1-CfyQqWWp8AanB5SaEDvFhpgtKAqb3d1vbGK0loFi8bi7dF__Kv7mrT3BlbkFJ13neJuz>
NEXTAUTH_SECRET=codiceacasonecessario
NEXT_PUBLIC_USE_DATABASE=false

Compilare TypeScript. Questo comando potrebbe dare errore, nel caso recarsi nel codice a correggere.

npx tsc

Esegui lo script build per generare la versione ottimizzata per la produzione

npm run build

Esegui lo script start per avviare il server di Next.js in modalità produzione

npm run start

In questo modo il progetto parte in locale sulla porta 3000

Apache config

Creare un virtualhost che faccia da reverse proxy per node.
/etc/apache2/sites-available/sqlchat.dbdemo47.com.conf

#
# sqlchat.dbdemo47.com
#
<VirtualHost *:80>
        ServerName sqlchat.dbdemo47.com
        Redirect / https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
        # Basic Auth
        <Location />
                AuthName "Dialog prompt"
                AuthType Basic
                AuthUserFile /var/www/auth/.htpasswd
                Require valid-user
        </Location>

        ServerAdmin info@designbest.com
        ServerName sqlchat.dbdemo47.com

        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Abilitare il modulo proxy_http

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo systemctl restart apache2
# Abilito il virtualhost appena creato
sudo a2ensite sqlchat.dbdemo47.com.conf
sudo systemctl reload apache2