You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug description
PromptTemplate has a validate method that compares input variables used in the template (pulled straight from the underlying Antlr TokenStream) to the parameters provided in an attempt to verify that there are no unbound variables. However, StringTemplate has some built-in functions, and this validation is preventing their use.
Environment
Spring AI 1.0.0-M6
Java 17
Steps to reproduce
I was attempting to make it so that the prompt added by VectorStoreChatMemoryAdvisor would be added conditionally on whether there was actually data pulled from the chat history. Something like:
String chatMemoryPrompt = """
{if(strlen(long_term_memory))}
Use the long term conversation memory from the LONG_TERM_MEMORY section to provide accurate answers.
---------------------
LONG_TERM_MEMORY:
{long_term_memory}
---------------------
{endif}
""";
VectorStoreChatMemoryAdvisor.builder(chatHistoryStore)
.systemTextAdvise(chatMemoryPrompt)
.build();
But the validation considers strlen to be a variable that is unbound, and fails.
Expected behavior
I think the same conclusion from this can be reached as #1428 - make the validation optional.
But if we wanted to continue the validation "whack-a-mole", there exists a org.stringtemplate.v4.compiler.Compiler#funcs static map whose keys could be used to find the names of these built-in functions, and omit these in validation. https://github.com/antlr/stringtemplate4/blob/master/src/org/stringtemplate/v4/compiler/Compiler.java#L81
The text was updated successfully, but these errors were encountered:
Bug description
PromptTemplate has a validate method that compares input variables used in the template (pulled straight from the underlying Antlr TokenStream) to the parameters provided in an attempt to verify that there are no unbound variables. However, StringTemplate has some built-in functions, and this validation is preventing their use.
Environment
Spring AI 1.0.0-M6
Java 17
Steps to reproduce
I was attempting to make it so that the prompt added by
VectorStoreChatMemoryAdvisor
would be added conditionally on whether there was actually data pulled from the chat history. Something like:But the validation considers
strlen
to be a variable that is unbound, and fails.Expected behavior
I think the same conclusion from this can be reached as #1428 - make the validation optional.
But if we wanted to continue the validation "whack-a-mole", there exists a
org.stringtemplate.v4.compiler.Compiler#funcs
static map whose keys could be used to find the names of these built-in functions, and omit these in validation.https://github.com/antlr/stringtemplate4/blob/master/src/org/stringtemplate/v4/compiler/Compiler.java#L81
The text was updated successfully, but these errors were encountered: