API OpenAI: chat.completions e streaming
Client OpenAI, lista messages, ruoli system/user/assistant, streaming con stream=True
API OpenAI: chat.completions e streaming è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Presentazione dell'SDK Python di OpenAI
Il pacchetto Python openai è il modo ufficiale per comunicare con modelli OpenAI come GPT-4o. Lo installi con pip install openai per ottenere un'unica classe client OpenAI che gestisce autenticazione, nuovi tentativi e costruzione delle richieste.
Ogni chiamata effettuata passa attraverso questo client, quindi crearlo una volta e riutilizzarlo è il pattern standard.
pip install openai
from openai import OpenAICreazione del client
Istanziare il client con OpenAI(). Per impostazione predefinita, legge la chiave dalla variabile d'ambiente OPENAI_API_KEY, mantenendo i segreti fuori dal codice sorgente.
È anche possibile passare esplicitamente la chiave, ma per le applicazioni in produzione l'approccio consigliato consiste nell'usare le variabili d'ambiente.
from openai import OpenAI
# Reads OPENAI_API_KEY from the environment
client = OpenAI()
# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")La lista messages
I modelli conversazionali si basano su una lista di messaggi. Ogni messaggio è un dizionario con un role e un content. I tre ruoli principali sono system (istruzioni), user (la persona) e assistant (il modello).
Questa lista costituisce l'intero contesto della conversazione che il modello vede a ogni chiamata.
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
]La prima completion
Chiami client.chat.completions.create() specificando un model e i Suoi messages. Il testo della risposta si trova in response.choices[0].message.content.
L'API restituisce un elenco di scelte, ma nel normale utilizzo si legge la prima.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(response.choices[0].message.content)Controllare l'output con i parametri
Due parametri determinano la risposta: temperature (0 = deterministico, valori più alti = maggiore creatività) e max_tokens (limita la lunghezza della risposta). Temperature più basse sono adatte alle attività fattuali; quelle più alte al brainstorming.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.2,
max_tokens=300
)Perché usare lo streaming
Senza streaming, deve attendere l'intera risposta prima di visualizzare qualsiasi contenuto. Con lo streaming, i token arrivano man mano che vengono generati, così un'interfaccia può mostrare il testo in tempo reale, come fa ChatGPT.
Lo abiliti con stream=True: il valore restituito passa da un singolo oggetto a un iteratore.
Abilitare lo streaming
Passi stream=True a create(). Invece di una risposta completa, ora riceve un generatore che produce chunk man mano che il modello li genera.
stream = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)Iterare sui chunk
Iteri sullo stream. Ogni chunk contiene una parte del testo in chunk.choices[0].delta.content. I chunk iniziali e finali possono contenere None in quel punto, quindi verifichi il valore prima di stamparlo.
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta is not None:
print(delta, end="", flush=True)Comprendere delta e message
In una risposta normale si legge message.content (l'intera risposta). In uno stream si legge delta.content (solo la nuova parte). La parola delta significa «la variazione» rispetto al chunk precedente.
Concatenando tutti i delta si ricostruisce il messaggio completo.
full_text = ""
for chunk in stream:
piece = chunk.choices[0].delta.content or ""
full_text += piece
print("\nFinal:", full_text)Conversazioni a più turni
Per continuare una conversazione, aggiunga la risposta dell'assistant a messages e poi aggiunga il messaggio successivo dell'user. Il modello è stateless, quindi è Lei a mantenere la cronologia.
messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})
follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)Esaminare l'uso dei token
Le risposte non trasmesse in streaming includono un oggetto usage con prompt_tokens, completion_tokens e total_tokens. Questo consente di monitorare e preventivare il costo dell'API, poiché la fatturazione avviene per token.
print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)Verifica rapida
Verifichi la Sua comprensione dello streaming.
Riepilogo: Chat Completions e streaming
Ha imparato a creare un client OpenAI, costruire un elenco messages con i ruoli system/user/assistant e chiamare chat.completions.create(). Ha imparato a leggere le risposte normali da choices[0].message.content.
Con stream=True può iterare sui chunk e leggere delta.content per ottenere l'output in tempo reale, mantenere la cronologia aggiungendo le risposte e monitorare il costo tramite l'oggetto usage.
Domande Frequenti
La lezione «API OpenAI: chat.completions e streaming» è gratuita?
Sì — il testo completo di «API OpenAI: chat.completions e streaming» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «API OpenAI: chat.completions e streaming»?
Client OpenAI, lista messages, ruoli system/user/assistant, streaming con stream=True Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «API OpenAI: chat.completions e streaming»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- API OpenAI: chat.completions e streaming
- API Anthropic Claude in Python
- Function calling e utilizzo degli strumenti con gli LLM
- Prompt engineering per app LLM in produzione