feat: allow templated system messages #1584
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please describe the purpose of this pull request.
Refactors the way system messages are compiled to set the foundation for system message templating.
This PR allows for system messages that have the reserved variable
{CORE_MEMORY}
in them.{CORE_MEMORY}
exists in the system prompt, the system prompt will be formatted such that the core memory block is injected there{CORE_MEMORY}
does not exist in the system prompt, it'll automatically be appended to the end of the system prompt (this makes this PR backwards compatible)Future PRs should enable users to define their own variables via
user_defined_variables
(TBD where this should be stored in the DB), which can be used toAlso, a future PR should enable other templating styles other than just f-strings, e.g. Mustache / jinja2 (or Handlebars via pybars). I've added this as a reminder:
How to test
Try modifying
memgpt_chat.txt
to have{CORE_MEMORY}
at the end:Then create a new agent (
memgpt run
) and check the memory block in system (/dumpraw
).Have you tested this PR?
Yes
Related issues or PRs
#880 #895