La pila di ottimizzazione rapida

La pila di ottimizzazione veloce

Nota dell’editore: Mike Taylor parlerà a ODSC West dal 30 ottobre al 2 novembre. Assicurati di seguire il suo intervento, “Ottimizzazione del prompt con GPT-4 e Langchain.”

La differenza tra una persona comune che utilizza l’IA e un Ingegnere del Prompt è la sperimentazione. La maggior parte delle persone esegue un prompt 2-3 volte e trova qualcosa che funziona abbastanza bene. Gli Ingegneri del Prompt eseguono lo stesso prompt centinaia di volte, lo testano con altre varianti al fine di determinare con quale frequenza soddisfa i criteri di valutazione chiave, comporta un costo elevato o genera risposte indesiderate.

Il processo di ottimizzazione del prompt

Definisco l’ingegneria del prompt come “il processo di scoperta di prompt che producono in modo affidabile risultati utili o desiderati”, ed è la affidabilità che rappresenta la parte difficile. L’IA può quasi replicare l’intelligenza a livello umano in alcuni compiti, ma sfortunatamente sembra che una mancanza di affidabilità a livello umano sia un pacchetto insito nell’aumento dell’intelligenza.

Le risposte dei modelli generativi di IA hanno un elemento di casualità che non abbiamo mai visto nella programmazione di un computer. Potresti eseguire lo stesso prompt 100 volte e al 101° tentativo otterrai una risposta razzista, una risposta inventata o un completo fallimento nell’esecuzione del compito. Con l’aumento delle dimensioni dei modelli e la domanda di GPU, ottimizzare il prompt può farti risparmiare anche molti soldi.

Registrare questi casi eccezionali, eliminare token non necessari e testare come migliorare il prompt è un lavoro eccitante, soprattutto quando il settore si sta muovendo così velocemente. Nonostante la folle velocità dell’innovazione, ci sono alcuni strumenti standard che sto trovando sempre più convergenti nel tempo, che mi aiutano a testare A/B i prompt ed eseguirli su larga scala per capire quando e dove si rompono.

LangChain

Il processo di ottimizzazione del prompt

Molti ingegneri di IA hanno un rapporto di amore-odio con il framework open-source LangChain, e conosco diverse persone che l’hanno rimosso dal loro prodotto, solo per poi decidere di reinserirlo. Avere componenti standard è importante per un’industria, anche se lo standard può essere imperfetto.

Chiamate asincrone

Questo è qualcosa che non ho capito il valore, ma che ora uso tutto il tempo. Se esegui i prompt in modo seriale (uno dopo l’altro), può richiedere più di 10 minuti (ancora di più se ottieni un limite di velocità). Non mi aspettavo molto veloce da eseguirli in modo asincrono (tutti contemporaneamente), ma può essere fino a 6 volte più veloce! OpenAI può gestire più chiamate contemporaneamente, anche se ogni chiamata individuale richiede del tempo.

EVENTO – ODSC West 2023

Conferenza in Presenza e Virtuale

Dal 30 ottobre al 2 novembre

Unisciti a noi per un’immersione approfondita nelle ultime tendenze, strumenti e tecniche di data science e AI, dalle LLM all’analisi dei dati e dall’apprendimento automatico all’IA responsabile.

Logica di ripetizione

Ciò che mi piace particolarmente di LangChain è la sua logica di ripetizione integrata. In un’industria in cui il tempo è denaro, questa caratteristica è inestimabile. Se un prompt fallisce o produce risultati indesiderati, LangChain automatizza il processo di ripetizione, eliminando la necessità di intervento manuale. Questo è davvero essenziale quando si stanno eseguendo centinaia di chiamate, in particolare quando si fanno in modo asincrono. Senza questo, sarebbe completamente irrealizzabile, soprattutto considerando i problemi di affidabilità che affliggono il servizio.

Convenzione standard

LangChain aderisce alle pratiche di codifica standard del settore. Potrebbe sembrare una cosa scontata, ma sarebbe sorprendente quanti spesso venga trascurato nello sviluppo di intelligenza artificiale. L’uso delle convenzioni standard della libreria facilita l’integrazione con altri strumenti e servizi, e leggere la loro documentazione è come ottenere una laurea in ingegneria rapida. Come aspirante ingegnere rapido, questa è una delle poche competenze trasferibili che puoi imparare e che tutti riconoscono. Come datore di lavoro, conviene adottare un framework popolare anziché formare i nuovi dipendenti utilizzando una configurazione personalizzata.

