Skip to content

Latest commit

 

History

History
296 lines (218 loc) · 7.32 KB

File metadata and controls

296 lines (218 loc) · 7.32 KB

Configuration Guide

This project provides a dual-layer configuration system that flexibly adapts to different use cases.

Configuration System Architecture

┌─────────────────────────────────────────────────────────┐
│                Configuration Priority                    │
├─────────────────────────────────────────────────────────┤
│  Command-line arguments (highest priority)               │
│       ↓ overrides                                        │
│  Environment variables (config.sh)                       │
│       ↓ overrides                                        │
│  Python defaults (config/settings.py)                    │
└─────────────────────────────────────────────────────────┘

Two Configuration Methods

Method 1: Python Configuration File (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.json

Method 2: Bash Configuration File (config.sh)

Use 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.sh

Configuration Files

config.sh - Main Configuration File

This 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"

Usage

Method 1: Directly Edit config.sh

  1. Edit config.sh file
  2. Fill in your API keys
  3. Select model
  4. 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

Method 2: Manually Load Configuration

# Load configuration
source config.sh

# Run Python script
python run_generation.py --input_file data/train.json --output_file results/gen.json

Method 3: Override with Environment Variables

# Temporarily override a configuration
DEFAULT_LLM_MODEL="deepseek-chat" bash scripts/run_test.sh

Available Models

OpenAI Models

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

DeepSeek Models

Model Name Features Recommended Use
deepseek-chat Cheap, good Chinese support Chinese data processing

Configuration Examples

Example 1: Using GPT-4o-mini (Recommended)

# 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"

Example 2: Using DeepSeek

# 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"

Example 3: Mixed Usage

# 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 generation

Configuration Priority

Configuration priority from high to low:

  1. Command-line arguments (highest priority)

    python run_generation.py --llm_model deepseek-chat ...
  2. Environment variables

    export DEFAULT_LLM_MODEL="deepseek-chat"
    python run_generation.py ...
  3. config.sh configuration file

    source config.sh
    python run_generation.py ...
  4. Code defaults (lowest priority)

    • Defined in config/settings.py

Quick Start

1. Configure API Keys

# 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"

2. Select Model (Optional)

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 model

3. Run Test

bash scripts/run_test.sh

FAQ

Q: How to know which model is currently being used?

A: 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-18

Q: Can I use different configurations for different scripts?

A: 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.sh

Q: Are API keys secure?

A: Recommendations:

  1. ✅ Don't commit config.sh to git
  2. ✅ Use .gitignore to ignore config.sh
  3. ✅ Or use environment variables instead of files
# Use environment variables (more secure)
export OPENAI_API_KEY="your-key"
bash scripts/run_test.sh

Debugging

Enable Debug Mode

# Set in config.sh
export DEBUG_MODE="true"

# Or enable temporarily
DEBUG_MODE="true" bash scripts/run_test.sh

Debug mode outputs:

  • Model name for each LLM call
  • Detailed processing steps
  • Intermediate results

Summary

  • ✅ 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