The SDK used for Shuffle
Project description
Shuffle SDK
This is the SDK used for app development, testing and production of ALL apps in Shuffle. Works with manual runs, Docker, k8s, cloud serverless.
Released under Python pip for usage outside of Shuffle
Python apps: https://github.com/shuffle/python-apps All apps: https://shuffler.io/search
Usage with Shuffle
Refer to the Shuffle App Creation docs
Build
docker build . -t shuffle/shuffle:app_sdk
Download
pip install shuffle_sdk
Usage
from shuffle_sdk import AppBase
class Example(AppBase):
def sample_function(self, paramname):
return f"Hello {paramname}"
if __name__ == "__main__":
Example.run()
Testing Shuffle Apps
With the above function as an example
python3 app.py --standalone --action=sample_function paramname=World
NOT REQUIRED: These are reserved parameters, allowing you to set variables for testing such as local backends to upload into Shuffle during tests:
--shuffle_url="http://custom_backend_url"
--shuffle_authorization="auth"
--shuffle_executionid="execution_id"
Example wit Shuffle Tools+Liquid and the Shuffle Tools app and the "repeat back to me" function
python3 app.py --standalone --action=repeat_back_to_me '--call={{ "hello" | replace: "o", "lol" }}'
Example using Shuffle Tools Shuffle actions within the "execute_python" function to get emails from Outlook (app.py)
python3 app.py --standalone --action=execute_python 'code=print(shuffle.run_app(app_id="accdaaf2eeba6a6ed43b2efc0112032d", action="get_emails"))'
Example LLM inference with the Shuffle-AI app. Supports GPU and requires ollama installed and serving.
python3 app.py --standalone --action=run_llm 'input=convert the following data into a python list of valid ips: 12.3.4.4'
If successful, the output of the function will show in your CLI.
Testing functions inside Shuffle App images manually
This is mostly the same, but paths and docker is a part of the command.
docker run frikky/shuffle:shuffle-ai_1.0.0 python3 /app/app.py standalone --action=run_llm '--input=llm, please answer this question thanks'
With GPU's active in Docker for the LLM (requires Nvidia Container Toolkit):
docker run --gpus all GPU_LAYERS=8 frikky/shuffle:shuffle-ai_1.0.0 python3 /app/app.py standalone --action=run_llm '--input=llm, please answer this question thanks'
Building a fully functional Shuffle App
Look at the documentation on our website
Adding new Liquid filters
Add a function along these lines:
@shuffle_filters.register
def md5(a):
a = str(a)
return hashlib.md5(a.encode('utf-8')).hexdigest()
This can be used as {{ "string" | md5 }}, where "string" -> the a parameter of the function
(Scale testing) Running the Shuffle Tools within the Shuffle Tools app locally
- Set your env
SHUFFLE_APP_EXPOSED_PORT=8080andSHUFFLE_SWARM_CONFIG=run - Run the Shuffle Tools app as a webserver:
python3 app.py - Send a local request to the Shuffle Tools app to run an action within an action. Make sure to add an authorization & execution_id that exists
curl -XPOST http://localhost:8080/api/v1/run -H "Content-Type: application/json" -d '{
"action": {"app_name": "shuffle tools", "name": "execute_python", "parameters": [{
"name": "code",
"value": "singul.config[\"url\"] = \"https://shuffler.io\";print(singul.run_app(app_id=\"3e2bdf9d5069fe3f4746c29d68785a6a\", action=\"repeat_back_to_me\", parameters=[{\"name\": \"call\", \"value\": \"testing\"}]))"}]
},
"authorization": "",
"execution_id": ""
}
'
You can replace the singul.config URL with a local instance for local testing as well.
Project details
Release history Release notifications | RSS feed
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 shuffle_sdk-0.0.39.tar.gz.
File metadata
- Download URL: shuffle_sdk-0.0.39.tar.gz
- Upload date:
- Size: 49.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af76111feb9d542c5e083fbb7eeedc4b1956f9bb5d0cda364b775b53b15daeee
|
|
| MD5 |
5ffdf8c1b2e14d5e19bf8ab0fc0ab807
|
|
| BLAKE2b-256 |
bc4bd3ff368f4bf10e301172c3b16db979c47a8db35bd8e67ac89ab06fd7b995
|
File details
Details for the file shuffle_sdk-0.0.39-py3-none-any.whl.
File metadata
- Download URL: shuffle_sdk-0.0.39-py3-none-any.whl
- Upload date:
- Size: 48.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96e31fd84470d5d71e7736c33948a9f124d119ad2090300f43fd9d2c2ceeb658
|
|
| MD5 |
20d52ab58cb9a5a948b3021543722062
|
|
| BLAKE2b-256 |
836573e54eb4b435e4dcdbfa2b8ae94cd13a100b82b697aa80b96acc563082da
|