diff --git a/Source/Chatbook/ChatMessages.wl b/Source/Chatbook/ChatMessages.wl index db0df095..d3838659 100644 --- a/Source/Chatbook/ChatMessages.wl +++ b/Source/Chatbook/ChatMessages.wl @@ -467,6 +467,14 @@ tokenCheckedMessage[ tokenCheckedMessage[ as, message ] /; MatchQ[ message, KeyValuePattern[ "Content" -> _String ] ] ]; +tokenCheckedMessage[ + as_, + message0: KeyValuePattern @ { "Content" -> Except[ _String ] } +] /; ! $countImageTokens := + With[ { message = revertMultimodalContent @ message0 }, + tokenCheckedMessage[ as, message ] /; MatchQ[ message, KeyValuePattern[ "Content" -> _String ] ] + ]; + tokenCheckedMessage[ as_Association, message_ ] /; $cellStringBudget === Infinity := message; tokenCheckedMessage[ as_Association, message_ ] := Enclose[ diff --git a/Source/Chatbook/ChatModes/Context.wl b/Source/Chatbook/ChatModes/Context.wl index 41bad7c5..b1d98ca5 100644 --- a/Source/Chatbook/ChatModes/Context.wl +++ b/Source/Chatbook/ChatModes/Context.wl @@ -238,7 +238,8 @@ getContextFromSelection[ chatNB_, nbo_NotebookObject, settings0_Association, opt $notebookInstructionsPrompt = OptionValue[ "NotebookInstructionsPrompt" ], $maxCellsBeforeSelection = OptionValue[ "MaxCellsBeforeSelection" ], $maxCellsAfterSelection = OptionValue[ "MaxCellsAfterSelection" ], - $notebookMetadataString = getNotebookMetadataString @ nbo + $notebookMetadataString = getNotebookMetadataString @ nbo, + $countImageTokens = countImageTokensQ @ settings0 }, Module[ { settings, selectionData, string }, settings = ConfirmBy[ downScaledSettings @ settings0, AssociationQ, "Settings" ]; @@ -304,6 +305,17 @@ getContextFromSelection0[ selectionData_Association, settings_ ] := Enclose[ getContextFromSelection0 // endDefinition; +(* ::**************************************************************************************************************:: *) +(* ::Subsubsection::Closed:: *) +(*countImageTokensQ*) +countImageTokensQ // beginDefinition; +countImageTokensQ[ settings_ ] := countImageTokensQ[ settings, allowedMultimodalRoles @ settings ]; +countImageTokensQ[ settings_, All ] := True; +countImageTokensQ[ settings_, "System" ] := True; +countImageTokensQ[ settings_, { ___, "System", ___ } ] := True; +countImageTokensQ[ settings_, roles_ ] := False; +countImageTokensQ // endDefinition; + (* ::**************************************************************************************************************:: *) (* ::Subsubsection::Closed:: *) (*getNotebookMetadataString*) diff --git a/Source/Chatbook/CommonSymbols.wl b/Source/Chatbook/CommonSymbols.wl index e62bfc59..e691bbdd 100644 --- a/Source/Chatbook/CommonSymbols.wl +++ b/Source/Chatbook/CommonSymbols.wl @@ -19,10 +19,10 @@ BeginPackage[ "Wolfram`Chatbook`Common`" ]; `$chatState; `$cloudEvaluationNotebook; `$cloudInlineReferenceButtons; -`$notebookAssistanceExtraInstructions; `$contextPrompt; `$conversionRules; `$corePersonaNames; +`$countImageTokens; `$CurrentCell; `$currentChatSettings; `$currentSettingsCache; @@ -60,6 +60,7 @@ BeginPackage[ "Wolfram`Chatbook`Common`" ]; `$multimodalMessages; `$nextTaskEvaluation; `$noSemanticSearch; +`$notebookAssistanceExtraInstructions; `$notebookEditorEnabled; `$openToolCallBoxes; `$preferencesScope;