Configuration Files
GenAIScript supports local and global configuration files to allow reusing common configuration settings and secrets across multiple scripts.
{ "$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.
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" }}