La rivoluzione nell'industria dell'IA si è ancora una volta manifestata con impatto straordinario durante il DevDay di OpenAI dello scorso 6 novembre. Tra le numerose nuove funzionalità presentate, l'Assistants API è emerso come il colpo da novanta.
Immagina un'intelligenza artificiale dotata di istruzioni, capace di sfruttare modelli, strumenti e conoscenze per rispondere alle domande degli utenti. L'Assistants API attualmente supporta tre tipi di strumenti: Interpretazione del Codice, Recupero e Chiamata di Funzioni.
Durante il DevDay, Sam Altman ha messo in luce come la realizzazione di queste funzionalità agentiche fosse possibile in passato, ma richiedeva spesso ingegnerizzazione complessa, l'utilizzo di librerie di terze parti e, francamente, non garantiva sempre risultati affidabili. Ora, combinando interpretazione del codice, recupero e chiamata di funzioni, possiamo costruire agenti di intelligenza artificiale direttamente tramite l'API GPT.
In questa guida, esploreremo come iniziare a sfruttare questa nuova capacità basata sulla documentazione dell'Assistants API, includendo:
E non finisce qui. Ci immergeremo in dettaglio, fornendo non solo istruzioni passo dopo passo, ma anche esempi pratici e scenari d'uso che renderanno questo viaggio nell'Assistants API un'esperienza avvincente per programmatori esperti e appassionati che desiderano esplorare il futuro dell'IA.
Se sei interessato a vedere la registrazione dell' OPENAI DevDAY ti mettimao il video qui sotto
Perché OpenAI ha rilasciato l'API degli assistenti
Il rilascio dell'API degli assistenti da parte di OpenAI è stato motivato da una crescente esigenza nel settore dell'intelligenza artificiale di semplificare il processo di costruzione di agenti intelligenti. Questa mossa ha avuto un impatto significativo, poiché ha reso accessibili agli sviluppatori strumenti avanzati e modelli di IA per creare agenti con istruzioni specifiche e capacità uniche.
Come funzionano gli Assistants API
Prima di immergerci nel codice, è essenziale comprendere a livello generale la costruzione sull'Assistants API, poiché coinvolge diversi elementi innovativi.
Iniziamo con i passaggi e le definizioni per creare un Assistente:
Definire un Assistente: Un Assistente è un'intelligenza artificiale progettata con uno scopo specifico che utilizza modelli, istruzioni e strumenti.
Creare un Thread: Un Thread rappresenta il flusso di una conversazione avviata da un utente, al quale possono essere aggiunti messaggi, dando vita a una sessione interattiva.
Aggiungere Messaggi: I Messaggi contengono l'input testuale dell'utente e possono includere testo, file e immagini.
Esecuzione dell'Assistente: Infine, avviamo l'Assistente per elaborare il Thread, chiamare determinati strumenti se necessario e generare la risposta appropriata.
Questo processo si rivela fondamentale nel comprendere come costruire e interagire con gli assistenti AI tramite l'API di OpenAI. Nei prossimi passi, affronteremo dettagliatamente ciascuna fase, illustrando esempi pratici e scenari applicativi per consentire ai nostri lettori di comprenderne appieno l'efficacia e l'applicabilità pratica.
ora possiamo iniziare con il Tutorial in italiano su Open-AI Assistants API con python
Assistants API 1: Interprete del Codice
Ora che abbiamo compreso i passaggi e le definizioni di base, costruiamo un semplice Assistente che utilizza l'Interprete del Codice.
Prima di costruire l'Assistente, per utilizzare queste nuove funzionalità importiamo OpenAI leggermente diversamente rispetto a prima:
from openai import OpenAI
client = OpenAI()
Passo 1: Creare un Assistants API
In questo esempio, costruiremo un Assistente tutor di machine learning con le seguenti istruzioni:
«Sei un assistente che aiuta con i problemi di codifica del machine learning. Scrivi, esegui e spiega il codice per rispondere alle domande».
Puoi anche notare che abbiamo abilitato lo strumento code_interpreter:
assistant = client.beta.assistants.create(
name="Aiuto per Codice ML",
instructions="Sei un assistente che aiuta con i problemi di codifica del machine learning. Scrivi, esegui e spiega il codice per rispondere alle domande.",
tools=[{"type": "code_interpreter"}],
model="gpt-4-1106-preview"
)
Passo 2: Creare un Thread
Successivamente, creiamo un Thread per l'Assistente nel seguente modo:
thread = openai.beta.threads.create()
La cosa interessante riguardo ai Threads è che non hanno un limite di dimensione, il che significa che puoi passare qualsiasi numero di Messaggi che desideri.
Se ricordi con la precedente API di GPT-4, la creazione di "conversazioni" veniva realizzata concatenando le risposte dell'utente e dell'assistente. Questo non solo comportava costi API significativi, ma si esauriva rapidamente lo spazio limite dei token dopo poche conversazioni... ma ora:
L'API garantirà che le richieste al modello rientrino nella finestra di contesto massima, utilizzando tecniche di ottimizzazione rilevanti come la troncatura.
Se stampiamo il thread, vedremo che è vuoto al momento, quindi aggiungiamo dei messaggi.
Passo 3: Aggiungere Messaggi a un Thread
Possiamo ora aggiungere dei Messaggi al nostro Thread. In questo caso, formulerò una domanda relativamente comune che uno studente potrebbe porre riguardo al machine learning:
«Quando cerco di calcolare il costo per la mia regressione lineare, ottengo un 'ValueError: operands could not be broadcast together with shapes (100,) (100,1)'. Ecco la parte in cui si verifica l'errore: cost = (1/(2*m)) * np.sum(np.square(y_pred - y)). Potresti aiutarmi a capire perché sta succedendo questo?»
L'utente sta chiedendo aiuto con il suo codice Python per una funzione di costo della regressione lineare
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="Quando cerco di calcolare il costo per la mia regressione lineare, ottengo un 'ValueError: operands could not be broadcast together with shapes (100,) (100,1)'. Ecco la parte in cui si verifica l'errore: `cost = (1/(2*m)) * np.sum(np.square(y_pred - y))`. Potresti aiutarmi a capire perché sta succedendo questo?"
)
Ora vediamo un nuovo oggetto ThreadMessage con la domanda dell'utente.
Passo 4: Eseguire l'Assistants API
Siamo pronti per creare una Run, che farà girare l'Assistente sul Thread per generare risposte e chiamare automaticamente gli strumenti rilevanti.
Ciò consente all'Assistente di leggere il Thread e decidere se chiamare gli strumenti o semplicemente utilizzare il modello per rispondere nel modo migliore alla richiesta dell'utente.
Dopo aver deciso quali strumenti utilizzare, l'assistente aggiunge Messaggi al thread con il ruolo="assistant".
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Per favore, spiega la soluzione in modo semplice in modo che l'utente possa imparare da essa."
)
Possiamo vedere che lo stato della Run è inizialmente in coda e quindi attraversa il ciclo di vita della Run:
Ora lo stato potrà essere nelle seguenti fasi :
Passo 5: Mostrare la Risposta dell'Assistants API
Successivamente, possiamo recuperare la Run per verificare se è stata completata nel seguente modo:
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
Una volta completata, procediamo a recuperare i messaggi dell'Assistente che sono stati aggiunti al thread:
messages = openai.beta.threads.messages.list(
thread_id=thread.id
)
Successivamente, mostriamo il ruolo e il contenuto del messaggio dell'Assistente:
assistant_response = messages.data[0].content[0].text.value
Questa operazione ci consentirà di visualizzare la risposta fornita dall'Assistente e capire come ha gestito la richiesta dell'utente, fornendo una spiegazione chiara e dettagliata della soluzione al problema di codice della regressione lineare.
Assistants API 2: Knowledge Retrieval
Come evidenziato nella documentazione dello strumento di Recupero delle Conoscenze:
Il Recupero arricchisce l'Assistente con conoscenze provenienti dall'esterno del suo modello, come informazioni su prodotti proprietari o documenti forniti dagli utenti. Se hai seguito i nostri tutorial precedenti su embedding e ricerca vettoriale, ora tutto questo viene gestito nativamente all'interno dell'API GPT.
Per questo esempio, iniziamo con l'app AI classica: chattare con i PDF.
Analogamente al nostro primo assistente, possiamo seguire questi passaggi per realizzarlo:
Caricare file per il recupero
Creare un Assistente di recupero
Creare un thread e aggiungere messaggi
Eseguire l'assistente Mostrare la risposta
Questo rende più fluido il testo e offre una panoramica chiara dei passaggi che verranno affrontati per creare un assistente di recupero basato su documenti PDF.
Passo 1: Carica file per il recupero
Diamo il via caricando un PDF su OpenAI impostando lo scopo su assistenti. Per questo esempio, utilizzeremo il celebre articolo Attention Is All You Need:
# Carica un file con uno scopo "assistenti"
file = client.files.create(
file=open("/content/attention.pdf", "rb"),
purpose='assistants'
)
Se controlliamo la sezione dei file nella piattaforma OpenAI, troveremo l'elenco dei file caricati:
Passo 2: Crea un Assistente di Recupero
Iniziamo creando un nuovo assistente con istruzioni semplici per il recupero. Dovremo anche specificare il recupero nei parametri degli strumenti dopo aver caricato i file:
# Aggiungi il file all'assistente
assistant = client.beta.assistants.create(
instructions="Sei un assistente per il recupero delle conoscenze. Utilizza la tua base di conoscenza per rispondere al meglio alle domande degli utenti.",
model="gpt-4-1106-preview",
tools=[{"type": "retrieval"}],
file_ids=[file.id]
)
Passo 3: Crea un thread e aggiungi messaggi
Successivamente, creiamo un nuovo Thread:
thread = client.beta.threads.create()
Quindi possiamo aggiungere messaggi e file al nostro thread, in questo caso chiedo semplicemente di riassumere l'abstract dell'articolo e passo l'id del file:
message = client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="Riassumi l'abstract dell'articolo.",
file_ids=[file.id]
)
Passo 4: Esegui l'assistente
Ora, avendo sia il messaggio che il file nel nostro Thread, possiamo far girare il Thread con il nostro Assistente:
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
)
Dopo averlo eseguito, ci vorrà uno o due minuti per completare il ciclo di vita dell'esecuzione.
Passo 5: Visualizza la risposta
Dopo che lo stato dell'esecuzione è completo, possiamo recuperare le risposte come segue:
messages = client.beta.threads.messages.list(
thread_id=thread.id
)
Ora, accediamo alla risposta dell'assistente che contiene il riassunto dell'abstract in questo modo:
assistant_response = messages.data[0].content[0].text.value
Il quale, come possiamo vedere, restituisce:
"L'abstract dell'articolo presenta il Transformer, una nuova architettura di rete progettata per compiti di trasduzione di sequenze basata esclusivamente sui meccanismi di attenzione e non si basa su reti neurali ricorrenti o convoluzionali..."
Tieni presente che possiamo anche aggiungere annotazioni a queste risposte, ma ne parleremo in un futuro articolo.
Conclusioni su come Iniziare con l'Assistants API e Python
In questa guida abbiamo esplorato due degli strumenti integrati che gli Assistenti possono utilizzare: Code Interpreter e Knowledge Retrieval. Già posso vedere che il recupero migliorato con la generazione (RAG) sarà notevolmente semplificato con questa capacità integrata di embedding e ricerca vettoriale.
Naturalmente, questa è una guida introduttiva, quindi è importante notare alcune cose:
Interprete del Codice e Recupero: Possiamo anche combinare questi due strumenti per creare un interprete del codice su dati specifici, ad esempio un assistente per la visualizzazione dei dati CSV.
Chiamata di Funzioni: Gli Assistenti hanno anche accesso alla chiamata di funzioni, che può essere utilizzata per collegare l'Assistente a API esterne o alle nostre funzioni. Si tratta di un argomento più ampio, che affronteremo in un articolo dedicato molto presto.
Queste prossime settimane e mesi saranno sicuramente interessanti da seguire mentre gli agenti di intelligenza artificiale cominciano a diffondersi nella nostra vita quotidiana.
Vorresti saperne di più su come integrare gli Assistants API nel tuo progetto, business o sito web? Offriamo consulenze gratuite per applicare concretamente l'IA nella tua attività. Prenota subito una consulenza gratuita qui: Consulenza Gratuita sull'Applicazione dell'IA.
Unisciti a noi mentre trasformiamo l'IA da un concetto in qualcosa di reale e tangibile per il tuo successo!
Comments