llm/docs/plugins.md
2023-06-17 17:55:53 +01:00

1.7 KiB

Plugins

LLM plugins can provide extra features to the tool.

The llm-hello-world plugin is the current best example of how to build and package a plugin.

Installing plugins

Plugins must be installed in the same virtual environment as LLM itself. You can use the llm install command (a thin wrapper around pip install) for this:

llm install llm-hello-world

Plugins can be uninstalled with llm uninstall:

llm uninstall llm-hello-world -y

The -y flag skips asking for confirmation.

Listing installed plugins

Run llm plugins to list installed plugins:

llm plugins
[
  {
    "name": "llm-hello-world",
    "hooks": [
      "register_commands"
    ],
    "version": "0.1"
  }
]

Plugin hooks

Plugins use plugin hooks to customize LLM's behavior. These hooks are powered by the Pluggy plugin system.

Each plugin can implement one or more hooks using the @hookimpl decorator against one of the hook function names described on this page.

LLM imitates the Datasette plugin system. The Datasette plugin documentation describes how plugins work.

register_commands(cli)

This hook adds new commands to the llm CLI tool - for example llm extra-command.

This example plugin adds a new hello-world command that prints "Hello world!":

from llm import hookimpl
import click

@hookimpl
def register_commands(cli):
    @cli.command(name="hello-world")
    def hello_world():
        "Print hello world"
        click.echo("Hello world!")

This new command will be added to llm --help and can be run using llm hello-world.