Skip to content

Configuration Files

GenAIScript supports local and global configuration files to allow reusing common configuration settings and secrets across multiple scripts.

genaiscript.config.json
{
"$schema": "https://microsoft.github.io/genaiscript/schemas/config.json"
}

File resolution

GenAIScript will scan for the following configuration files and merge their content into the final configuration.

  • ~/genaiscript.config.yaml
  • ~/genaiscript.config.json
  • ./genaiscript.config.yaml
  • ./genaiscript.config.json

The JSON files support the JSON5 format (including comments, trailing commas, etc…).

Schema

The configuration schema is at https://microsoft.github.io/genaiscript/schemas/config.json .

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GenAIScript Configuration",
"type": "object",
"description": "Schema for GenAIScript configuration file",
"properties": {
"envFile": {
"type": "string",
"description": "Path to a .env file to load environment variables from"
},
"include": {
"description": "List of files to include in the project",
"type": "array",
"items": {
"type": "string",
"description": "Path to a file or a glob pattern to include in the project"
}
},
"modelEncodings": {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9_:]+$": {
"type": "string",
"description": "Encoding identifier",
"enum": [
"o1",
"gpt-4o",
"gpt-3.5-turbo",
"text-davinci-003",
"o200k_base",
"cl100k_base",
"p50k_base",
"r50k_base"
]
}
},
"additionalProperties": true,
"description": "Equivalent encoders for model identifiers"
},
"modelAliases": {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9_]+$": {
"oneOf": [
{
"type": "string",
"description": "Model identifier (provider:model:tag)"
},
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "Model identifier (provider:model:tag)"
},
"temperature": {
"type": "number",
"description": "Temperature to use for the model"
}
},
"required": ["model"]
}
]
}
},
"additionalProperties": true,
"description": "Aliases for model identifiers (name)"
},
"secretPatterns": {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9_:\\-\\. ]+$": {
"type": ["string", "null"],
"description": "Secret regex"
}
},
"additionalProperties": true,
"description": "Secret scanners to use for scanning chat messages"
}
}
}

envFile property

The final location of envFile will be used to load the secret in the environment variables.

include property

The include property allows you to provide glob paths to include more scripts. Combined with a global configuration file, this allows to share script for a number of projects.

genaiscript.config.yaml
include:
- "globalpath/*.genai.mjs"

modelAliases property

The modelAliases property allows you to provide aliases for model names.

{
"modelAliases": {
"llama32": "ollama:llama3.2:1b",
"llama32hot": {
"model": "ollama:llama3.2:1b",
"temperature": 2
}
}
}

modelEncodings property

The modelEncodings property allows you to provide the encoding for the model.

{
"modelEncodings": {
"azure:gpt__4o_random_name": "gpt-4o"
}
}