Lately I've seen several projects for templating and executing prompts. However
they all go along the lines of
$ executor prompt_file_or_name
which didn't exactly fit my "taste".I figured one could use the same trick like busybox, where you can detect if your binary is being executed via a different name (symlink). The symlink name is treated as the promptname, and arguments are generated from a schema defined in the prompt template.
So now instead of:
# Using https://github.com/chr15m/runprompt
echo '{"words": 300, "text": "some long text"}' | ./runprompt summarize.prompt
# Or using https://github.com/simonw/llm
echo "some long text" | llm -t summarize -p words 300
You get: echo "some long text" | summarize --words 300
And of course with documented arguments and so on: summarize --help
Usage: summarize [OPTIONS] --words --text
Prompt inputs:
--words Maximum number of words
--text The text to summarize, defaults to stdin
That was the starting point, then things escalated and suddenly there is load
balancing, caching, execution via shebang and other (IMO) neat features :).Happy to get feedback and ideas.
Github: https://github.com/tgalal/promptcmd/
Documentation: https://docs.promptcmd.sh/
Examples: https://promptcmd.sh/lib/
Show HN: GenAI Prompts as "Native" Programs
promptcmd.sh