# 配置管理指南 ## 概述 本系统提供了灵活的配置管理机制,支持通过环境变量、配置文件和代码三种方式进行配置。 ## 配置方式 ### 1. 环境变量(推荐) 最简单的配置方式是使用 `.env` 文件: ```bash # .env 文件示例 LLM_PROVIDER=openai OPENAI_API_KEY=your_api_key_here OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4 AGENT_MAX_ROUNDS=20 AGENT_OUTPUT_DIR=output TOOL_MAX_QUERY_ROWS=10000 ``` 系统会自动加载 `.env` 文件中的配置。 ### 2. 配置文件 使用 JSON 格式的配置文件: ```bash python -m src.cli data.csv -c config.json ``` 配置文件示例(`config.json`): ```json { "llm": { "provider": "openai", "api_key": "your_api_key_here", "base_url": "https://api.openai.com/v1", "model": "gpt-4", "timeout": 120, "max_retries": 3, "temperature": 0.7 }, "performance": { "agent_max_rounds": 20, "tool_max_query_rows": 10000 }, "output": { "output_dir": "output", "log_level": "INFO" } } ``` ### 3. 代码配置 在代码中直接配置: ```python from src.config import Config, LLMConfig, set_config config = Config( llm=LLMConfig( api_key="your_api_key", model="gpt-4" ) ) set_config(config) ``` ## 配置优先级 配置的优先级从高到低: 1. 代码中直接设置的配置 2. 命令行指定的配置文件(`-c config.json`) 3. 环境变量 4. `.env.local` 文件(本地开发,不提交到版本控制) 5. `.env` 文件 6. 默认值 ## 配置项说明 ### LLM 配置 | 配置项 | 环境变量 | 默认值 | 说明 | |--------|----------|--------|------| | provider | LLM_PROVIDER | openai | LLM 提供商(openai 或 gemini) | | api_key | OPENAI_API_KEY / GEMINI_API_KEY | - | API 密钥(必需) | | base_url | OPENAI_BASE_URL / GEMINI_BASE_URL | https://api.openai.com/v1 | API 基础 URL | | model | OPENAI_MODEL / GEMINI_MODEL | gpt-4 | 模型名称 | | timeout | LLM_TIMEOUT | 120 | 请求超时时间(秒) | | max_retries | LLM_MAX_RETRIES | 3 | 最大重试次数 | | temperature | LLM_TEMPERATURE | 0.7 | 温度参数 | | max_tokens | LLM_MAX_TOKENS | null | 最大 token 数 | ### 性能配置 | 配置项 | 环境变量 | 默认值 | 说明 | |--------|----------|--------|------| | agent_max_rounds | AGENT_MAX_ROUNDS | 20 | ReAct 最大迭代次数 | | agent_timeout | AGENT_TIMEOUT | 300 | Agent 执行超时(秒) | | tool_max_query_rows | TOOL_MAX_QUERY_ROWS | 10000 | 工具查询最大行数 | | tool_execution_timeout | TOOL_EXECUTION_TIMEOUT | 60 | 工具执行超时(秒) | | data_max_rows | DATA_MAX_ROWS | 1000000 | 最大数据行数 | | data_sample_threshold | DATA_SAMPLE_THRESHOLD | 1000000 | 数据采样阈值 | ### 输出配置 | 配置项 | 环境变量 | 默认值 | 说明 | |--------|----------|--------|------| | output_dir | AGENT_OUTPUT_DIR | output | 输出目录 | | log_dir | LOG_DIR | output | 日志目录 | | chart_dir | CHART_DIR | output/charts | 图表目录 | | report_filename | REPORT_FILENAME | analysis_report.md | 报告文件名 | | log_level | LOG_LEVEL | INFO | 日志级别 | | log_to_file | LOG_TO_FILE | true | 是否记录到文件 | | log_to_console | LOG_TO_CONSOLE | true | 是否输出到控制台 | ## 使用示例 ### 示例 1:使用默认配置 ```bash # 确保 .env 文件中设置了 OPENAI_API_KEY python -m src.cli data.csv ``` ### 示例 2:使用自定义配置文件 ```bash python -m src.cli data.csv -c my_config.json ``` ### 示例 3:覆盖环境变量 ```bash # 临时覆盖环境变量 OPENAI_MODEL=gpt-3.5-turbo python -m src.cli data.csv ``` ### 示例 4:在代码中使用配置 ```python from src.config import get_config # 获取全局配置 config = get_config() # 访问配置项 print(f"使用模型: {config.llm.model}") print(f"输出目录: {config.output.output_dir}") ``` ## 配置验证 系统会在启动时自动验证配置: - 检查必需的配置项(如 API key) - 验证配置值的有效性 - 检查输出目录是否可写 如果配置无效,系统会报错并退出。 ## 安全建议 1. **不要提交 API 密钥到版本控制** - 将 `.env` 添加到 `.gitignore` - 使用 `.env.example` 作为模板 2. **使用环境变量存储敏感信息** - 在生产环境中使用环境变量而不是配置文件 - 使用密钥管理服务(如 AWS Secrets Manager) 3. **限制配置文件权限** - 确保配置文件只有必要的用户可以读取 - 在 Unix 系统上使用 `chmod 600 config.json` ## 故障排查 ### 问题:配置未生效 **解决方案**: 1. 检查配置优先级,确保没有被更高优先级的配置覆盖 2. 使用 `-v` 参数查看详细日志 3. 检查环境变量是否正确设置:`echo $OPENAI_API_KEY` ### 问题:API 密钥无效 **解决方案**: 1. 确认 API 密钥正确无误 2. 检查 API 密钥是否有足够的权限 3. 验证 base_url 是否正确 ### 问题:配置文件加载失败 **解决方案**: 1. 检查 JSON 格式是否正确 2. 确认文件路径是否正确 3. 检查文件权限 ## 参考 - 配置模块源码:`src/config.py` - 环境变量加载器:`src/env_loader.py` - 配置示例:`config.example.json` - 环境变量示例:`.env.example`