316 lines
7.9 KiB
Markdown
316 lines
7.9 KiB
Markdown
# 配置指南
|
||
|
||
<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) | [📋 Issues](../../issues)
|