# AI 入门陪学课 · DeepSeek 实战版

这是一个适合带纯小白学习 AI 的网页项目，包含：

- AI 简史
- 市面 AI 类型
- 国内外大模型地图
- LLM / Agent / Skill / API / Key / Token / 上下文等概念
- 提示词生成器和 DeepSeek 点评
- HTML / CSS / JS / 前端 / 后端 / 服务器基础
- 小工具开发拆解
- DeepSeek 聊天实战区

项目是「前端 + Node.js 后端」结构。浏览器不会直接请求 DeepSeek，API Key 放在服务器 `.env` 里。

---

## 1. 项目结构

```bash
ai-partner-course-backend/
├── public/                 # 前端页面
│   ├── index.html
│   └── assets/
│       ├── styles.css
│       └── app.js
├── server/
│   └── server.js           # Node.js 后端
├── apache/
│   └── ai-course.conf      # Apache 反代示例
├── .env.example            # 环境变量示例
├── package.json
└── README.md
```

---

## 2. 本地/服务器启动

进入项目目录：

```bash
cd ai-partner-course-backend
```

安装依赖：

```bash
npm install
```

复制环境变量文件：

```bash
cp .env.example .env
```

编辑 `.env`：

```bash
vim .env
```

把里面的 Key 改成你的真实 DeepSeek API Key：

```bash
DEEPSEEK_API_KEY=sk-你的真实Key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-v4-flash
PORT=8789
```

启动：

```bash
npm start
```

浏览器访问：

```text
http://服务器IP:8789
```

或者在服务器本机测试：

```bash
curl http://127.0.0.1:8789/api/health
```

---

## 3. 用 PM2 常驻运行

如果你的服务器已有 PM2：

```bash
pm2 start server/server.js --name ai-course
pm2 save
pm2 status
```

查看日志：

```bash
pm2 logs ai-course
```

重启：

```bash
pm2 restart ai-course
```

---

## 4. Apache 反代部署到 `/ai-course/`

启用 Apache 代理模块：

```bash
sudo a2enmod proxy proxy_http headers rewrite
sudo systemctl reload apache2
```

把示例配置复制到你的 Apache 配置目录。你之前习惯把工具配置放到 `/etc/apache2/jiangzao-conf.d/`，可以这样：

```bash
sudo mkdir -p /etc/apache2/jiangzao-conf.d
sudo cp apache/ai-course.conf /etc/apache2/jiangzao-conf.d/ai-course.conf
```

然后确保你的主站 VirtualHost 里有这一行：

```apache
IncludeOptional /etc/apache2/jiangzao-conf.d/*.conf
```

检查并重载：

```bash
sudo apache2ctl configtest
sudo systemctl reload apache2
```

访问：

```text
https://你的域名/ai-course/
```

例如：

```text
https://jiangzao.cc/ai-course/
```

---

## 5. 注意事项

### API Key 不要放前端

不要把 DeepSeek Key 写进：

```text
public/assets/app.js
public/index.html
```

只能放在服务器 `.env`。

### 模型名

当前示例默认：

```bash
DEEPSEEK_MODEL=deepseek-v4-flash
```

如果你的账号暂时只支持旧模型名，可以临时改成：

```bash
DEEPSEEK_MODEL=deepseek-chat
```

不过官方文档已经标注 `deepseek-chat` 和 `deepseek-reasoner` 将在 2026-07-24 废弃，建议尽量迁移到新版模型名。

### 端口冲突

如果 `8789` 被占用，改 `.env`：

```bash
PORT=8790
```

同时修改 `apache/ai-course.conf` 里的端口。

---

## 6. 常见问题

### 页面打开了，但显示「后端正常 · 未配置 Key」

说明 Node 服务启动了，但 `.env` 里的 `DEEPSEEK_API_KEY` 没填或没生效。

处理：

```bash
vim .env
pm2 restart ai-course
```

### DeepSeek 请求失败

检查：

1. Key 是否有效
2. 服务器能否访问 `https://api.deepseek.com`
3. 模型名是否正确
4. 账户是否有余额
5. `.env` 修改后是否重启了 Node/PM2

### Apache 访问 502

说明 Apache 反代到了 Node，但 Node 没启动或端口不对。

检查：

```bash
pm2 status
curl http://127.0.0.1:8789/api/health
sudo tail -f /var/log/apache2/error.log
```
