OpenAILanguageModel replays tool-call arguments as GeneratedContent's Codable form, not JSON
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Il bug si trova nel caso .toolCalls della conversione del transcript in Sources/AnyLanguageModel/Models/OpenAILanguageModel.swift, dove JSONEncoder().encode(call.arguments) scrive la forma Codable di GeneratedContent. Controlla la variante .responses, che legge lo stesso messaggio, e confronta con OpenResponsesLanguageModel, che usa call.arguments.jsonString. È completato quando gli argomenti di tool_calls riprodotti sono JSON semplice come {"query":...} nei messages della seconda richiesta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
OpenAILanguageModel replays earlier tool calls with their arguments encoded by GeneratedContent's Codable conformance instead of as plain JSON. On the next turn the model sees arguments like:
{"kind":{"type":"structure","properties":{"query":{"kind":{"type":"string","value":"Apple stock 2026"}}},"orderedKeys":["query"]}}
instead of {"query":"Apple stock 2026"}. Models then copy that shape in their own new tool calls, the arguments don't match the tool's schema, and decoding them throws LanguageModelSession.ToolCallError, which ends the response.
Where
Sources/AnyLanguageModel/Models/OpenAILanguageModel.swift, in the .toolCalls case of the transcript conversion (line 1369 at 0.16.0, line 1374 on main / 1.0.0):
if let data = try? JSONEncoder().encode(call.arguments),
let jsonString = String(data: data, encoding: .utf8)
GeneratedContent.encode(to:) writes id and kind, so this isn't the arguments' JSON. The .responses variant converts from the same message, so it's affected too. OpenResponsesLanguageModel already does it correctly with call.arguments.jsonString.
Suggested fix
let argumentsJSON = call.arguments.jsonString
Reproduce
LanguageModelSessionwithOpenAILanguageModel(Chat Completions) and any tool.- Ask something that makes the model call the tool, then ask a follow-up in the same session.
- Inspect the second request's
messages: the assistanttool_calls[].function.argumentshold the{"kind":…}encoding.
Impact we measured
Benchmarking 4 models over 11 multi-turn conversations through the Vercel AI Gateway (Chat Completions): Gemini 4 Argon and Claude Haiku 5.5 each produced follow-up tool calls in the {"kind":…} shape (decoded as empty arguments, or failing to decode), which ended the reply. Claude Sonnet 5.5 happened to ignore it.
Seen on 0.16.0; the line is unchanged on main (1.0.0).
- Lingua principale
- Swift
- Stelle
- 944
- Fork
- 95
- Merge medio
- 18h 38m
- PR unite (30g)
- 56
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di huggingface/AnyLanguageModel
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 50/100
huggingface/AnyLanguageModel#326 ·
I maintainer di solito rispondono entro 1 giorno
-
Support the Gemini Interactions API in GeminiLanguageModelForse già presa @rizwankce l’ha presa 6 giorni fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
huggingface/AnyLanguageModel#302 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
huggingface/AnyLanguageModel#291 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
huggingface/AnyLanguageModel#210 · 5 commenti · 3 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
huggingface/AnyLanguageModel#114 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di huggingface/AnyLanguageModel
Issue simili
-
fyi-ecosystem platform-ios team-ios
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
flutter/flutter#194348 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
freestylefly/WeChatBridge#44 ·
I maintainer di solito rispondono entro 1 giorno
-
Doesn't compile on WindowsAperta
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
swiftwasm/JavaScriptKit#818 ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
capawesome-team/capacitor-plugins#1134 ·
I maintainer di solito rispondono entro 1 giorno