Funzioni di ChatGPT Osservazioni, Consigli e Trucchi

Funzioni di ChatGPT' - Functions of ChatGPT 'Osservazioni, Consigli e Trucchi' - Observations, Tips, and Tricks

Le funzioni di ChatGPT recentemente introdotte rappresentano un enorme passo avanti che consente a ChatGPT di utilizzare i tuoi file locali, i dati e i servizi di sistema. Quindi, se fornisci a ChatGPT le funzioni adeguate, puoi chiedergli qualcosa come “Invia un’email a Kate Bell con gli auguri di compleanno” e vedere comparire un nuovo messaggio di posta elettronica con l’indirizzo email corretto, l’oggetto corretto e il testo dell’email generato con i migliori auguri di compleanno.

Abbastanza fantastico, vero?

Ho trascorso del tempo a sperimentare con le funzioni di ChatGPT e vorrei condividere alcune note, osservazioni, suggerimenti e trucchi.

ChatGPT può chiamare alcune funzioni nell’ordine corretto per una singola richiesta. E può utilizzare i risultati di una funzione per formare i parametri di un’altra. Ad esempio, se chiedi a ChatGPT: “Qual è il meteo nella mia posizione attuale?”, chiamerà prima la funzione “ottenere la posizione attuale” e successivamente chiamerà la funzione “ottenere il meteo attuale” con le informazioni sulla posizione appena ottenute. Quindi, i risultati di diverse chiamate di funzione per una richiesta possono contribuire a formare una risposta.

ChatGPT può chiamare la stessa funzione diverse volte o anche indefinitamente per una singola richiesta. A volte ripete la chiamata alla funzione quando non riesce a ottenere il risultato desiderato; altre volte continua a chiamare la funzione senza una ragione chiara. Pertanto, è meglio avere un limite interno nel tuo codice per evitare che la tua applicazione si blocchi improvvisamente in qualche punto.

Non è ancora chiaro quale valore una funzione di ChatGPT dovrebbe restituire per indicare un errore o “nessun risultato” (NULL). Se una funzione non restituisce nulla, ma ChatGPT si aspetta un risultato, potrebbe continuare a chiedere chiamando la stessa funzione più volte. Molto spesso, restituire <NESSUNO>, <ERRORE>, <NULLO>, ecc. aiuta; a volte no.

A volte ChatGPT può essere abbastanza intelligente da chiamare una funzione di backup se non è esplicitamente definita una funzione adatta. Ad esempio, se chiedi: “Qual è il meteo nella mia posizione attuale?”, ma non definisci la funzione “ottenere il meteo attuale”, ChatGPT potrebbe chiamare la funzione “ottenere i contenuti del sito” (se definita) e recuperare i dati meteorologici da un sito come il Weather Channel. È davvero fantastico, ma ricorda che i contenuti del sito possono essere molto pesanti e vengono conteggiati come traffico di token, quindi può essere costoso.

In genere, ChatGPT è abbastanza bravo a individuare e chiamare funzioni corrette e fornire argomenti validi per le chiamate. Tuttavia, devi considerare e aspettarti che ChatGPT chiami funzioni inappropriate con valori non validi come argomenti. Ciò può essere causato da allucinazioni, da incorporamenti simili o semplicemente da bug. Dovresti considerare ChatGPT come un operatore umano che a volte può inserire dati errati nei moduli sbagliati. Pertanto, chiedi sempre il permesso all’utente prima di eseguire operazioni distruttive, sensibili, costose o su larga scala.

Ogni chiamata di funzione in ChatGPT richiede un commit aggiuntivo dell’intera conversazione insieme ai risultati della funzione. Pertanto, potrebbe essere utile pensare a progettare funzioni meno universali e complesse rispetto a micro-funzioni più universali per ridurre il numero di chiamate di funzione e risparmiare i tuoi token di traffico. Ad esempio, oltre alle funzioni “ottenere la posizione attuale” e “ottenere il meteo attuale”, potresti avere una funzione più ampia “ottenere il meteo nella mia posizione” che verrà chiamata solo una volta.

È possibile specificare alcuni parametri di una funzione di ChatGPT come facoltativi. Tuttavia, molto spesso, ChatGPT non è abbastanza intelligente e non riesce a fornire nemmeno valori ovvi per tali parametri facoltativi. Ma se rendi tali parametri obbligatori, scoprirai che ChatGPT può essere abbastanza inventivo nel fornire valori più o meno corretti.

Potrebbe essere utile avere un modo per limitare le funzioni che puoi utilizzare per conversazione. Ciò può contribuire a ridurre il traffico di token (tutte le definizioni di funzioni fanno parte di ogni transazione) e limitare l’accesso a alcuni dati e funzioni sensibili.

Se vuoi esplorare alcune tecniche di hacking, puoi definire l’esigenza di chiamare la funzione “catch-all” come un messaggio di sistema, in modo che questa funzione venga chiamata ogni volta se non è esplicitamente definita una funzione adatta. La parte più difficile è trovare buone istruzioni per obbligare ChatGPT a compilare i parametri della funzione con informazioni utili. Ad esempio, per una query come “Dammi un’email di Kate Bell”, la funzione “catch-all” potrebbe essere chiamata passando “Kate Bell” come argomento. Il problema principale qui è che è molto difficile capire cosa significhi in modo chiaro un dato grezzo come “Kate Bell” (o “Boston, MA”) nel tuo codice, mentre ChatGPT sa chiaramente che il primo valore è un contatto e il secondo valore è una posizione. Quindi, immagino che l’utilizzo principale di una funzione “catch-all” del genere sia registrare tutte le funzioni che potrebbero mancare in base all’utilizzo effettivo della tua applicazione. In questo modo, otterresti un’idea di quali funzioni dovrebbero essere aggiunte per migliorare il funzionamento della tua app.

E infine, in alcuni casi rari, ChatGPT potrebbe chiamare funzioni “Python” non dichiarate con codice Python come argomenti. Pertanto, è possibile che il parsing degli argomenti possa fallire perché non sono stringhe JSON.