- Account sull'Akamai Cloud con accesso per Akamai Functions
- Token di accesso personale all'Akamai Cloud
- Accesso in lettura e scrittura per sistemi Linode e firewall
- Accesso in lettura per eventi
- Terraform installato localmente
- Spin CLI installato localmente
- Plug-in aka per Spin
- Node.js installato localmente
- Coppia di chiavi SSH
Prima di iniziare
Dopo aver stabilito una connessione all'istanza GPU tramite SSH durante la verifica della distribuzione di Ollama, dovrai verificare che la tua chiave pubblica sia disponibile prima di eseguire il provisioning dell'infrastruttura.
Crea il progetto
Esegui prima il provisioning del back-end di inferencing, quindi configura, esegui i test e distribuisci l'applicazione sull'edge.
Clona l'applicazione di esempio e riesamina le relative directory dell'applicazione e dell'infrastruttura.
Clona il repository del progetto:
git clone https://github.com/akamai-developers/akamai-functions-llm-chatbot.git
cd akamai-functions-llm-chatbot
Il repository contiene due parti principali:
- Una directory dell'infrastruttura contenente la configurazione Terraform e cloud-init
- Un'applicazione Spin contenente il front-end Astro e l'API TypeScript
Esamina le variabili Terraform prima del provisioning. Puoi modificare l'area geografica, il piano delle GPU, il modello e le relative impostazioni dell'infrastruttura per il tuo ambiente.
Utilizza Terraform per creare l'istanza della GPU e configurare il servizio di inferencing di Ollama.
Passa alla directory dell'infrastruttura e inizializza Terraform:
cd infrastructure
terraform init
Configura il token di accesso personale all'Akamai Cloud:
export LINODE_TOKEN="your-pat-here"
Esegui il provisioning dell'infrastruttura:
terraform apply
Terraform crea un'istanza della GPU dedicata e utilizza cloud-init per:
- Installare i driver della GPU richiesti
- Installare Ollama
- Estrarre il modello open source configurato
- Rendere visibile l'API Ollama sulla porta 11434
- Attendere che il modello diventi disponibile
Al termine del provisioning, Terraform restituisce l'endpoint Ollama:
ollama_endpoint = "http://<linode-ip>:11434"
Il provisioning e il caricamento dei modelli richiedono in genere diversi minuti.
Collega l'applicazione sull'edge all'endpoint Ollama e proteggi la sua API di gestione della cache.
Installa Spin CLI, Node.js e il plug-in aka prima di continuare.
Installa o aggiorna il plug-in di Akamai Functions:
spin plugins update
spin plugins install aka
L'applicazione utilizza due variabili di distribuzione:
- ollama_url connette l'applicazione all'API Ollama ospitata sulla GPU.
- secret_sauce protegge l'endpoint utilizzato per cancellare la cache della risposta.
Genera un valore casuale complesso per secret_sauce. Le richieste all'endpoint di gestione della cache devono fornire questo valore tramite l'intestazione HTTP X-SecretSauce.
Non inserire token, segreti o credenziali degli endpoint di produzione nel repository.
Esegui l'applicazione Spin localmente utilizzando lo stesso back-end di inferencing remoto.
Avvia l'applicazione e inserisci le variabili richieste:
spin up --build \
--variable ollama_url="http://<linode-ip>:11434" \
--variable secret_sauce="<strong-random-secret>"
Apri l'applicazione locale nel browser e invia un messaggio di prova.
Verifica se:
- Il chatbot restituisce una risposta generata da un modello.
- La cronologia delle conversazioni rimane durante la sessione.
- Le domande ripetute possono essere restituite dalla cache.
- Le richieste che violano i sistemi di protezione vengono rifiutate.
- Il browser non controlla né invia la cronologia completa delle conversazioni.
L'utilizzo del back-end Ollama remoto durante lo sviluppo locale consente di sottoporre a test il comportamento del modello senza richiedere una GPU locale.
Compila l'applicazione su WebAssembly e distribuiscila in Akamai Functions.
Prima della distribuzione, verifica che l'accesso ad Akamai Functions sia stato attivato per il tuo account. Se non è stato ancora approvato, richiedi l'accesso e continua con la build locale mentre la tua richiesta viene esaminata.
Effettua l'autenticazione con Akamai Functions:
spin aka login
Crea e distribuisci l'applicazione:
spin aka deploy --build \
--variable ollama_url="http://<linode-ip>:11434" \
--variable secret_sauce="<strong-random-secret>"
Dopo la distribuzione, apri l'URL dell'applicazione generato e invia una nuova domanda.
L'applicazione distribuita fornisce il front-end e l'API da Akamai Functions. Le richieste vengono verificate sull'edge prima che l'applicazione controlli l'archivio chiave-valore o contatti il back-end di inferencing della GPU.
Verifica che l'elaborazione sull'edge riduca l'invio di richieste non necessarie al modello.
Prova l'applicazione con domande nuove e ripetute.
Per una nuova domanda, l'applicazione:
- Verifica il messaggio in arrivo.
- Applica i sistemi di protezione di input e argomenti.
- Carica la cronologia della sessione.
- Controlla la cache della risposta.
- Invia la richiesta a Ollama se non esiste alcuna risposta memorizzata nella cache.
- Memorizza la risposta per le richieste future.
- Aggiorna la cronologia della sessione.
Per una domanda ripetuta equivalente, l'applicazione può restituire la risposta memorizzata nella cache direttamente dall'edge senza utilizzare un altro ciclo di inferencing della GPU.
Al termine dei test, rimuovi l'infrastruttura che non è più necessaria:
cd infrastructure
terraform destroy
Le risorse della GPU dedicate continuano a generare addebiti finché non vengono eliminate.
Domande frequenti (FAQ)
Domande frequenti (FAQ)
Il modello open source viene fornito da Ollama su un'istanza dell'Akamai Cloud con una GPU NVIDIA dedicata. Il modello non viene eseguito all'interno di Akamai Functions.
L'applicazione Spin è compilata per WebAssembly per consentire un avvio rapido, un solido isolamento dei carichi di lavoro e l'implementazione nell'infrastruttura edge distribuita di Akamai.
L'applicazione normalizza ogni domanda e controlla la presenza di una risposta esistente nell'archivio chiave-valore di Akamai Functions. Un riscontro nella cache restituisce la risposta salvata senza inviare un'altra richiesta alla GPU.
La cronologia delle conversazioni viene memorizzata sul lato server nell'archivio chiave-valore di Akamai Functions e associata a un identificatore di sessione in un cookie sicuro. Il campione limita la cronologia a 20 messaggi.
Il campione controlla la presenza di attacchi di prompt injection, pivot di richieste secondarie e richieste di generazione del codice. Inoltre, limita la lunghezza del messaggio e utilizza un prompt di sistema per mantenere le risposte all'interno del dominio previsto dell'applicazione.
Sì. Puoi cambiare il modello Ollama attraverso la configurazione dell'infrastruttura, in base ai requisiti di hardware e memoria del modello.
L'offerta è valida solo per i servizi cloud idonei. I servizi dedicati della GPU sono esclusi, quindi prima di eseguire il provisioning del progetto, esamina le condizioni promozionali attuali.
Sì. L'API TypeScript utilizza LangChain.js e un endpoint compatibile con Ollama per consentire di estendere il contesto statico presente nel campione con un caricatore di documenti, un dispositivo di recupero dati e un archivio vettoriale.
Esegui il comando terraform destroy dopo aver completato il progetto e verifica che l'istanza della GPU e le risorse associate siano state eliminate dal proprio account.