llm/docs/logging.md
2023-06-16 08:57:53 +01:00

2.2 KiB

Logging to SQLite

llm can log all prompts and responses to a SQLite database.

First, create a database in the correct location. You can do that using the llm init-db command:

llm init-db

This creates a database in a directory on your computer. 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/log.db

This will differ for other operating systems.

(You can customize the location of this file by setting a path in the LLM_LOG_PATH environment variable.)

Once that SQLite database has been created any prompts you run will be logged to that database.

To avoid logging a prompt, pass --no-log or -n to the command:

llm 'Ten names for cheesecakes' -n

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 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 log.db database:

CREATE TABLE "log" (
  [id] INTEGER PRIMARY KEY,
  [model] TEXT,
  [timestamp] TEXT,
  [prompt] TEXT,
  [system] TEXT,
  [response] TEXT,
  [chat_id] INTEGER REFERENCES [log]([id]),
  [debug] TEXT,
  [duration_ms] INTEGER
);