This project provides a dual-layer configuration system that flexibly adapts to different use cases.
┌─────────────────────────────────────────────────────────┐
│ Configuration Priority │
├─────────────────────────────────────────────────────────┤
│ Command-line arguments (highest priority) │
│ ↓ overrides │
│ Environment variables (config.sh) │
│ ↓ overrides │
│ Python defaults (config/settings.py) │
└─────────────────────────────────────────────────────────┘
Use Case: Quick development, single runs, testing
Location: config/settings.py
Features:
- ✅ Can run Python scripts directly
- ✅ No need to set environment variables
- ✅ Suitable for occasional runs or quick testing
- ❌ Each Python process is independent, no shared configuration
Usage:
# Edit config/settings.py
OPENAI_API_KEY = "your-api-key-here"
DEFAULT_LLM_MODEL = "gpt-4o-mini-2024-07-18"
MAX_ITERATIONS = 3# Run directly, using Python defaults
python run_generation.py --input_file data/train.json --output_file results/gen.jsonUse Case: Batch processing, production environment, bash scripts
Location: config.sh
Features:
- ✅ Centralized configuration management
- ✅ Automatically loaded by bash scripts
- ✅ Environment variables valid throughout session
- ✅ Suitable for batch processing and production environments
Usage:
# Edit config.sh
vim config.sh
# Bash scripts automatically load it
bash scripts/run_test.shThis is a bash script containing all configuration items:
# API Configuration
export OPENAI_API_KEY="your-openai-api-key-here"
export OPENAI_BASE_URL="https://api.openai.com/v1"
export DEEPSEEK_API_KEY="your-deepseek-api-key-here"
export DEEPSEEK_BASE_URL="https://api.deepseek.com"
# Model Selection
export DEFAULT_LLM_MODEL="gpt-4o-mini-2024-07-18"
export GENERATOR_MODEL="gpt-4o-mini-2024-07-18"
# Training Parameters
export MAX_ITERATIONS=3
export MAX_RETRIES=3
# Debug Mode
export DEBUG_MODE="false"- Edit
config.shfile - Fill in your API keys
- Select model
- Run scripts (scripts automatically load configuration)
# Edit configuration
vim config.sh # or use other editor
# Run script (automatically loads config.sh)
bash scripts/run_test.sh# Load configuration
source config.sh
# Run Python script
python run_generation.py --input_file data/train.json --output_file results/gen.json# Temporarily override a configuration
DEFAULT_LLM_MODEL="deepseek-chat" bash scripts/run_test.sh| Model Name | Features | Recommended Use |
|---|---|---|
gpt-4o-mini-2024-07-18 |
Cost-effective, fast | Recommended, suitable for large-scale processing |
gpt-3.5-turbo-1106 |
Cheap, fastest | Use when budget is limited |
gpt-4o |
Highest quality, expensive | Use when highest quality is needed |
| Model Name | Features | Recommended Use |
|---|---|---|
deepseek-chat |
Cheap, good Chinese support | Chinese data processing |
# config.sh
export OPENAI_API_KEY="your-api-key-here"
export OPENAI_BASE_URL="https://api.openai.com/v1"
export DEFAULT_LLM_MODEL="gpt-4o-mini-2024-07-18"
export GENERATOR_MODEL="gpt-4o-mini-2024-07-18"# config.sh
export DEEPSEEK_API_KEY="your-deepseek-key"
export DEEPSEEK_BASE_URL="https://api.deepseek.com"
export DEFAULT_LLM_MODEL="deepseek-chat"
export GENERATOR_MODEL="deepseek-chat"# config.sh
# Detector uses GPT-4o-mini, Generator uses DeepSeek
export OPENAI_API_KEY="your-openai-key"
export DEEPSEEK_API_KEY="your-deepseek-key"
export DEFAULT_LLM_MODEL="gpt-4o-mini-2024-07-18" # For detection
export GENERATOR_MODEL="deepseek-chat" # For generationConfiguration priority from high to low:
-
Command-line arguments (highest priority)
python run_generation.py --llm_model deepseek-chat ...
-
Environment variables
export DEFAULT_LLM_MODEL="deepseek-chat" python run_generation.py ...
-
config.sh configuration file
source config.sh python run_generation.py ... -
Code defaults (lowest priority)
- Defined in
config/settings.py
- Defined in
# Edit config.sh
vim config.sh
# Modify this line:
export OPENAI_API_KEY="your-openai-api-key-here"
# Change to:
export OPENAI_API_KEY="your-api-key-here"Default uses gpt-4o-mini-2024-07-18, to modify:
# Modify in config.sh
export DEFAULT_LLM_MODEL="gpt-3.5-turbo-1106" # Use cheaper modelbash scripts/run_test.shA: When running any script, current configuration is displayed:
source config.sh
# Output:
# ✓ SALF configuration loaded
# - LLM model: gpt-4o-mini-2024-07-18
# - Generator model: gpt-4o-mini-2024-07-18A: Yes! Create multiple configuration files:
# Create config_test.sh (for testing)
cp config.sh config_test.sh
# Edit config_test.sh, set fewer iterations
# Create config_prod.sh (for production)
cp config.sh config_prod.sh
# Edit config_prod.sh, set more iterations
# Use different configurations
source config_test.sh && bash scripts/run_test.sh
source config_prod.sh && bash scripts/run_full_pipeline.shA: Recommendations:
- ✅ Don't commit
config.shto git - ✅ Use
.gitignoreto ignoreconfig.sh - ✅ Or use environment variables instead of files
# Use environment variables (more secure)
export OPENAI_API_KEY="your-key"
bash scripts/run_test.sh# Set in config.sh
export DEBUG_MODE="true"
# Or enable temporarily
DEBUG_MODE="true" bash scripts/run_test.shDebug mode outputs:
- Model name for each LLM call
- Detailed processing steps
- Intermediate results
- ✅ All configuration centralized in
config.sh - ✅ All bash scripts automatically load configuration
- ✅ Supports environment variable override
- ✅ Provides multiple model choices
- ✅ Easy to switch and manage