Componenti astratti

Il punto di forza finale di LangChain è la capacità di astrarre le componenti dei tuoi compiti di ingegneria rapida. Ciò significa che puoi riutilizzare blocchi di codice per diversi progetti, semplificando il processo di sviluppo e aumentando l’efficienza. È come avere un set di mattoncini Lego in cui ogni blocco è compatibile e ha uno scopo. Abbstrarsi dal modello utilizzato e inserire le prompte in modelli standard è spesso il primo passo verso l’esecuzione di test su larga scala. All’inizio potrebbe sembrare oneroso eccessivo, ma fidati di me, ti ci abituerai.

LangSmith

Come ha detto Picasso, i buoni artisti non parlano di stile, tendenze e significato quando si riuniscono, parlano di dove acquistare un buon trementina. Per i buoni ingegneri di prompt, l’argomento è il logging, ecco perché non sorprende che il primo prodotto commerciale di LangChain (gratuito in versione beta) sia uno strumento di logging e valutazione.

Logging

LangSmith fornisce log dettagliati che catturano non solo l’output, ma anche metadati preziosi. Ciò ti consente di analizzare sia i successi che i fallimenti, e trarre insight che consentono di migliorare le tue promte. È simile a una scatola nera per i tuoi progetti di intelligenza artificiale, tutto viene annotato senza lasciare spazio all’ambiguità.

Debugging

Poiché hai tutto nei log, funge da potente strumento di debugging che ti consente di analizzare a fondo le risposte ai tuoi prompt. Questa funzione è fondamentale per capire il perché e il come di ogni output, aiutandoti a ottimizzare le future iterazioni. Io tengo sempre questa funzione attivata esattamente per questo motivo, perché se vedo qualcosa di strano posso dare un’occhiata senza dover eseguire infiniti statement di stampa.

Risultati dei test

Una caratteristica interessante è la possibilità di incorporare risultati e metriche di valutazione dei test. Questi non sono solo gradi di successo o fallimento; forniscono analisi approfondite delle metriche di performance di ciascun prompt, inclusa la valutazione automatica delle metriche. Questo è strettamente integrato con LangChain (come ci si aspetterebbe), quindi puoi utilizzare qui tutte le valutazioni standard di LangChain.

Dati di affinamento

LangSmith ti consente quindi di prendere i dati dei prompt valutati e trasformarli in un formato utile per l’affinamento di un modello personalizzato, quando sei pronto a passare da OpenAI. Puoi allenare i modelli di intelligenza artificiale in base alle tue esigenze specifiche, assicurando che i prompt siano mirati in modo preciso agli obiettivi del tuo progetto, e a un costo inferiore.

GPT-4

Il modello all’avanguardia GPT-4 di OpenAI è quello a cui tendo solitamente quando lavoro su un nuovo compito. Ultimamente tendo ad utilizzare di più il Playground, perché il mio ChatGPT è influenzato dalle Istruzioni Personalizzate e voglio ottenere una visione imparziale.

Migliore qualità

Anche se LangChain ti permette di omettere quale modello stai usando, c’è un modello che si eleva sopra gli altri. GPT-4 è il punto di riferimento per la generazione di linguaggio naturale, senza ombra di dubbio. Che tu stia cercando di scrivere email, codice o persino il tuo prossimo piano di marketing, GPT-4 offre un livello qualitativo di output senza precedenti. Ho visto risposte così coerenti e pertinenti al contesto da poter facilmente passare per testi scritti da un essere umano.

Latenza lenta

Ora, per il problema – latenza. La complessità del GPT-4 comporta un compromesso in velocità. Se stai cercando di eseguire prompt su larga scala, potrebbe essere un collo di bottiglia. Per me, questo è come avere una Lamborghini bloccata nel traffico – è fantastica, ma non viene utilizzata appieno. Questa considerazione è significativa per i progetti che richiedono una responsività in tempo reale. Questo è uno dei pochi motivi per cui passo a Claude di Anthropic.

Il più costoso

