File size: 2,936 Bytes
79899c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# 混合配置说明

## 概述

本项目采用混合配置方式:
- **大部分配置**:从YAML配置文件加载(`app_config_dev.yaml``app_config_prod.yaml`- **敏感配置**:API密钥和base_url从环境变量加载,覆盖YAML文件中的值

## 环境变量列表

### 基础配置
- `ENVIRONMENT`: 环境类型,可选值:`dev`(开发环境)或 `prod`(生产环境),默认为 `dev`

### API密钥和Base URL配置(从环境变量加载)

#### QA LLM 主模型
- `QA_LLM_MAIN_API_KEY`: API密钥
- `QA_LLM_MAIN_BASE_URL`: API基础URL

#### QA LLM 备用模型
- `QA_LLM_BACKUP_API_KEY`: API密钥
- `QA_LLM_BACKUP_BASE_URL`: API基础URL

#### Rewrite LLM 备用模型 (GPT-4o)
- `REWRITE_LLM_BACKUP_API_KEY`: API密钥
- `REWRITE_LLM_BACKUP_BASE_URL`: API基础URL

#### Rewrite LLM 主模型
- `REWRITE_LLM_MAIN_API_KEY`: API密钥
- `REWRITE_LLM_MAIN_BASE_URL`: API基础URL

#### Web搜索服务
- `SERPER_API_KEY`: Serper API密钥(用于网络搜索)

## 其他配置(从YAML文件加载)

以下配置仍然从YAML文件加载,包括:
- 模型名称
- max_tokens
- temperature
- recall配置
- qa-topk配置
- qa-prompt-max-token配置
- chat配置

## 使用方法

### 1. 设置环境变量

```bash
# 设置环境
export ENVIRONMENT=prod

# 设置API密钥和base_url
export QA_LLM_MAIN_API_KEY=your-actual-api-key
export QA_LLM_MAIN_BASE_URL=https://your-api-endpoint.com

export REWRITE_LLM_BACKUP_API_KEY=your-gpt4o-api-key
export REWRITE_LLM_BACKUP_BASE_URL=https://api.openai.com/v1

# 设置Web搜索API密钥
export SERPER_API_KEY=your-serper-api-key

# ... 其他API配置
```

### 2. 在代码中使用

```python
from config.global_storage import get_model_config

# 获取配置
config = get_model_config()

# 使用配置(API密钥和base_url来自环境变量,其他来自YAML)
model_name = config['qa-llm']['main']['model']  # 来自YAML
api_key = config['qa-llm']['main']['api_key']   # 来自环境变量
base_url = config['qa-llm']['main']['base_url'] # 来自环境变量
```

## 配置优先级

1. **环境变量**:API密钥和base_url(最高优先级)
2. **YAML文件**:其他所有配置(基础配置)

## 优势

1. **安全性**: 敏感信息(API密钥)从环境变量加载,不会出现在代码或配置文件中
2. **灵活性**: 可以轻松切换不同环境的API端点
3. **维护性**: 大部分配置仍在YAML文件中,便于管理和版本控制
4. **部署友好**: 生产环境只需要设置环境变量即可

## 注意事项

1. 如果环境变量未设置,将使用YAML文件中的默认值
2. 确保 `.env` 文件已添加到 `.gitignore` 中
3. 生产环境建议使用环境变量而不是 `.env` 文件
4. YAML文件中的API密钥和base_url值会被环境变量覆盖
5. 对于Web搜索服务,如果未设置 `SERPER_API_KEY`,将使用代码中的默认密钥(不推荐用于生产环境)