Con la popolarità raggiunta in questi ultimi tempi dall’Intelligenza Artificiale Generativa molte aziende hanno iniziato a chiedersi come utilizzarla e quale ne sia la profittabilità economica ma soprattutto in cosa poterla applicare. Questo, in buona parte, dipende da come vogliamo che essa entri negli scenari aziendali.

Si potrebbe immaginare di integrarla nei normali processi produttivi della propria azienda, per esempio, utilizzando motori di intelligenza artificiale generativa integrati nelle suite da ufficio o nei software gestionali che si utilizzano regolarmente. Questo però dipende principalmente dalla capacità da parte dei produttori di integrare tali nuove funzionalità all’interno di piattaforme già esistenti.

In altri casi, si tratta di inventare servizi nuovi o,  per lo meno, creare servizi che implementino un qualcosa di già esistente  sfruttando motori alimentati da Intelligenza Artificiale Generativa.

In quest’ultimo caso, dimostrano particolare utilità le API (Application Programming Interface) ovvero librerie di funzionalità con cui possiamo interagire mediante un linguaggio di programmazione. Queste, in generale, sono un pattern comune a tutti i campi dell’Informatica e permettono di far interagire un programma che stiamo sviluppando con un altro sistema complesso esistente – ad esempio, un sistema operativo, una piattaforma web, un ambiente Cloud – conoscendone il minimo degli aspetti interni ma avendo presenti i dettagli del dialogo mediante API.

Le API che vengono offerte da OpenAI offrono la possibilità di fornire delle domande al motore di IA generativa  per ottenere risposte da sfruttare all’interno di un nostro programma: pertanto l’integrazione nel software di tali funzionalità avanzate che creiamo diventa estremamente semplice ed offre risultati di gran lunga soddisfacenti.

Possiamo immaginare, ad esempio, un servizio di assistenza interattiva con la clientela alla quale possiamo offrire supporto tecnico ricevendo domande dai nostri utenti, inserendole tramite API nel motore di Intelligenza Artificiale Generativa e ottenendo delle risposte da restituire.

Tecnicamente, il tutto è stato reso di utilizzo molto comodo ma un aspetto  molto importante con cui è necessario familiarizzare, sin dalla fase iniziale, è quello economico ovvero la gestione dei costi. Tali API infatti –  come molto spesso le API di valore – vengono offerte non a titolo gratuito.  Comprenderne le politiche di pricing è assolutamente basilare per integrarle in un business ma per farlo dobbiamo partire da un concetto fondamentale, l’unità minima di informazione trattata: il token.

I prezzi delle API di OpenAI e il concetto di token

Le logiche di pricing che caratterizzano le API di OpenAI si allineano perfettamente con quello che un progettista o sviluppatore moderno può aspettarsi.  Seguono  la logica tipica delle piattaforme Cloud ovvero che il pagamento è in proporzione a ciò che si utilizza,  sintetizzabile con il motto Pay as you go.   Il pagamento così dipenderà dall’impiego che se ne è fatto delle API e questo, a sua volta, sarà direttamente collegato con la tipologia di servizio e le funzionalità offerte all’utente finale.

Iniziando ad esplorare il sito principale del progetto, viene subito spiegato chiaramente che il prezzo applicato è sempre riferito a mille token ove un token è una porzione di parola.  Tale suddivisione dipenderà quindi, nel dettaglio, dalle operazioni che si stanno svolgendo, dalla lingua e da altri aspetti sebbene venga anche specificato che, mediamente, 750 parole possono essere considerate il corrispondente adeguato di mille token.

Quando si deciderà di applicare le API, per prima cosa, sarà necessario scegliere qual è il motore che vorremo utilizzare. Ciò dipende dai nostri scopi, potremo infatti utilizzare delle API di Intelligenza Artificiale Generativa per la creazione di contenuti,  immagini, traduzioni ed altro ancora e, per ognuno di questi, ne esisteranno delle versioni diverse.

Per ogni motore la pagina di pricing della documentazione esprime chiaramente quali sono le politiche di prezzo.  L’unità di misura principale è il token e su questo concetto, più avanti, faremo un interessante approfondimento.  Qualsiasi sia il motore che scegliamo, per l’interazione con la piattaforma, avremo un prezzo espresso in alcuni centesimi di dollaro per un corrispettivo di mille token.

Da questo appare evidente che i primi fattori che dovremo considerare nell’impostazione del nostro sistema che dovrà interagire con un motore di Intelligenza Artificiale Generativa saranno:

  •  la scelta del motore stesso;
  •  la versione del modello;
  •  la gestione dei token sia in input sia in output.

Un esempio pratico

Per prima cosa però vediamo queste API al lavoro per toccare con mano le loro grandi potenzialità. Faremo un piccolo programma in Python in cui eseguire quello che, tra gli esempi didattici, può essere considerato l’Hello world delle API di OpenAI: un’interazione con un utente in cui quest’ultimo potrà immettere una domanda che noi sottoporremo al motore di OpenAI.

I passaggi da seguire sono:

  • registrarsi presso il sito di OpenAI e creare una propria chiave;
  • preparare l’ambiente di sviluppo con l’installazione della libreria Python openai;
  • scrivere il codice basato sulla libreria appena nominata autorizzando l’interazione con le API con la chiave del punto 1.

Più precisamente per la registrazione su OpenAI e la creazione della chiave, ci colleghiamo al sito del progetto, forniamo i dati che ci vengono richiesti ed andiamo a creare una chiave seguendo il menù in alto a destra alla voce View API keys.

Fatto ciò andiamo nel nostro ambiente di lavoro Python preferito ed installiamo la libreria con:


