Vai al contenuto

Analisi pratica di LiteLLM 1.103.5: tool call nel bridge Responses, choices[0], indici multipli, compatibilità client, limiti del backport e checklist di aggiornamento.

L’ANALISI

LiteLLM 1.103.5 corregge le tool call perse nel bridge Responses

Analisi pratica di LiteLLM 1.103.5: tool call nel bridge Responses, choices[0], indici multipli, compatibilità client, limiti del backport e checklist di aggiornamento.

4 min di letturaFatti, limiti e fonti primarie
Pagina ufficiale GitHub della release LiteLLM v1.103.5 con le note sul bridge Responses
La pagina ufficiale della release LiteLLM v1.103.5 documenta il backport che ricompone testo e tool call nel primo risultato del bridge Responses.

In breve: LiteLLM 1.103.5 evita che un agente ignori una chiamata a strumento quando una risposta della Responses API contiene più messaggi prima della function call. Il bridge ora restituisce un solo `choices[0]` con testo e tool call insieme e assegna indici 0, 1 e successivi alle chiamate multiple. È una patch operativa per chi usa endpoint Chat Completions davanti a provider instradati sulla Responses API.

Il difetto corretto nella linea stabile

Dalla versione 1.97.0 una risposta bridged con più elementi poteva diventare più scelte separate. La prima conteneva testo e `finish_reason: stop`, mentre la tool call finiva in una scelta successiva. Molti framework agentici leggono soltanto `choices[0]` e quindi proseguivano senza eseguire lo strumento.

Come cambia la forma della risposta

La patch unisce i messaggi testuali, conserva reasoning e annotazioni, sposta correttamente gli offset delle citazioni e inserisce le tool call nella stessa scelta con `finish_reason: tool_calls`. Il percorso streaming era già concentrato sull’indice zero e non è il centro della regressione.

Più strumenti senza collisione di indice

Nel secondo difetto due chiamate nello stesso turno potevano ricevere entrambe `tool_calls[].index: 0`. Un client che usa l’indice come chiave poteva sovrapporre risultati o argomenti. La conversione ora mantiene l’indice ricevuto, producendo 0, 1 e così via come il formato Chat Completions nativo.

Chi è direttamente interessato

Il rischio riguarda proxy LiteLLM che espongono `/v1/chat/completions` ma inoltrano la richiesta a un endpoint `/responses`, in particolare con modelli che emettono messaggi intermedi seguiti da una o più function call. I client che analizzano tutte le scelte possono aver mascherato il primo difetto, ma restano esposti alla collisione degli indici.

Compatibilità e possibile cambiamento osservabile

Dopo l’upgrade i chiamanti che si aspettavano più scelte dal bridge ne ricevono una sola ricomposta. Questo comportamento è più vicino alle aspettative dei framework agentici comuni, ma va verificato se codice interno leggeva esplicitamente `choices[1]`, separava commentary e risposta finale o applicava logiche proprie alle citazioni.

Cosa prova e cosa non prova il rilascio

I pull request includono casi riproducibili e test sul proxy per forme con messaggi multipli, reasoning e due tool call. Il backport riporta centinaia di test unitari superati, ma dichiara anche l’assenza, in quel momento, di una prova live finale sulla linea stabile con un deployment reale. Non è quindi una garanzia automatica per ogni provider e harness.

Condizioni e limitazioni

La correzione riguarda il bridge non-streaming e soprattutto i client che leggono solo `choices[0]` o associano i risultati tramite l’indice della tool call. Il pull request di backport dichiara test unitari completati, ma segnala che la prova live contro un proxy stabile e un deployment reale non era ancora stata eseguita; prima dell’upgrade servono quindi test di compatibilità sul proprio harness.

Checklist pratica

  • Registrare la versione LiteLLM attuale e verificare se il traffico Chat Completions viene convertito verso la Responses API.
  • Riprodurre un turno non-streaming con due messaggi intermedi e una tool call, controllando che tutto arrivi in `choices[0]`.
  • Provare due tool call nello stesso turno e verificare indici distinti 0 e 1, ID e argomenti completi.
  • Confrontare lo stesso scenario in streaming per escludere differenze nel parser del client.
  • Controllare codice che leggeva `choices[1]` o dipendeva da più scelte generate dal bridge.
  • Aggiornare prima in staging, conservare payload e log sanitizzati e predisporre il rollback alla versione precedente.
  • Eseguire almeno un test con il provider e il framework agentico realmente usati in produzione.

Fonti primarie

Radar AI · a cura di Francesco Gruner

Chiedi al sito.

Assistente OpenAI

Le domande vengono inviate a OpenAI. Non inserire dati personali o riservati. Privacy.

Verifica le risposte nelle fonti. 16 messaggi al giorno per rete.

Cosa cerchi? Ti indico le pagine utili.