Use LLMs in SQLite and DuckDB
Project description
tsellm: Use LLMs in SQLite and DuckDB
tsellm is the easiest way to access LLMs from SQLite or DuckDB.
pip install tsellm
cat <<EOF | tee >(sqlite3 prompts.sqlite3) | duckdb prompts.duckdb
CREATE TABLE prompts ( p TEXT);
INSERT INTO prompts VALUES('how are you?');
INSERT INTO prompts VALUES('is this real life?');
EOF
llm install llm-gpt4all
tsellm prompts.duckdb "select prompt(p, 'orca-mini-3b-gguf2-q4_0') from prompts"
tsellm prompts.sqlite3 "select prompt(p, 'orca-2-7b') from prompts"
Behind the scenes, tsellm is based on the beautiful llm library, so you can use any of its plugins:
Embeddings
llm install llm-sentence-transformers
llm sentence-transformers register all-MiniLM-L12-v2
tsellm prompts.sqlite3 "select embed(p, 'sentence-transformers/all-MiniLM-L12-v2')"
Embeddings for binary (BLOB
) columns
wget https://tselai.com/img/flo.jpg
sqlite3 images.sqlite3 <<EOF
CREATE TABLE images(name TEXT, type TEXT, img BLOB);
INSERT INTO images(name,type,img) VALUES('flo','jpg',readfile('flo.jpg'));
EOF
llm install llm-clip
tsellm images.sqlite3 "select embed(img, 'clip') from images"
Multiple Prompts
With a single query you can easily access get prompt responses from different LLMs:
tsellm prompts.sqlite3 "
select p,
prompt(p, 'orca-2-7b'),
prompt(p, 'orca-mini-3b-gguf2-q4_0'),
embed(p, 'sentence-transformers/all-MiniLM-L12-v2')
from prompts"
Interactive Shell
If you don't provide an SQL query, you'll enter an interactive shell instead.
tsellm prompts.db
Installation
pip install tsellm
How
tsellm relies on the following facts:
- SQLite is bundled with the standard Python library (
import sqlite3
) - Python 3.12 ships with a SQLite interactive shell
- one can create Python-written user-defined functions to be used in SQLite queries (see create_function)
- Simon Willison has gone through the process of creating the beautiful llm Python library and CLI
Development
pip install -e '.[test]'
pytest
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
tsellm-0.1.0a14.tar.gz
(10.6 kB
view details)
Built Distribution
File details
Details for the file tsellm-0.1.0a14.tar.gz
.
File metadata
- Download URL: tsellm-0.1.0a14.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a23f84874da14c6e0fb2f13f298529d1bb79940b94bd9bccb7e9236a6b9c2c90 |
|
MD5 | bc8dc2175a9018a02fb34725d0ced4ba |
|
BLAKE2b-256 | 8a794cc37d075f8de5e1faac424e85c55f2bb7a31972b271ff7aee1e6e607172 |
File details
Details for the file tsellm-0.1.0a14-py3-none-any.whl
.
File metadata
- Download URL: tsellm-0.1.0a14-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60a44114703a264483bf929a2e2d06e44be1bc8851d13c8c5ea89ec98013344b |
|
MD5 | c8751bc337e5622aef62033743c9153d |
|
BLAKE2b-256 | 2291c1c067abddd434c9c90a3df864199ccb16135d04c67ba5bbddbb057ee4e0 |