@@ -32,7 +32,12 @@ import {
32
32
ExtractedFStringParams ,
33
33
} from "./prompt.js" ;
34
34
import { ImagePromptTemplate } from "./image.js" ;
35
- import { TemplateFormat , parseFString } from "./template.js" ;
35
+ import {
36
+ ParsedTemplateNode ,
37
+ TemplateFormat ,
38
+ parseFString ,
39
+ parseMustache ,
40
+ } from "./template.js" ;
36
41
37
42
/**
38
43
* Abstract class that serves as a base for creating message prompt
@@ -495,13 +500,19 @@ class _StringImageMessagePromptTemplate<
495
500
} else if ( typeof item . text === "string" ) {
496
501
text = item . text ?? "" ;
497
502
}
498
- prompt . push ( PromptTemplate . fromTemplate ( text ) ) ;
503
+ prompt . push ( PromptTemplate . fromTemplate ( text , additionalOptions ) ) ;
499
504
} else if ( typeof item === "object" && "image_url" in item ) {
500
505
let imgTemplate = item . image_url ?? "" ;
501
506
let imgTemplateObject : ImagePromptTemplate < InputValues > ;
502
507
let inputVariables : string [ ] = [ ] ;
503
508
if ( typeof imgTemplate === "string" ) {
504
- const parsedTemplate = parseFString ( imgTemplate ) ;
509
+ let parsedTemplate : ParsedTemplateNode [ ] ;
510
+ if ( additionalOptions ?. templateFormat === "mustache" ) {
511
+ parsedTemplate = parseMustache ( imgTemplate ) ;
512
+ } else {
513
+ parsedTemplate = parseFString ( imgTemplate ) ;
514
+ }
515
+
505
516
const variables = parsedTemplate . flatMap ( ( item ) =>
506
517
item . type === "variable" ? [ item . name ] : [ ]
507
518
) ;
@@ -524,7 +535,13 @@ class _StringImageMessagePromptTemplate<
524
535
} ) ;
525
536
} else if ( typeof imgTemplate === "object" ) {
526
537
if ( "url" in imgTemplate ) {
527
- const parsedTemplate = parseFString ( imgTemplate . url ) ;
538
+ let parsedTemplate : ParsedTemplateNode [ ] ;
539
+ if ( additionalOptions ?. templateFormat === "mustache" ) {
540
+ parsedTemplate = parseMustache ( imgTemplate . url ) ;
541
+ } else {
542
+ parsedTemplate = parseFString ( imgTemplate . url ) ;
543
+ }
544
+
528
545
inputVariables = parsedTemplate . flatMap ( ( item ) =>
529
546
item . type === "variable" ? [ item . name ] : [ ]
530
547
) ;
@@ -913,7 +930,12 @@ export class ChatPromptTemplate<
913
930
imageUrl = item . image_url . url ;
914
931
}
915
932
916
- const promptTemplatePlaceholder = PromptTemplate . fromTemplate ( imageUrl ) ;
933
+ const promptTemplatePlaceholder = PromptTemplate . fromTemplate (
934
+ imageUrl ,
935
+ {
936
+ templateFormat : this . templateFormat ,
937
+ }
938
+ ) ;
917
939
const formattedUrl = await promptTemplatePlaceholder . format (
918
940
inputValues
919
941
) ;
0 commit comments