Profiles#

A “profile” is defined by setting up .enkaidu/ in the current directory. Enkaidu will look for this folder from which it loads the following:

  1. config.yaml|yml config file, unless a config file is else explicitly specified. If there is an enkaidu.yaml|yml in the current directory, both are loaded and the latter’s settings have precedence.
  2. variables.yaml|yml file that can be used to define variables accessible by prompt templates under var.
    • Values can be strings, arrays of strings
    • Values can also be hash maps, but only one level deep
  3. prompts/ folder inside which Enkaidu will find any file that has .yaml|yml extension and attempt to load the prompts definitions, defined the same way as prompts: in the config file.
    • Prompts in the config file will override prompts with the same name defined in the profile.
  4. system_prompts/ folder inside which Enkaidu will find any file that has .yaml|yml extension and attempt to load system prompt definitions, defined the same way as system_prompts: in the config file.
    • System prompts in the config file will override those with the same name defined in the profile.
  5. macros/ folder inside which Enkaidu will find any file that has .yaml|yml extension and attempt to load macro definitions, defined the same way as macros: in the config file.
    • Macros in the config file will override those with the same name defined in the profile.

As of 0.8.7, Enkaidu will also consider YAML files in sub-folders under prompts/, macros/ and system_prompts/.

Prompts and macros can also be defined in a single file without using the scoped folders.

  • prompts.yaml|yml
  • system_prompts.yaml|yml
  • macros.yaml|yml

If these files and files within folders exist, the folders are processed first, ensuring that the contents of the files supercede any of the same name defined in the files in the folders.