Files
AIclinicalresearch/docs/07-运维文档/01-环境配置指南.md
HaHafeng e52020409c docs: complete documentation system (250+ files)
- System architecture and design documentation
- Business module docs (ASL/AIA/PKB/RVW/DC/SSA/ST)
- ASL module complete design (quality assurance, tech selection)
- Platform layer and common capabilities docs
- Development standards and API specifications
- Deployment and operations guides
- Project management and milestone tracking
- Architecture implementation reports
- Documentation templates and guides
2025-11-16 15:43:55 +08:00

479 lines
10 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.
# 环境配置指南
> **文档版本:** v1.0
> **创建日期:** 2025-11-09
> **维护者:** 技术团队
> **最后更新:** 2025-11-09
---
## 📋 文档说明
本文档记录系统运行所需的全部环境变量配置,包括:
- 数据库连接信息
- LLM API密钥配置
- 第三方服务配置
- 安全相关配置
---
## 🗄️ 数据库配置
### PostgreSQL连接信息
**当前配置:**
```env
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical_research
```
**连接参数说明:**
| 参数 | 当前值 | 说明 |
|------|--------|------|
| 用户名 | postgres | PostgreSQL默认用户 |
| 密码 | postgres | 本地开发密码 |
| 主机 | localhost | 本地数据库 |
| 端口 | 5432 | PostgreSQL默认端口 |
| 数据库名 | ai_clinical_research | 项目数据库 |
**Schema信息**
- **当前Schema** `public`所有13个表
- **计划Schema** 10个隔离SchemaWeek 1实施
- platform_schema
- common_schema
- asl_schema
- aia_schema
- pkb_schema
- dc_schema
- rvw_schema
- admin_schema
- ssa_schema
- st_schema
---
## 🤖 LLM API配置
### 1. DeepSeek API
**用途:** 主力大模型(推理、对话、批处理)
**配置:**
```env
DEEPSEEK_API_KEY=sk-your-deepseek-key
```
**获取方式:**
1. 访问https://platform.deepseek.com
2. 注册/登录账号
3. 进入API Keys页面
4. 创建新的API Key
**使用场景:**
- AI智能问答选题评价、PICO梳理等
- 批处理任务
- 标题摘要初筛
- 全文复筛
**定价:**
- DeepSeek-V3: ¥1/M tokens输入¥2/M tokens输出
---
### 2. 通义千问QwenAPI
**用途:** 备用模型、特定场景优化
**配置:**
```env
DASHSCOPE_API_KEY=sk-your-qwen-key
```
**获取方式:**
1. 访问https://dashscope.console.aliyun.com
2. 开通DashScope服务
3. 创建API Key
**使用场景:**
- 长文本处理Qwen-Long
- 特定领域任务
- 模型对比筛选
**定价:**
- Qwen-Max: ¥0.04/1K tokens
- Qwen-Long: ¥0.005/1K tokens
---
### 3. CloseAI配置代理OpenAI和Claude⭐⭐⭐
**用途:** 通过代理平台稳定访问OpenAI和Claude API
**为什么使用CloseAI**
- ✅ 国内稳定访问,无需科学上网
- ✅ 一个账号同时使用OpenAI和Claude
- ✅ 兼容OpenAI SDK标准接口
- ✅ 最新模型支持GPT-5-Pro、Claude-Sonnet-4.5
**配置:**
```env
# CloseAI统一API Key
CLOSEAI_API_KEY=sk-cu0iepbXYGGx2jc7BqP6ogtSWmP6fk918qV3RUdtGC3Edlpo
# OpenAI端点通过CloseAI代理
CLOSEAI_OPENAI_BASE_URL=https://api.openai-proxy.org/v1
# Claude端点通过CloseAI代理
CLOSEAI_CLAUDE_BASE_URL=https://api.openai-proxy.org/anthropic
```
**支持的模型:**
| 模型系列 | 最新模型 | 说明 |
|---------|---------|------|
| **OpenAI** | `gpt-5-pro` | 最新GPT-5模型 ⭐ |
| OpenAI | `gpt-4-turbo-preview` | GPT-4高性能版本 |
| OpenAI | `gpt-3.5-turbo` | 快速经济版本 |
| **Claude** | `claude-sonnet-4-5-20250929` | 最新Claude-4.5 ⭐ |
| Claude | `claude-3-5-sonnet-20241022` | Claude-3.5稳定版 |
| Claude | `claude-3-opus-20240229` | Claude-3最强版本 |
**获取方式:**
1. 访问https://platform.openai-proxy.org
2. 注册账号并充值
3. 在控制台获取API Key
4. 一个API Key可同时调用OpenAI和Claude
**代码示例TypeScript**
```typescript
import OpenAI from 'openai';
// OpenAI (通过CloseAI)
const openaiClient = new OpenAI({
apiKey: process.env.CLOSEAI_API_KEY,
baseURL: 'https://api.openai-proxy.org/v1',
});
const gptResponse = await openaiClient.chat.completions.create({
model: 'gpt-5-pro',
messages: [{ role: 'user', content: '你好' }],
});
// Claude (通过CloseAI)
const claudeClient = new OpenAI({
apiKey: process.env.CLOSEAI_API_KEY,
baseURL: 'https://api.openai-proxy.org/anthropic',
});
const claudeResponse = await claudeClient.chat.completions.create({
model: 'claude-sonnet-4-5-20250929',
messages: [{ role: 'user', content: '你好' }],
});
```
**使用场景AI智能文献 ⭐):**
- **GPT-5-Pro** 文献精准筛选、质量控制
- **Claude-4.5** 第三方仲裁、结构化输出
- **双模型对比:** DeepSeek + GPT-5-Pro 快速+高质量
- **三模型共识:** 冲突时启用Claude仲裁
**定价(参考):**
- GPT-5-Pro: ~¥0.10/1K tokens输入~¥0.20/1K tokens输出
- Claude-4.5-Sonnet: ~¥0.021/1K tokens输入~¥0.105/1K tokens输出
**注意事项:**
- ⚠️ API Key包含敏感信息不要提交到Git
- ⚠️ 建议定期更换API Key
- ⚠️ 生产环境使用独立的API Key
---
## 🔧 Dify配置RAG引擎
**用途:** 知识库向量检索、RAG问答
**配置:**
```env
DIFY_API_KEY=app-your-dify-key
DIFY_API_URL=http://localhost/v1
```
**部署信息:**
- **本地部署:** Docker Compose
- **访问地址:** http://localhost
- **管理后台:** http://localhost/install
- **向量数据库:** Qdrant内置
**获取API Key**
1. 访问 Dify 管理后台
2. 进入"应用"页面
3. 创建"知识库应用"
4. 复制API Key
**使用场景:**
- 个人知识库文档上传
- @知识库问答
- 智能引用功能
---
## 🔐 安全配置
### JWT密钥
**配置:**
```env
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d
```
**说明:**
- 用于用户认证Token签名
- 建议使用32位以上随机字符串
- 过期时间7天
**生成强密钥(可选):**
```bash
# Node.js生成
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# OpenSSL生成
openssl rand -hex 32
```
---
## 🌐 服务配置
### 后端服务
**配置:**
```env
PORT=3001
HOST=0.0.0.0
NODE_ENV=development
LOG_LEVEL=info
```
**说明:**
| 参数 | 值 | 说明 |
|------|-----|------|
| PORT | 3001 | 后端服务端口 |
| HOST | 0.0.0.0 | 监听所有网卡 |
| NODE_ENV | development | 开发环境 |
| LOG_LEVEL | info | 日志级别 |
---
### CORS配置
**配置:**
```env
CORS_ORIGIN=http://localhost:5173
```
**说明:**
- 允许前端跨域访问
- 前端开发服务器http://localhost:5173
---
### Redis配置可选
**配置:**
```env
REDIS_URL=redis://localhost:6379
```
**说明:**
- 用于缓存和会话管理
- 当前未强制要求
---
## 📁 文件上传配置
**配置:**
```env
UPLOAD_MAX_SIZE=10485760
UPLOAD_DIR=./uploads
```
**说明:**
| 参数 | 值 | 说明 |
|------|-----|------|
| UPLOAD_MAX_SIZE | 10485760 | 10MB字节 |
| UPLOAD_DIR | ./uploads | 上传文件存储目录 |
---
## 🚀 配置步骤
### 1. 检查环境变量文件
**位置:** `backend/.env`
如果文件不存在,参考以下模板创建:
```env
# ==================== 服务器配置 ====================
PORT=3001
HOST=0.0.0.0
NODE_ENV=development
LOG_LEVEL=info
# ==================== 数据库配置 ====================
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical_research
# ==================== Redis配置 ====================
REDIS_URL=redis://localhost:6379
# ==================== JWT配置 ====================
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d
# ==================== LLM API配置 ====================
# DeepSeek
DEEPSEEK_API_KEY=sk-your-deepseek-key
# 通义千问阿里云DashScope
DASHSCOPE_API_KEY=sk-your-qwen-key
# Gemini可选
GEMINI_API_KEY=your-gemini-key
# ==================== Dify配置 ====================
DIFY_API_KEY=app-your-dify-key
DIFY_API_URL=http://localhost/v1
# ==================== 文件上传配置 ====================
UPLOAD_MAX_SIZE=10485760
UPLOAD_DIR=./uploads
# ==================== CORS配置 ====================
CORS_ORIGIN=http://localhost:5173
```
---
### 2. 验证配置
**启动后端服务:**
```bash
cd backend
npm run dev
```
**检查启动日志:**
```
✓ Prisma schema loaded
✓ Environment variables loaded from .env
✓ Datasource "db": PostgreSQL database "ai_clinical_research"
✓ Server running on http://0.0.0.0:3001
```
**验证数据库连接:**
```bash
cd backend
npx prisma migrate status
```
**预期输出:**
```
Environment variables loaded from .env
Datasource "db": PostgreSQL database "ai_clinical_research", schema "public" at "localhost:5432"
Database schema is up to date!
```
---
### 3. 常见问题排查
#### 问题1数据库连接失败
**错误信息:**
```
Error: Can't reach database server at localhost:5432
```
**解决方案:**
1. 检查PostgreSQL是否启动
2. 验证端口5432是否被占用
3. 确认用户名密码是否正确
**检查PostgreSQL状态Windows**
```bash
# 查看服务状态
Get-Service postgresql*
# 启动服务
Start-Service postgresql-x64-15
```
---
#### 问题2LLM API调用失败
**错误信息:**
```
Error: Invalid API key
```
**解决方案:**
1. 检查API Key是否正确复制
2. 确认API Key是否已激活
3. 检查账户余额是否充足
---
#### 问题3Dify连接失败
**错误信息:**
```
Error: connect ECONNREFUSED 127.0.0.1:80
```
**解决方案:**
1. 检查Dify是否启动`docker-compose ps`
2. 启动Dify`docker-compose up -d`
3. 验证访问:浏览器打开 http://localhost
---
## 📊 配置检查清单
使用以下清单验证配置完整性:
- [ ] ✅ 数据库连接成功(`npx prisma migrate status`
- [ ] ✅ DeepSeek API Key配置且可用
- [ ] ✅ Qwen API Key配置且可用
- [ ] ✅ Dify服务运行中`docker-compose ps`
- [ ] ✅ Dify API Key已配置
- [ ] ✅ JWT密钥已配置
- [ ] ✅ 后端服务启动成功端口3001
- [ ] ✅ 前端服务启动成功端口5173
- [ ] ✅ CORS配置正确前端可访问后端API
---
## 🔄 配置更新记录
| 日期 | 更新内容 | 更新人 |
|------|---------|--------|
| 2025-11-09 | 初始配置文档创建 | 技术团队 |
| - | 待记录 | - |
---
## 📚 相关文档
- [数据库连接配置](../09-架构实施/02-数据库连接配置.md)
- [部署架构设计](../05-部署文档/01-部署架构设计.md)
- [系统架构总览](../00-项目概述/技术架构总览.md)
---
**文档版本:** v1.0
**最后更新:** 2025-11-09
**维护者:** 技术团队