like sed, awk, and jq, but for LLMs. https://spql-lang.com
284
like sed, awk, and jq, but for LLMs.
Usage |
Installation |
Examples |
Features |
How |
Reference
echo '"https://www.reddit.com/r/python/top.json"' |
spql '
# Issue a get request
http_get |
# Process the json response with standard jq
.data.children[] |
{
"title": .data.title,
"author": .data.author,
"title_tokens": .data.title | tokenize("hf-internal-testing/tiny-random-gpt2") ,
"title_prompt": (.data.title | prompt("llama2c")),
"title_embedding_4": (.data.title | embed("hf-internal-testing/tiny-random-gpt2") | .[0:4]),
"title_embedding_ndims": (.data.title | embed("hf-internal-testing/tiny-random-gpt2") | ndims)
}
'
spql is a command line tool, programming language and database extension for working with LLMs.
spql's goal is to allow the creation of composable pipelines of vectors in a minimal but powerful way. It is equally usable and flexible across different execution contexts.
It borrows from Unix philosophy but with a twist:
It treats vector as a universal interface, not text.
In an LLM world, however, text and vector are not that different, are they?
The pattern is clear:
sed, awk, grep, and friends worked for text.
jq worked for JSON data.
spql works on vectors.
In the snippet above, notice how spql glues things together:
http_get function is run within the program itself (powered by curl).llama2c model is coded in C and is local.In the current alpha version, the easiest way to try out spql is to alias bash functions to docker containers.
Running these in your shell
will provide you with a spql bash function
and a sqlite3 instance pre-bundled with spql.
function spql() {
docker run -v $HOME/.cache/huggingface:/.cache/huggingface -i florents/spql:v0.1.0a1 "$@"
}
function sqlite3() {
docker run -i --entrypoint /usr/bin/sqlite3 florents/spql:v0.1.0a1 "$@"
}
Content type
Image
Digest
sha256:9cc2e82c0…
Size
473 MB
Last updated
over 2 years ago
docker pull florents/spql:v0.1.0a1