Metadata-Version: 2.1
Name: promplate
Version: 0.1.9
Summary: cross-language prompt engineering framework
Home-page: https://promplate.dev/
License: MIT
Keywords: prompt,template,nlp,llm
Author: Muspi Merol
Author-email: admin@muspimerol.site
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Text Processing :: Markup
Classifier: Typing :: Typed
Requires-Dist: aiofiles (>=23.2,<24.0)
Requires-Dist: httpx (>=0.24,<0.25)
Requires-Dist: openai (>=0.27,<0.28)
Description-Content-Type: text/markdown

# Promplate

> _Promplate_ is for **promp**t + tem**plate**

I want to build a cross-language prompt engineering framework.

## IDE Support 🌹

I try to make the syntax compatible with `Jinja2`.

## Future Features (or TODOs?)

- [x] (lazy) template compiling
- [x] support any evaluatable expression inside template like `{{ [ i for i in range(n) ] }}`
- [ ] create documentation
- [ ] javascript implementation
- [ ] support chains and agents
- [ ] error handling
- [ ] template rich printing
- [x] implement component syntax `{% Component * arg1 arg2 kwarg1=1 kwarg2=2 **kwargs %}`
- [ ] allow more corner cases for the component syntax
  - [ ] `{% Componnet arg=" * " %}`
  - [ ] `{% Componnet arg = " * " %}`
  - [ ] `{% Componnet arg = await f()`
- [ ] if the outer context is a `defaultdict`, the context passing to component should be?
  - or maybe this should be determined by the component itself
  - because a component could be a `Node` and a `Node` can have preprocesses
- [ ] support while loop and isolated variable declaration
- [x] `else` and `elif` tag
- [ ] directory based routing
- [ ] caching (and cache-controls maybe?)
- [x] implement more [loaders](https://jinja.palletsprojects.com/api/#loaders)
  - for now you can load template from local filesystem or urls
- [x] multi-file chat template
  - using components