pip install openai

e ci prepariamo a scrivere il nostro programma che chiameremo testopenapi.py:

# importiamo la libreria
import openai

# inseriamo la nostra chiave generata su OpenAI
openai.api_key="...."

# scegliamo il modello
engine = "text-davinci-003"

# permettiamo all'utente di inserire una domanda
domanda=input("Domanda: ")

# chiediamo una risposta a OpenAI
response = openai.Completion.create(
engine = engine,
prompt = domanda,
temperature = 0.3,
max_tokens = 200,
)

# stampiamo la risposta di OpenAI
print(response.choices[0].text)

Passiamo subito a vedere cosa fa il nostro programma per saggiare con mano la potenza di queste API. Proviamo in una sessione di lavoro a chiedere suggerimenti su cosa cucinare con zucchine e ricotta:

$ python testopenapi.py
Domanda: una ricetta con zucchine e ricotta

Torta salata con zucchine e ricotta

Ingredienti:

- 2 zucchine
- 250 g di ricotta
- 2 uova
- 100 g di parmigiano grattugiato
...

Vediamo che abbiamo ottenuto un effetto sorprendente considerato il poco codice scritto. Eppure il risultato non ci è stato offerto completo. Infatti qui la risposta è stata tagliata da noi per ragioni di spazio ma anche quella intera era stata interrotta dalle API in quanto, tra i parametri indicati per ottenere la risposta, avevamo inserito un max_tokens=200 che specificava quanti token intendevamo ottenere (e pagare) con l’interazione.

Al fine di poter rendere queste API profittevoli e non solo divertenti da usare è importante quindi comprendere bene questo concetto di token ed imparare a misurarli.

Comprendere e “misurare” i token

Come detto in precedenza tutte queste API vengono fatturate in dollari corrispondenti a migliaia di token come si evince dalla pagina del Pricing, sempre raggiungibile dal menù citato prima e di cui mostriamo uno stralcio nella figura seguente:

openaiapi_img_01

Familiarizzare con i token è possibile grazie a librerie e servizi specifici che permettono di renderci conto di  qual è il numero di token che una nostra richiesta o risposta nel prompt sta ricevendo.

Questo è utile sia in fase di studio e quindi di approccio a questa tecnologia sia per comprenderne la profittabilità nel caso le si voglia impiegare al centro di un nostro servizio.

Uno di questi strumenti è il cosiddetto Tiktokenizer che può essere sperimentato come servizio online.

Come si vede in questo esempio:

openaiapi_img_02

abbiamo inserito una domanda all’interno del prompt da compilare sulla sinistra mentre in alto a destra è presente l’indicazione del modello da utilizzare (in questo caso text-davinci-003)

Fatto ciò, sulla destra è apparso lo stesso messaggio, scritto come input da noi, con i caratteri evidenziati singolarmente o a gruppi.

Ecco, ogni segmento di un colore diverso rappresenta un token: il messaggio testuale viene suddiviso in dodici segmenti colorati diversi e sopra infatti appare il numero 12 riferito ai token in cui può essere partizionato il testo.

Notiamo subito che un token non corrisponde necessariamente ad una singola parola nè ad una lettera sempre ma la sua lunghezza varia. Ci sono casi in cui equivale ad una vocale come ‘i’ e ‘o’, in altri raccoglie un simbolo come ‘?’ oppure prende l’intera radice di un termine che potrebbe essere il fattor comune di molti altri verbi o sostantivi come ‘princip’ o ‘monument’.

Questo sistema può essere utilizzato anche sotto forma di libreria per poterlo integrare in programmi. Ad esempio, in Python, possiamo eseguire lo stesso esperimento che abbiamo visto qui ma in modalità interattiva.

Installiamo una delle librerie esistenti per farlo:

pip install tiktoken

e scriviamo il codice necessario:


# importiamo la libreria necessaria
import tiktoken

# impostiamo codifica e modello
enc = tiktoken.get_encoding("p50k_base")
enc = tiktoken.encoding_for_model("text-davinci-003")

# otteniamo i singoli token
frase="quali sono i principali monumenti di Roma?"

res=[enc.decode_single_token_bytes(token) for token in enc.encode(frase)]

# stampa dei risultati
print(res)
print(f'{len(res)} token in tutto')

Il risultato che si ottiene dall’esecuzione è del tutto in linea con ottenuto dallo strumento on-line e mostrato nella figura precedente:

$ python testtiktoken.py
[b'qu', b'ali', b' son', b'o', b' i', b' princip', b'ali', b' monument', b'i', b' di', b' Roma', b'?']
12 token in tutto

Avere uno strumento di questo genere non solo ci aiuta a capire quanto può essere oneroso l’uso di tali API ma ci fa pensare a quanto possa essere facile inserire calcoli di questo tipo in strumenti automatici di preventivazione dei costi.

Conclusioni

Come ogni tecnologia rivoluzionaria, le API di OpenAI aprono scenari estremamente interessanti ed in questo caso, oseremmo dire, quasi visionari. Le macchine sembrano assumere ancora più coscienza rispetto a quanto ci hanno abituato e profetizzano sviluppi che sanno molto di fantascienza.

E’ facile in questo caso iniziare ad immaginare servizi che possano farne uso ma come ogni tecnologia interattiva comprenderne le politiche di costo ed acquisire una maggiore capacità di pianificazione in merito è fondamentale.

I principi di cui abbiamo parlato in questo articolo possono fornirci utili indicazioni per partire in questo splendido viaggio ma considerando che queste non sono altro che alcune delle API che OpenAI offre non siamo che all’inizio della nostra avventura.