Skip to content
GitHub

Configuration

The config section key is ai (configures AIConfig). Environment prefix: LEX_AI__.

KeyTypeDefaultEnv VarDescription
namestr"ai"LEX_AI__NAMEConfiguration name
enabledboolTrueLEX_AI__ENABLEDEnable AI features
llmClientConfig | NoneNoneLEX_AI__LLM__*LLM client configuration
vectorVectorConfig | NoneNoneLEX_AI__VECTOR__*Vector store configuration
ragRAGConfig | NoneNoneLEX_AI__RAG__*RAG pipeline configuration
governanceGovernanceConfigdefault-factory (disabled when governance package absent)LEX_AI__GOVERNANCE__*AI governance configuration
observabilityObservabilityConfigdefault-factory (disabled if lexigram-ai-observability not installed)LEX_AI__OBSERVABILITY__*AI observability configuration
subsystemsdict[str, dict[str, Any]]{}LEX_AI__SUBSYSTEMS__*Dynamic config for third-party subsystems
application.yaml
ai:
enabled: true
llm:
provider: openai
model: gpt-4o
api_key: ${LEX_AI_LLM__API_KEY}
temperature: 0.7
timeout: 60
governance:
enabled: true
subsystems:
custom_subsystem:
option_a: value

The nested delimiter is __ (double underscore):

Terminal window
export LEX_AI__ENABLED=true
export LEX_AI_LLM__PROVIDER=anthropic
export LEX_AI_LLM__MODEL=claude-sonnet-4-20250514
export LEX_AI_LLM__API_KEY=sk-ant-...
export LEX_AI_LLM__TEMPERATURE=0.3

Use get_subsystem_config() to retrieve config for a dynamically-discovered subsystem:

from lexigram.ai.config import AIConfig, get_subsystem_config
config = AIConfig()
sub_cfg = get_subsystem_config(config, "llm")
# Returns config.llm if set, otherwise config.subsystems["llm"]

AIConfig includes a model_validator that blocks insecure API keys (sk-..., sk-test, change-me) when LEX_ENV=production.