top of page

Open-AI Assistants API con python : Una guida completa

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.


Open-AI Assistants API con python : Una guida completa
Open-AI Assistants API con python : Una guida completa


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:


  1. Definire un Assistente: Un Assistente è un'intelligenza artificiale progettata con uno scopo specifico che utilizza modelli, istruzioni e strumenti.

  2. 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.

  3. Aggiungere Messaggi: I Messaggi contengono l'input testuale dell'utente e possono includere testo, file e immagini.

  4. Esecuzione dell'Assistente: Infine, avviamo l'Assistente per elaborare il Thread, chiamare determinati strumenti se necessario e generare la risposta appropriata.


Open-AI Assistants API con python : Una guida completa
Open-AI Assistants API con python : Una guida completa

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.


Open-AI Assistants API con python : Una guida completa
Open-AI Assistants API con python : Una guida completa


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.


Open-AI Assistants API con python : Una guida completa
Open-AI Assistants API con python : Una guida completa


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:


Open-AI Assistants API con python : Una guida completa
Open-AI Assistants API con python : Una guida completa

Ora lo stato potrà essere nelle seguenti fasi :

Guida completa sull'uso dell'OpenAI Assistants API con Python: scopri le potenzialità dei tool di interpretazione del codice e di recupero delle conoscenze. Creiamo assistenti AI con funzioni, consigli e esempi. Programmatori e appassionati, questa è la tua porta verso l'IA!
Guida completa sull'uso dell'OpenAI Assistants API con Python: scopri le potenzialità dei tool di interpretazione del codice e di recupero delle conoscenze. Creiamo assistenti AI con funzioni, consigli e esempi. Programmatori e appassionati, questa è la tua porta verso l'IA!


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:


  1. Caricare file per il recupero

  2. Creare un Assistente di recupero

  3. Creare un thread e aggiungere messaggi

  4. 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:

Open-AI Assistants API con python : Una guida completa
Open-AI Assistants API con python : Una guida completa


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!

Kommentare

Mit 0 von 5 Sternen bewertet.
Noch keine Ratings

Rating hinzufügen
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png