1. Costruzione delle Richieste API

1.1 Invio delle Richieste Usando CURL

CURL è uno strumento da riga di comando che supporta l'invio e la ricezione di dati utilizzando vari protocolli come HTTP e HTTPS. Per inviare una richiesta all'API di OpenAI usando CURL, è necessario prima avere una chiave API valida e quindi aggiungerla all'intestazione della richiesta.

Ecco un esempio di un comando CURL utilizzato per inviare una richiesta all'API di OpenAI:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Dì che questa è una prova!"}],
     "temperature": 0.7
   }'

È necessario sostituire $OPENAI_API_KEY con la propria chiave API. Per motivi di sicurezza, evitare di esporre la propria chiave API in qualsiasi contesto pubblico.

1.2 Analisi degli Intestazioni della Richiesta

Nel comando CURL sopra, abbiamo utilizzato due intestazioni cruciali della richiesta: Content-Type e Authorization.

  • Content-Type: Questo informa il server che stiamo inviando dati in formato JSON. Il suo valore è tipicamente application/json.
  • Authorization: Questa è la credenziale utilizzata per autenticare la richiesta API, e il suo formato è sempre Bearer (tua chiave API).

Garantire la correttezza di queste due intestazioni è fondamentale per il successo della richiesta.

1.3 Costruzione del Corpo della Richiesta

Il corpo della richiesta è una stringa formattata in JSON che informa OpenAI sulle nostre intenzioni. In questa richiesta, utilizziamo model per specificare il modello che stiamo utilizzando, passiamo un array messages che definisce l'input dell'utente, e impostiamo un temperature per regolare la variabilità della risposta.

Il JSON appare così:

{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Dì che questa è una prova!"}],
  "temperature": 0.7
}

In questo esempio, stiamo richiedendo al modello di generare una risposta di prova basata sul messaggio di input.

1.4 Spiegazione Dettagliata dei Parametri della Richiesta

All'interno del corpo della richiesta, ci sono diversi parametri importanti da notare:

  • model: Specifica il modello di intelligenza artificiale che intendiamo utilizzare. OpenAI fornisce molti modelli, ognuno con diverse funzionalità ed effetti.
  • messages: Questo è un array contenente uno o più oggetti di messaggio, con ciascun messaggio che consiste in un role che fornisce il ruolo del messaggio e content che rappresenta il contenuto del messaggio.
  • temperature: Controlla la certezza della risposta. Un temperature più basso genera risposte più certe, mentre un valore più alto porta a più casualità.

2. Analisi delle Risposte dell'API

2.1 Comprensione della Risposta

Quando si invia una richiesta, il server restituirà un codice di stato HTTP e eventualmente un corpo della risposta. Tipicamente, una richiesta riuscita riceverà un codice di stato della serie 200. I dati JSON restituiti contengono il risultato della richiesta, e un esempio di risposta è il seguente:

{
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677858242,
    "model": "gpt-3.5-turbo-1106",
    "usage": {
        "prompt_tokens": 13,
        "completion_tokens": 7,
        "total_tokens": 20
    },
    "choices": [
        {
            "message": {
                "role": "assistente",
                "content": "\n\nQuesta è una prova!"
            },
            "logprobs": null,
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

In questa risposta, possiamo vedere l'ID di completamento, il timestamp di creazione, il modello utilizzato, l'uso dei token e il contenuto effettivo della risposta (nel campo choices).

2.2 Completezza e Gestione degli Errori

Il campo finish_reason indica perché l'API ha smesso di produrre altro contenuto. I motivi comuni per la terminazione includono stop, length e idle. Se si verifica un errore, come superare i limiti dei token o una chiave API incorretta, si riceverà il messaggio di errore corrispondente e il codice di stato. È importante gestire questi errori in modo appropriato per garantire la continuità dell'esperienza dell'utente e la stabilità dell'applicazione. Per la gestione degli errori, è possibile decidere una strategia di gestione degli errori appropriata in base al codice di stato restituito e al messaggio di errore, come ripetere la richiesta o fornire feedback all'utente spiegando il motivo dell'errore.

2.3 Invio delle richieste API utilizzando Python SDK

Di seguito è riportato un esempio di utilizzo dell'SDK ufficiale di OpenAI in Python per effettuare chiamate API.

Innanzitutto, è necessario installare la libreria openai, che può essere fatta utilizzando pip:

pip install --upgrade openai

Successivamente, è possibile utilizzare il seguente codice Python per effettuare una richiesta API simile all'esempio sopra. Ricorda di sostituire YOUR_OPENAI_API_KEY con la tua chiave API.

from openai import OpenAI

client = OpenAI(
   api_key="YOUR_OPENAI_API_KEY",
)

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "Sei un assistente di sviluppo professionale, esperto nel risolvere vari problemi di programmazione."},
    {"role": "user", "content": "Scrivi una funzione per quicksort in Go."}
  ]
)

print(completion.choices[0].message)