Create LLM pipelines with ease!
Project description
J2pipeline
Installation
Create Python 3.12 virtual environment, activate it and run
pip install j2pipeline
Setup
J2pipeline requires an active TCP server listening on port 50027
Server:
- Receives a prompt
- Sends back AI response
Protocol:
- 16 bytes header (message length)
- Message (in UTF-8)
For example:
data: bytes = message.encode(encoding='UTF-8')
size: bytes = f'{len(data):16}'.encode(encoding='UTF-8')
server.send(size)
server.send(data)
Server
-
For personal use, you might consider installing a Telegram GPT server available at
https://github.com/yaz008/TG-GPT-API -
You can write your own server following the described protocol
Usage
Prompt
Prompt creates a function based on a single template file
Params
- path: path to a template file
- process: function that modifies LLM output
- auto_upper: makes sure all arguments passed in the template are in upper case
Example
Suppose we have a translate.j2 file
Translate the following text into {% LANGUAGE %}:
{% TEXT %}
From this template we can than create translate function
from j2pipeline import Prompt
translate: Prompt[str] = Prompt[str](path='translate.j2')
text: str = 'Quelle heure est-il?'
translation: str = translate(language='English', text=text)
print(translation)
In the output we shall see
What time is it?
Pipeline
Pipeline creates a function based on a sequence of templates
Params
- base_path: path to a folder with templates
- reorder: function that takes a list of files and returns reordered one
- process: a dict where keys are template names and values are respective modifiers
- final_process: function that processes the final result
- extension: common extension of the template files
Example
Suppose we have two template files in yoderize folder
yoda.j2:
You are Yoda from Star Wars, so you must speak like him
Rewrite this text in style of Yoda
{% PROMPT %}
translate.j2:
Translate the following text into German preserving the style of Yoda:
{% PROMPT %}
Your response must only contain the translation
From this template we can than create yoderize function
from j2pipeline import Pipeline
yoderize: Pipeline[str] = Pipeline[str](base_path='yoderize',
reorder=lambda _: ['yoda', 'translate'],
final_process=lambda text: f'German Yoda:\n{text}')
yoderized: str = yoderize(prompt='I give you an advice: you should be wise')
print(yoderized)
In the end we shall see
German Yoda:
Weise, sein solltest du. Rat, gebe ich dir.
License
J2pipeline is a free, open-source software distributed under the MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file j2pipeline-0.4.0.tar.gz.
File metadata
- Download URL: j2pipeline-0.4.0.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fe99e7e7f13bef82beded841de83f05b460aa0f5b31a60c9c613700e00169f3
|
|
| MD5 |
c9c291d19d56d0ffe0100104658a1047
|
|
| BLAKE2b-256 |
798339f87a4d911ff75c97b316691e742b3d608437ec45d2c7f2b8aee1c9a80b
|
File details
Details for the file j2pipeline-0.4.0-py3-none-any.whl.
File metadata
- Download URL: j2pipeline-0.4.0-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96eaa56f838238a1683d0a13b314fcbc6f37e36d1eeeb08eaf10f4eec5003959
|
|
| MD5 |
e16f00a959655598da5e02f93473a0af
|
|
| BLAKE2b-256 |
6177b51f1954b7248752f05fe292373c9fdb152602acd6a9b24f875af6917242
|