Logging to SQLite#
llm
defaults to logging all prompts and responses to a SQLite database.
You can find the location of that database using the llm logs path
command:
llm logs path
On my Mac that outputs:
/Users/simon/Library/Application Support/io.datasette.llm/logs.db
This will differ for other operating systems.
To avoid logging an individual prompt, pass --no-log
or -n
to the command:
llm 'Ten names for cheesecakes' -n
To turn logging by default off:
llm logs off
If you’ve turned off logging you can still log an individual prompt and response by adding --log
:
llm 'Five ambitious names for a pet pterodactyl' --log
To turn logging by default back on again:
llm logs on
To see the status of the logs database, run this:
llm logs status
Example output:
Logging is ON for all prompts
Found log database at /Users/simon/Library/Application Support/io.datasette.llm/logs.db
Number of conversations logged: 33
Number of responses logged: 48
Database file size: 19.96MB
Viewing the logs#
You can view the logs using the llm logs
command:
llm logs
This will output the three most recent logged items in Markdown format
Add --json
to get the log messages in JSON instead:
llm logs --json
Add -n 10
to see the ten most recent items:
llm logs -n 10
Or -n 0
to see everything that has ever been logged:
llm logs -n 0
You can truncate the display of the prompts and responses using the -t/--truncate
option. This can help make the JSON output more readable:
llm logs -n 5 -t --json
Logs for a conversation#
To view the logs for the most recent conversation you have had with a model, use -c
:
llm logs -c
To see logs for a specific conversation based on its ID, use --cid ID
or --conversation ID
:
llm logs --cid 01h82n0q9crqtnzmf13gkyxawg
Searching the logs#
You can search the logs for a search term in the prompt
or the response
columns.
llm logs -q 'cheesecake'
The most relevant terms will be shown at the bottom of the output.
Filtering by model#
You can filter to logs just for a specific model (or model alias) using -m/--model
:
llm logs -m chatgpt
Browsing logs using Datasette#
You can also use Datasette to browse your logs like this:
datasette "$(llm logs path)"
SQL schema#
Here’s the SQL schema used by the logs.db
database:
CREATE TABLE [conversations] (
[id] TEXT PRIMARY KEY,
[name] TEXT,
[model] TEXT
);
CREATE TABLE [responses] (
[id] TEXT PRIMARY KEY,
[model] TEXT,
[prompt] TEXT,
[system] TEXT,
[prompt_json] TEXT,
[options_json] TEXT,
[response] TEXT,
[response_json] TEXT,
[conversation_id] TEXT REFERENCES [conversations]([id]),
[duration_ms] INTEGER,
[datetime_utc] TEXT
);
CREATE VIRTUAL TABLE [responses_fts] USING FTS5 (
[prompt],
[response],
content=[responses]
);
responses_fts
configures SQLite full-text search against the prompt
and response
columns in the responses
table.