From 8f0d0a0d033a42e0e508713bff3afdcf889901fe Mon Sep 17 00:00:00 2001 From: lamcn1k9 <122329302+sanforex24h@users.noreply.github.com> Date: Sat, 22 Aug 2026 00:58:59 +0700 Subject: [PATCH] fix: strip unsupported message metadata for Groq (#11026) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⭐5 — Groq rejeita chat multi-turn quando mensagens de assistant carregam metadata não suportada (model/messageId/sender). stripGroqUnsupportedFields agora remove esses campos, preservando role/content/tool_calls. Fix pequeno e focado, teste novo cobrindo o caso. --- open-sse/config/providerFieldStrips.ts | 13 +++++++++++-- tests/unit/provider-field-strips.test.ts | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/open-sse/config/providerFieldStrips.ts b/open-sse/config/providerFieldStrips.ts index 74282febdc..7568cd80bd 100644 --- a/open-sse/config/providerFieldStrips.ts +++ b/open-sse/config/providerFieldStrips.ts @@ -56,12 +56,21 @@ export function stripGroqUnsupportedFields>(bo delete next.top_logprobs; if (Array.isArray(next.messages)) { next.messages = next.messages.map((m) => { - if (m && typeof m === "object" && "name" in m) { - const { name: _name, ...rest } = m as Record; + if (m && typeof m === "object") { + const { + name: _name, + model: _model, + messageId: _msgId, + sender: _sender, + ...rest + } = m as Record; + return rest; } + return m; }); } return next as T; } + diff --git a/tests/unit/provider-field-strips.test.ts b/tests/unit/provider-field-strips.test.ts index 5323683617..b136c6601b 100644 --- a/tests/unit/provider-field-strips.test.ts +++ b/tests/unit/provider-field-strips.test.ts @@ -53,3 +53,27 @@ test("stripGroqUnsupportedFields is immutable (does not mutate input)", () => { assert.equal(input.messages[0].name, "bob"); assert.equal(input.logprobs, true); }); + +test("stripGroqUnsupportedFields drops unsupported messages[].model and other metadata while keeping role and content", () => { + const out = stripGroqUnsupportedFields({ + messages: [ + { role: "user", content: "hello" }, + { + role: "assistant", + content: "hello!", + model: "groq/openai/gpt-oss-20b", + messageId: "msg_123", + sender: "assistant", + }, + ], + }); + assert.equal(out.messages.length, 2); + assert.equal(out.messages[0].role, "user"); + assert.equal(out.messages[0].content, "hello"); + assert.equal(out.messages[1].role, "assistant"); + assert.equal(out.messages[1].content, "hello!"); + assert.equal("model" in out.messages[1], false); + assert.equal("messageId" in out.messages[1], false); + assert.equal("sender" in out.messages[1], false); +}); +