La qualità ha un prezzo. Letteralmente. Le risorse computazionali richieste per generare le risposte dal GPT-4 possono rapidamente inflazionare i costi. Se sei una startup con un budget limitato, o anche un’azienda che vuole scalare, questa è una sfida inevitabile. Tuttavia, dati i suoi poteri, spesso scoprirai che il ROI giustifica il costo. In alcuni casi potrebbe essere meglio testare su GPT-3.5-turbo (che è più propenso a mostrare errori), individuare tutte le imperfezioni e occupartene, per poi passare a GPT-4.

Spesso non affidabile

Nonostante il GPT-4 offra un’ottima prestazione, non è privo di inconvenienti operativi. Il servizio può essere frustrantemente inconsistente; è soggetto a tempi di inattività e a limitazioni casuali del tasso di utilizzo. Questa imprevedibilità può essere più di un inconveniente; può interrompere un progetto quando si è sotto pressione, ed è una considerazione seria per tutti coloro che stanno creando prodotti LLM. Ci sono soluzioni come passare a un modello inferiore quando si è soggetti a limitazioni di utilizzo, e la logica di riprova di LangChain aiuta, ma non possiamo aspettare che l’industria maturi tutti insieme.

IPyWidgets

Questa semplice libreria open-source è essenzialmente il modo più rapido possibile per creare un’interfaccia. Funziona in Jupyter Notebooks, che, a dir la verità, è dove trascorrono la maggior parte del tempo i data scientist e gli ingegneri di prompt, e in questo modo ti costringe a non rimandare spostando i pixel sullo schermo per ottenere il design perfetto.

Interfaccia del notebook

La libreria basata sui notebook di IPyWidget è un modo comodo per creare rapidamente un’interfaccia. Quando l’ho presentata al mio socio fondatore, mi ha chiesto “perché abbiamo bisogno di un’interfaccia se siamo abbastanza esperti da leggere e modificare il codice?” La risposta è che anche il programmatore più appassionato si stanca di editare testo tutto il giorno, e qualcosa di visuale è meno gravoso per il cervello. Certo, potresti farlo dalla riga di comando o da un foglio di calcolo, ma i computer hanno interfacce grafiche per un motivo.

Stile minimalista

La libreria opta per uno stile minimalista, mettendo l’accento sulla funzionalità. Questo approccio ti tiene concentrato su ciò che conta davvero: ottimizzare i tuoi prompt e script senza distrazioni. In un’epoca di tecnologia troppo sofisticata e design eccessivo, la semplicità viene spesso trascurata. Questo va dritto al punto. Puoi sempre progettare una bella interfaccia React successivamente se hai bisogno di coinvolgere utenti non tecnici.

Funziona in Python

La compatibilità con Python e Jupyter Notebooks è una grande vittoria per me, perché penso in codice Python. È davvero un lavoro fastidioso dover uscire da Python e passare a Typescript e React per progettare un’interfaccia accattivante, solo per creare una demo e verificare se qualcosa funziona. Python è la lingua franca del mondo dell’AI, quindi ha senso avere un’interfaccia che si integra senza problemi con il resto del codice che hai scritto.

Visualizza HTML

Non sei limitato ai widget predefiniti, puoi anche visualizzare HTML, il che apre un’ampia gamma di ciò che puoi mostrare. Molto spesso inserisco tabelle e grafici nei widget e li formato come desidero. Per l’ottimizzazione dei prompt, ciò significa visualizzare i risultati del test inline, subito dopo aver terminato la valutazione.

Pandas

L’Excel del mondo Python, molte carriere nel data science sono state avviate grazie a una buona conoscenza di Pandas. Nessuna delle analisi per l’ingegnerizzazione dei prompt è particolarmente complessa, quindi non hai bisogno di nulla di più sofisticato di questo.

Tabelle pivot

Pandas rende estremamente semplice creare tabelle pivot, che ti permettono di vedere velocemente quali varianti di prompt stanno ottenendo risultati migliori secondo le tue metriche di valutazione. Le tabelle pivot in Pandas possono aiutarti a identificare pattern e tendenze, offrendo un approccio basato sui dati alla creazione di prompt.

Filtri

Grazie alle sue robuste capacità di filtraggio, Pandas ti permette di tagliare e dare forma ai tuoi dati come un chef stellato Michelin. Che tu stia cercando di identificare quali componenti dei prompt hanno avuto il miglior tasso di successo, tempo di risposta o qualsiasi altra metrica, i filtri personalizzati ti consentono di ottenere dettagli specifici e scoprire intuizioni che potrebbero sfuggire facilmente.

