Skip to content

Commit 1bb84f0

Browse files
authored
Merge pull request #1391 from WolframResearch/bugfix/prompt-templates
Bugfix: Fixed `TemplateObject[...]` usage in "Prompts"
2 parents 4aad51a + 59fe88e commit 1bb84f0

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

Source/Chatbook/ChatMessages.wl

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ $ContextAliases[ "tokens`" ] = "Wolfram`LLMFunctions`Utilities`Tokenization`";
1818
Chatbook::InvalidMessageList = "The value `1` is not a valid list of chat messages.";
1919
Chatbook::InvalidChatSettings = "The value `1` is not a valid chat settings specification.";
2020
Chatbook::InvalidExcludedBasePrompts = "The value `1` is not a valid list of excluded base prompts.";
21+
Chatbook::InvalidPromptComponent = "Expected a string or list of strings instead of `1`.";
2122

2223
(* ::**************************************************************************************************************:: *)
2324
(* ::Section::Closed:: *)
@@ -407,10 +408,11 @@ assembleCustomPrompt0[ settings_, prompt_String ] := prompt;
407408
assembleCustomPrompt0[ settings_, prompts: { ___String } ] := StringRiffle[ prompts, "\n\n" ];
408409

409410
assembleCustomPrompt0[ settings_? AssociationQ, templated: { ___, _TemplateObject, ___ } ] := Enclose[
410-
Module[ { params, prompts },
411-
params = ConfirmBy[ Association[ settings, $ChatHandlerData ], AssociationQ, "Params" ];
412-
prompts = Replace[ templated, t_TemplateObject :> applyPromptTemplate[ t, params ], { 1 } ];
413-
assembleCustomPrompt0[ settings, prompts ] /; MatchQ[ prompts, { ___String } ]
411+
Module[ { params, prompts, validated },
412+
params = ConfirmBy[ Association[ settings, $ChatHandlerData ], AssociationQ, "Params" ];
413+
prompts = Replace[ templated, t_TemplateObject :> applyPromptTemplate[ t, params ], { 1 } ];
414+
validated = ConfirmMatch[ checkPromptComponent /@ prompts, { ___String }, "Validated" ];
415+
assembleCustomPrompt0[ settings, validated ]
414416
],
415417
throwInternalFailure
416418
];
@@ -452,12 +454,21 @@ applyPromptTemplate // beginDefinition;
452454

453455
applyPromptTemplate[ template_TemplateObject, params_Association ] :=
454456
If[ FreeQ[ template, TemplateSlot[ _String, ___ ] ],
455-
TemplateApply @ template,
456-
TemplateApply[ template, params ]
457+
TemplateApply @ replaceCellContext @ template,
458+
TemplateApply[ replaceCellContext @ template, params ]
457459
];
458460

459461
applyPromptTemplate // endDefinition;
460462

463+
(* ::**************************************************************************************************************:: *)
464+
(* ::Subsubsection::Closed:: *)
465+
(*checkPromptComponent*)
466+
checkPromptComponent // beginDefinition;
467+
checkPromptComponent[ prompt_String ] := prompt;
468+
checkPromptComponent[ prompts: { ___String } ] := StringJoin @ prompts;
469+
checkPromptComponent[ other_ ] := throwFailure[ "InvalidPromptComponent", other ];
470+
checkPromptComponent // endDefinition;
471+
461472
(* ::**************************************************************************************************************:: *)
462473
(* ::Subsection::Closed:: *)
463474
(*makeChatMessages*)

0 commit comments

Comments
 (0)