fix: discourage _noop tool call during LiteLLM compaction (#18539)
This commit is contained in:
@@ -176,6 +176,7 @@ export namespace SessionCompaction {
|
|||||||
const defaultPrompt = `Provide a detailed prompt for continuing our conversation above.
|
const defaultPrompt = `Provide a detailed prompt for continuing our conversation above.
|
||||||
Focus on information that would be helpful for continuing the conversation, including what we did, what we're doing, which files we're working on, and what we're going to do next.
|
Focus on information that would be helpful for continuing the conversation, including what we did, what we're doing, which files we're working on, and what we're going to do next.
|
||||||
The summary that you construct will be used so that another agent can read it and continue the work.
|
The summary that you construct will be used so that another agent can read it and continue the work.
|
||||||
|
Do not call any tools. Respond only with the summary text.
|
||||||
|
|
||||||
When constructing the summary, try to stick to this template:
|
When constructing the summary, try to stick to this template:
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -199,11 +199,19 @@ export namespace LLM {
|
|||||||
input.model.providerID.toLowerCase().includes("litellm") ||
|
input.model.providerID.toLowerCase().includes("litellm") ||
|
||||||
input.model.api.id.toLowerCase().includes("litellm")
|
input.model.api.id.toLowerCase().includes("litellm")
|
||||||
|
|
||||||
|
// LiteLLM/Bedrock rejects requests where the message history contains tool
|
||||||
|
// calls but no tools param is present. When there are no active tools (e.g.
|
||||||
|
// during compaction), inject a stub tool to satisfy the validation requirement.
|
||||||
|
// The stub description explicitly tells the model not to call it.
|
||||||
if (isLiteLLMProxy && Object.keys(tools).length === 0 && hasToolCalls(input.messages)) {
|
if (isLiteLLMProxy && Object.keys(tools).length === 0 && hasToolCalls(input.messages)) {
|
||||||
tools["_noop"] = tool({
|
tools["_noop"] = tool({
|
||||||
description:
|
description: "Do not call this tool. It exists only for API compatibility and must never be invoked.",
|
||||||
"Placeholder for LiteLLM/Anthropic proxy compatibility - required when message history contains tool calls but no active tools are needed",
|
inputSchema: jsonSchema({
|
||||||
inputSchema: jsonSchema({ type: "object", properties: {} }),
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
reason: { type: "string", description: "Unused" },
|
||||||
|
},
|
||||||
|
}),
|
||||||
execute: async () => ({ output: "", title: "", metadata: {} }),
|
execute: async () => ({ output: "", title: "", metadata: {} }),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user