Files
AI-Proxy-Worker/docs/Configuration.md

316 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 配置指南
<div align="center">
**🌍 Language / 语言**
[🇺🇸 English](./Configuration.en.md) | [🇨🇳 中文](./Configuration.md)
</div>
AI Proxy Worker 提供了多种配置选项,让你可以根据需求定制代理的行为。配置分为两类:环境变量配置和代码配置。
## 🔑 环境变量配置
这些配置通过 Cloudflare Workers 的 Secret 功能设置,在代码中无法看到具体值,确保安全性。
### 必需的环境变量
| 变量名 | 类型 | 说明 | 示例 |
|--------|------|------|------|
| `DEEPSEEK_API_KEY` | Secret | DeepSeek API 密钥 | `sk-...` |
**设置方法:**
```bash
wrangler secret put DEEPSEEK_API_KEY
# 输入你的 DeepSeek API 密钥
```
### 可选的环境变量
| 变量名 | 类型 | 说明 | 默认值 |
|--------|------|------|--------|
| `PROXY_KEY` | Secret | 代理访问密钥,用于保护你的代理 | 无(不启用认证) |
**设置方法:**
```bash
wrangler secret put PROXY_KEY
# 输入自定义的访问密钥my-secret-key-2025
```
**使用建议:**
- 生产环境强烈建议设置 `PROXY_KEY`
- 使用强密码生成器生成访问密钥
- 定期轮换密钥以提高安全性
## ⚙️ 代码配置
这些配置在 `worker.js` 文件的 `CONFIG` 对象中定义,可以根据需要修改。
### 核心配置项
#### DEEPSEEK_API_URL
- **类型**String
- **默认值**`'https://api.deepseek.com/chat/completions'`
- **说明**DeepSeek API 的端点地址
- **修改场景**:通常不需要修改,除非 DeepSeek 更改了 API 端点
```javascript
DEEPSEEK_API_URL: 'https://api.deepseek.com/chat/completions'
```
#### MAX_BODY_SIZE
- **类型**Number
- **默认值**`1024 * 1024` (1MB)
- **说明**:请求体的最大大小限制(字节)
- **修改场景**
- 增大:如果需要处理更长的对话历史
- 减小:如果想要更严格的限制以防止滥用
```javascript
MAX_BODY_SIZE: 1024 * 1024 // 1MB
MAX_BODY_SIZE: 2 * 1024 * 1024 // 2MB更宽松
MAX_BODY_SIZE: 512 * 1024 // 512KB更严格
```
#### REQUEST_TIMEOUT
- **类型**Number
- **默认值**`30000` (30秒)
- **说明**:向 DeepSeek API 请求的超时时间(毫秒)
- **修改场景**
- 增大:如果经常遇到超时错误
- 减小:如果想要更快的失败响应
```javascript
REQUEST_TIMEOUT: 30000 // 30秒默认
REQUEST_TIMEOUT: 60000 // 60秒更宽松
REQUEST_TIMEOUT: 15000 // 15秒更严格
```
#### VALIDATE_REQUEST_BODY
- **类型**Boolean
- **默认值**`false`
- **说明**:是否启用严格的请求体格式验证
- **修改场景**
- `true`:启用严格验证,会检查 messages 格式
- `false`:宽松模式,让 DeepSeek API 自己处理验证
```javascript
VALIDATE_REQUEST_BODY: false // 宽松模式(推荐)
VALIDATE_REQUEST_BODY: true // 严格模式
```
#### DEFAULT_MODEL
- **类型**String
- **默认值**`'deepseek-chat'`
- **说明**:当请求中没有指定模型时使用的默认模型
- **修改场景**:根据你的主要使用场景选择
```javascript
DEFAULT_MODEL: 'deepseek-chat' // 通用对话(默认)
DEFAULT_MODEL: 'deepseek-reasoner' // 推理任务为主
```
#### SUPPORTED_MODELS
- **类型**Array
- **默认值**`['deepseek-chat', 'deepseek-reasoner']`
- **说明**:支持的模型列表,用于验证和文档
- **修改场景**:当 DeepSeek 发布新模型时更新
```javascript
SUPPORTED_MODELS: [
'deepseek-chat', // 通用对话模型
'deepseek-reasoner' // 推理模型
]
```
### CORS 配置
#### CORS_HEADERS
- **说明**:跨域请求的响应头配置
- **默认配置**:允许所有域名访问
```javascript
const CORS_HEADERS = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Max-Age': '86400',
};
```
**生产环境建议:**
```javascript
// 限制特定域名
'Access-Control-Allow-Origin': 'https://yourdomain.com'
// 或者支持多个域名
'Access-Control-Allow-Origin': request.headers.get('origin') // 需要额外的验证逻辑
```
### 安全配置
#### SECURITY_HEADERS
- **说明**:安全相关的响应头
- **默认配置**:基础安全防护
```javascript
const SECURITY_HEADERS = {
'X-Content-Type-Options': 'nosniff',
'X-Frame-Options': 'DENY',
'X-XSS-Protection': '1; mode=block',
'Referrer-Policy': 'strict-origin-when-cross-origin',
};
```
## 🛠️ 高级配置
### 自定义配置示例
如果你需要更复杂的配置,可以这样修改:
```javascript
// 开发环境配置
const CONFIG = {
DEEPSEEK_API_URL: 'https://api.deepseek.com/chat/completions',
MAX_BODY_SIZE: 2 * 1024 * 1024, // 2MB更宽松
REQUEST_TIMEOUT: 60000, // 60秒更长的超时
VALIDATE_REQUEST_BODY: true, // 启用严格验证
DEFAULT_MODEL: 'deepseek-chat',
SUPPORTED_MODELS: [
'deepseek-chat',
'deepseek-reasoner'
]
};
// 生产环境配置
const CONFIG = {
DEEPSEEK_API_URL: 'https://api.deepseek.com/chat/completions',
MAX_BODY_SIZE: 512 * 1024, // 512KB更严格
REQUEST_TIMEOUT: 15000, // 15秒更快失败
VALIDATE_REQUEST_BODY: false, // 宽松验证,更好的兼容性
DEFAULT_MODEL: 'deepseek-chat',
SUPPORTED_MODELS: [
'deepseek-chat',
'deepseek-reasoner'
]
};
```
### 环境特定配置
你也可以在 `wrangler.toml` 中设置环境特定的配置:
```toml
name = "ai-proxy-worker"
main = "worker.js"
compatibility_date = "2025-08-17"
# 生产环境
[env.production]
name = "ai-proxy-worker-prod"
vars = { ENVIRONMENT = "production" }
# 开发环境
[env.development]
name = "ai-proxy-worker-dev"
vars = { ENVIRONMENT = "development" }
```
然后在代码中使用:
```javascript
// 根据环境调整配置
const isProduction = env.ENVIRONMENT === 'production';
const CONFIG = {
// ... 其他配置
MAX_BODY_SIZE: isProduction ? 512 * 1024 : 2 * 1024 * 1024,
REQUEST_TIMEOUT: isProduction ? 15000 : 60000,
VALIDATE_REQUEST_BODY: !isProduction, // 开发环境启用严格验证
};
```
## 📝 配置最佳实践
### 1. 安全配置
```javascript
// ✅ 推荐:生产环境限制 CORS
'Access-Control-Allow-Origin': 'https://yourdomain.com'
// ❌ 避免:生产环境使用通配符
'Access-Control-Allow-Origin': '*'
```
### 2. 性能配置
```javascript
// ✅ 推荐:合理的超时时间
REQUEST_TIMEOUT: 30000 // 30秒
// ❌ 避免:过长的超时时间
REQUEST_TIMEOUT: 300000 // 5分钟太长
```
### 3. 兼容性配置
```javascript
// ✅ 推荐:宽松的验证模式
VALIDATE_REQUEST_BODY: false
// ⚠️ 注意:严格模式可能导致某些客户端失败
VALIDATE_REQUEST_BODY: true
```
## 🔧 配置修改步骤
### 1. 修改代码配置
1. 编辑 `worker.js` 文件
2. 修改 `CONFIG` 对象中的相应值
3. 保存文件
### 2. 重新部署
```bash
wrangler publish
```
### 3. 验证配置
```bash
# 测试健康检查
curl https://your-worker.workers.dev/
# 测试 API 调用
curl -X POST https://your-worker.workers.dev/chat \
-H "Authorization: Bearer YOUR_PROXY_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-chat","messages":[{"role":"user","content":"test"}]}'
```
## ❓ 常见配置问题
### Q: 如何增加请求体大小限制?
A: 修改 `MAX_BODY_SIZE` 配置:
```javascript
MAX_BODY_SIZE: 2 * 1024 * 1024 // 增加到 2MB
```
### Q: 如何设置更严格的超时?
A: 修改 `REQUEST_TIMEOUT` 配置:
```javascript
REQUEST_TIMEOUT: 15000 // 减少到 15秒
```
### Q: 如何禁用请求验证?
A: 设置 `VALIDATE_REQUEST_BODY` 为 false
```javascript
VALIDATE_REQUEST_BODY: false
```
### Q: 如何限制 CORS 域名?
A: 修改 `CORS_HEADERS` 中的 `Access-Control-Allow-Origin`
```javascript
'Access-Control-Allow-Origin': 'https://yourdomain.com'
```
---
**需要帮助?** 👉 [故障排除指南](./Troubleshooting.md) | [GitHub Issues](../../issues)