Metriche di valutazione

Ciò che viene misurato viene gestito. Pandas ti permette di eseguire funzioni su qualsiasi colonna del tuo dataframe e creare nuove colonne basate sull’output. Ciò ti consente di inserire qualsiasi metrica di valutazione desideri nei dati, rendendo più facile lavorare con metriche di performance definite in modo programmato.

Esportazione in formato CSV

Pandas offre anche una semplice funzione di esportazione in formato CSV, permettendoti di condividere le tue intuizioni su diverse piattaforme o con membri del team. Pandas può essere considerato come il “Excel di Python”, ma spesso è comodo avere questi dati direttamente in Excel, e questa funzione lo rende facile.

Bonus: Thumb

Thumb è la libreria open-source che ho sviluppato per l’ottimizzazione e il testing dei prompt, che incorpora tutto quanto sopra. Ho iniziato a riutilizzare così spesso gli stessi componenti che ho pensato avesse senso racchiuderli in un modulo, rilasciandolo come open-source per consentire ad altri di trarne vantaggio e contribuire.

Testing asincrono e caching

Thumb va oltre il semplice prompting grazie alle sue funzionalità di testing asincrono e caching. Il testing asincrono permette di eseguire simultaneamente più test sui prompt, riducendo il tempo necessario per l’ottimizzazione. La funzione di caching, invece, memorizza ogni risultato, riducendo l’uso di token non necessari nel caso in cui un test venga interrotto o fallisca per qualche motivo. Questo è il motivo principale per cui ho deciso di creare Thumb, perché ero stanco di vedere un test fallire a metà strada e doverlo ripetere da zero interamente!

Integrazione LangChain e LangSmith

Ovviamente Thumb è stato interamente costruito utilizzando i componenti di LangChain, quindi ottieni tutta la potenza della logica di retrial senza dover gestire personalmente la formattazione. La configurazione del logging con LangSmith è semplice come una singola variabile d’ambiente: LANGCHAIN_API_KEY. Se desideri aggiungere funzionalità aggiuntive o personalizzarlo, essendo open-source puoi semplicemente consultare il codice sorgente e apportare modifiche, estendendolo per gestire altri componenti chiave di LangChain.

Interfaccia IPyWidgets

Thumb è iniziato come uno strumento interno semplice che ho utilizzato per essere più efficiente nel mio lavoro, e ho cercato di mantenere questa semplicità. Ciò significa che puoi rapidamente utilizzare l’interfaccia utente semplice in un notebook Jupyter, valutare una serie di prompt e quindi esportare i dati per l’analisi. Anche se non dispone di un link condivisibile da condividere con i membri del team, l’attenzione si concentra sull’80% del lavoro che avviene nel mezzo, tra la creazione del primo prompt e l’ottimizzazione prima che venga messo in produzione. Una volta in produzione, ci sono molti strumenti disponibili, come prodigy o brat, per l’etichettatura e la valutazione delle risposte dell’apprendimento automatico.

Conclusioni

Anche se le cose potrebbero cambiare, stanno emergendo alcuni leader precoci e beneficiari dell’onda dell’IA. Anche se questi strumenti potrebbero non essere i vincitori finali, saranno un punto di riferimento inevitabile per ciò che verrà. Imparare ad utilizzare questi strumenti oggi ti aiuterà a prepararti per un futuro nell’IA.

Potrai vedermi sul palco all’evento OSDC West 2023, dove terrò una presentazione dal titolo “Ottimizzazione dei prompt con GPT-4 e LangChain.” Eseguirò un test reale utilizzando questa combinazione per mostrarti come ottimizzare i tuoi prompt. Se sei interessato a ricevere più informazioni sull’Engineering dei Prompt da parte mia, puoi dare un’occhiata al mio corso su Udemy o vedere un’anteprima del mio libro con O’Reilly.

Riguardo all’autore

Mike è un marketer tecnico basato sui dati che ha costruito un’agenzia di marketing di 50 persone (Ladder) e 300.000 persone hanno seguito i suoi corsi online (LinkedIn, Udemy, Vexpower). Attualmente lavora come freelance su progetti di IA generativa e sta scrivendo un libro su Prompt Engineering per O’Reilly Media.