Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
A lightweight, intuitive templating language designed for interactive use in LLM chat sessions.
A lightweight, intuitive templating language designed for interactive use in LLM chat sessions.
CedarTL is a non-intrusive, recursive templating language that seamlessly integrates with LLM chat sessions. Its simple syntax minimizes cognitive overhead while maximizing speed, making it perfect for interactive development sessions.
It can save you time when writing your prompts.
Frequently-used pieces of text can be stored in named templates. Then, instead of typing the same text over and over, you just put a reference to the named template.
context folder
\name
syntaxSee the concrete example to see how easy the syntax is.
See the quick start section if you want to support CedarTL
in your product
FolderDict
context folders
(accessing local directories, tar/zip files, and remote servers via WebDAV, HTTP, FTP, etc)\%cd
)You provide the CedarTL
runtime a root context: a dict
, a list
, an object, or a FolderDict
(a path to a directory where its contained files are the keys, and the file contents are the values)
To escape to CedarTL
syntax, you type a backslash and then a symbol. Examples:
\name
: Key lookup.\path/to/key
: Nested Key lookup\..
: Move up one level in the context hierarchy\%cd(<path-spec-1> <path-spec-2>...)
: Change the current context folder
from where template keys and values are read\%pwd
: Print current working context folder\%ls
: List contents of current working context folder\%set(key="value")
: Set volatile template value\%get(key)
: Get the value associated with a key\%saveas(<target-path>)
: Save the current template to a folder\%load(<path>)
: Load template into volatile area\*chat(some text)
: LLM chat (starts a separate LLM session)\*temp(<float>)
: LLM temperature control... more to come
A FolderDict
is simply a way to view a folder (the context folder
) as if it were a dict
(that is, a mapping between keys and values).
In Python
, it's compatible with type dict[str, str]
.
Example: Inside a resources
folder, we've added a folder named templates
to hold different context folders. We want to view the main
context folder as a dict
,
so we point a FolderDict
to that main
folder:
resources/
└── templates/
└── main/
├── fsninja.txt
├── l0.txt
├── rar.txt
└── sbs.txt
In the case above, the keys are:
fsninja
(a full-stack ninja)l0
(for Level zero)rar
(for Rephrase And Respond)sbs
(for thinking step-by-step)Notice that key names should represent the concept contained in the files.
However, all names above are arbitrary: FolderDict
will work regardless of the names involved.
And where are the values for the keys? Yes, the file contents are the values for their corresponding keys.
By storing templates in a FolderDict
, we get some advantages:
pip install cedartl
from cedartl import CedarTLProcessor
from importlib.resources import files
# [...]
class ExistingClass:
def __init__(self):
self.template_processor = CedarTLProcessor(files('resources.templates.main'))
def process_user_input(self, input: str):
# ...
processed_input: str = self.template_processor.process(input)
# ...
Real chat session using CedarTL
with qwen-2.5-72b-instruct
and Aider:
In this example, we're using a patched version of Aider that adds support for CedarTL
inside chat sessions.
(Check the FolderDict section to see the names of the templates we're using here)
Aider delegates template processing to the CedarTL
engine, which returns the final rendition of the text to be sent
to the LLM.
CedarML
format:(see CedarML for more info)
<cedarml:tool-in.aider>
/add aider/coders/base_coder.py
</cedarml:tool-in.aider>
<cedarml:tool-out.aider>
Added /GitHub/aider/aider/coders/base_coder.py to the chat
─────────
aider/coders/base_coder.py
</cedarml:tool-out.aider>
<cedarml:tool-in.cedartl>
what does this file do? \l0
</cedarml:tool-in.cedartl>
<cedarml:tool-out.cedartl>
\l0: \rar\sbs
\rar: Rephrase my request, then respond.
\sbs: Do so by thinking step by step.
</cedarml:tool-out.cedartl>
<cedarml:role.user>
what does this file do? Rephrase my request, then respond.
Do so by thinking step by step.
</cedarml:role.user>
<cedarml:role.assistant>
Sure, let's break down your request and then respond step by step.
Rephrased Request:
"Can you explain the purpose and main functionalities of the aider/coders/base_coder.py file?"
Step-by-Step Response:
1. File Overview:
• The aider/coders/base_coder.py file is a Python module that defines the Coder class and related functionalities.
• This class is a core component of the Aider application, which is designed to assist users in coding tasks using AI.
</cedarml:role.assistant>
Here's what's on the horizon for CedarTL
:
Browser Extension
Core Enhancements
Integration APIs
Want to contribute? Check out our GitHub issues or propose new features!
git checkout -b feature/amazing-feature
)git commit -m 'Add amazing feature'
)git push origin feature/amazing-feature
)FAQs
A lightweight, intuitive templating language designed for interactive use in LLM chat sessions.
We found that cedartl demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.