Home → Assistenza
socket hang up a metà di una risposta in streaming
La connessione TCP è stata chiusa prima che lo stream finisse. Nulla nel contenuto dice chi l'ha chiusa, quindi la distinzione che ti serve è se è arrivato un finish_reason: senza, considera la risposta incompleta e non metterla in cache.
Cosa vedi
Error: socket hang upECONNRESET / read ECONNRESETaiohttp.ClientPayloadError: Response payload is not completedThe text stops mid-sentence with no finish_reason
Perché succede
Gli stream lunghi attraversano più infrastruttura delle richieste brevi: la tua rete, eventuali proxy, il bordo della rete del provider e l'host del modello. Un timeout di inattività in qualsiasi punto di questa catena chiude la connessione, e il client lo segnala come reset e non come errore HTTP, perché la risposta HTTP era già iniziata con un 200.
Le reti mobili e la sospensione del portatile producono la stessa firma. Così come un load balancer con un timeout di inattività più breve del tempo di riflessione del modello, ed è per questo che i modelli di ragionamento ci incappano più di quelli veloci.
Uno stream che termina con un finish_reason corretto e poi dà errore è un'altra cosa: la risposta è completa ed è fallita solo la chiusura. Quella si può usare tranquillamente.
Come risolvere
- Usa finish_reason come segnale di completamentoNon considerare «lo stream è finito» come un successo. Segna una risposta come completa solo se è arrivato un finish_reason; altrimenti ritenta o mostrala come troncata.
- Ritenta la richiesta, non lo streamIn una risposta in streaming non esiste un punto di ripresa. Ritenta dall'inizio, idealmente con un max_tokens più basso così il tentativo successivo finisce prima.
- Alza insieme i timeout del client e del proxyAlzare solo il timeout del client non serve se un proxy davanti chiude prima. Entrambi devono superare la risposta più lenta che ti aspetti.
Uno stream che muore a metà viene comunque addebitato per i token generati: il lavoro è stato fatto. Il log di utilizzo di APICLAN mostra esattamente quanti, ed è così che distingui una risposta finita a metà da una che non è mai iniziata.
Articoli correlati
Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway
compatibile con OpenAI in produzione, non raccolto da altri siti.