3.3 KiB
(logging)=
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-logs)=
Viewing the logs
You can view the logs using the llm logs command:
llm logs
This will output the three most recent logged items as a JSON array of objects.
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 search the logs for a search term in the prompt or the response columns:
llm logs -q 'cheesecake'
You can filter to logs just for a specific model (or model alias) using -m/--model:
llm logs -m chatgpt
You can truncate the display of the prompts and responses using the -t/--truncate option:
llm logs -n 5 -t
This is useful for finding a conversation that you would like to continue.
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.