Tool Calling: Reserve prompt budget for tool definitions.

b0d0f2111b69a3d9561278bbcd3cbc6fdefad414

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +9 -0Showing whitespace changes
public/scripts/openai.js+9 -0
@@ -998,6 +998,15 @@ async function populateChatCompletion(prompts, chatCompletion, { bias, quietProm
998998 chatCompletion.insert(Message.fromPrompt(prompt), 'main', prompt.position);
999999 }
10001000
1001+ // Pre-allocation of tokens for tool data
1002+ if (ToolManager.canPerformToolCalls(type)) {
1003+ const toolData = {};
1004+ await ToolManager.registerFunctionToolsOpenAI(toolData);
1005+ const toolMessage = [{ role: 'user', content: JSON.stringify(toolData) }];
1006+ const toolTokens = tokenHandler.count(toolMessage);
1007+ chatCompletion.reserveBudget(toolTokens);
1008+ }
1009+
10011010 // Add in-chat injections
10021011 messages = populationInjectionPrompts(absolutePrompts, messages);
10031012