Skip to content

User settings

ktem allows developers to extend the index and the reasoning pipeline. In many cases, these components can have settings that should be modified by users at run-time, (e.g. topk, chunksize...). These are the user settings.

ktem allows developers to declare such user settings in their code. Once declared, ktem will render them in a Settings page.

There are 2 places that ktem looks for declared user settings. You can refer to the respective pages.

  • In the index.
  • In the reasoning pipeline.

Syntax of a settings

A collection of settings is a dictionary of type dict[str, dict], where the key is a setting id, and the value is the description of the setting.

settings = {
    "topk": {
        "name": "Top-k chunks",
        "value": 10,
        "component": "number",
    },
    "lang": {
        "name": "Languages",
        "value": "en",
        "component": "dropdown",
        "choices": [("en", "English"), ("cn", "Chinese")],
    }
}

Each setting description must have:

  • name: the human-understandable name of the settings.
  • value: the default value of the settings.
  • component: the UI component to render such setting on the UI. Available:

    • "text": single-value
    • "number": single-value
    • "checkbox": single-value
    • "dropdown": choices
    • "radio": choices
    • "checkboxgroup": choices
  • choices: the list of choices, if the component type allows.

Settings page structure