Budgeting fix

e8b972042553b27fbce73cb9377067ebaeebc965

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

1 files changed, +5 -3Showing whitespace changes
public/scripts/openai.js+5 -3
@@ -727,18 +727,20 @@ async function populateChatHistory(messages, prompts, chatCompletion, type = nul
727727
728728 if (toolCalling && Array.isArray(chatPrompt.invocations)) {
729729 /** @type {import('./tool-calling.js').ToolInvocation[]} */
730730 const invocations = chatPrompt.invocations.slice().reverse();
731731 const toolCallMessage = new Message('assistant', undefined, 'toolCall-' + chatMessage.identifier);
732732 toolCallMessage.setToolCalls(invocations);
733733 if (chatCompletion.canAfford(toolCallMessage)) {
734- for (const invocation of invocations) {
734+ chatCompletion.reserveBudget(toolCallMessage);
735+ for (const invocation of invocations.slice().reverse()) {
735736 const toolResultMessage = new Message('tool', invocation.result, invocation.id);
736737 const canAfford = chatCompletion.canAfford(toolResultMessage) && chatCompletion.canAfford(toolCallMessage);
737738 if (!canAfford) {
738739 break;
739740 }
740741 chatCompletion.insertAtStart(toolResultMessage, 'chatHistory');
741742 }
743+ chatCompletion.freeBudget(toolCallMessage);
742744 chatCompletion.insertAtStart(toolCallMessage, 'chatHistory');
743745 }
744746 }