# 金融文本大模型打标项目
这是一个给初学者使用的金融文本大模型打标项目,分两步完成:
1. **命令行打标**:跑通大模型调用,终端输出清晰摘要。
2. **网页打标**:点选任务和示例数据,左右对比提示词与模型结果。
## 一、PyCharm 快速运行(推荐)
### 1. 用 PyCharm 打开项目
请打开 **`financial-labeling-project` 文件夹**作为项目根目录(不要只打开上一级 `Day_03`),否则运行配置路径会对不上。
### 2. 三种运行方式(任选)
**方式 A:右上角运行配置(最稳)**
项目已内置 `.run/` 配置,打开 PyCharm 后可在右上角直接选:
| 运行配置 | 作用 |
| --- | --- |
| `Run Web` | 启动网页 http://127.0.0.1:8000 |
| `Label Classify` | 命令行分类打标 |
| `Label Extract` | 命令行抽取打标 |
| `Label Match` | 命令行匹配打标 |
**方式 B:右键运行 Python 文件**
- 右键 `run_web.py` → **Run 'run_web'**
- 右键 `label.py` → **Run 'label'**(需在 Run Configuration 里补参数 `--task classify`)
**方式 C:README 里一键运行**
下文命令块使用 `bash` / `powershell` 标记。在 PyCharm 打开本 README 时,代码块左侧会出现 **绿色运行按钮**(需 2023.1+)。
> 若看不到运行按钮:确认代码块语言是 `bash` 或 `powershell`,不要用 `text`。
### 3. 配置环境变量
PyCharm:**Run → Edit Configurations → Environment variables** 添加:
```text
DASHSCOPE_API_KEY=你的密钥
```
或在 Windows 用户环境变量中配置 `DASHSCOPE_API_KEY`。
API Key **不要**写进 `config.yaml`。
## 二、项目结构
```text
financial-labeling-project/
bootstrap.py ← 自动切换工作目录,PyCharm 任意位置可运行
config.yaml ← 模型、路径、输出格式配置
label.py ← 命令行入口
run_web.py ← 网页入口
.run/ ← PyCharm 运行配置
requirements.txt
backend/
prompts/
data/
frontend/
outputs/
```
## 三、准备环境
安装依赖(PyCharm README 可点击运行):
```bash
pip install -r requirements.txt
```
Windows PowerShell 等价命令:
```powershell
pip install -r requirements.txt
```
## 四、config.yaml 说明
```yaml
llm:
model: qwen-plus
temperature: 0
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
timeout_seconds: 60
generator:
model: qwen-plus
temperature: 0.85
timeout_seconds: 90
max_retries: 3
hard_temperature: 0.95
hard_max_retries: 5
hard_timeout_seconds: 120
cli:
output_mode: summary # summary | json | quiet
show_raw_output: false
text_preview_length: 60
save_json: true
```
## 五、第一步:命令行打标
默认运行(清晰摘要输出):
```bash
python label.py --task classify
```
其他常用命令:
```bash
python label.py --task extract
python label.py --task match
python label.py --task classify --difficulty hard
python label.py --task classify --output json
python label.py --task classify --output quiet
```
终端默认显示:**标准 vs 模型对比 + 正确/错误判断 + 汇总表**。
完整 JSON(含 `expected`、`is_correct`)保存到 `outputs/{task}_results.json`。
## 六、第二步:统一网页打标
推荐启动(PyCharm 可直接运行 `run_web.py`,或 README 点击运行):
```bash
python run_web.py
```
Windows PowerShell:
```powershell
python run_web.py
```
备选(需已安装 uvicorn):
```bash
uvicorn backend.main:app --reload --app-dir .
```
打开页面:
```text
http://127.0.0.1:8000
```
`bootstrap.py` 会自动把工作目录切到项目根,一般**不需要**再手动 `cd financial-labeling-project`。
### 页面功能
- **点选任务 / 难度 / 示例**
- **生成测试数据**:困难样本含程序校验,不合格自动重试
- **左右对比**:左蓝提示词,右绿结果
### 后端接口
| 接口 | 作用 |
| --- | --- |
| `GET /prompt/{task}` | 获取提示词 |
| `GET /samples/{task}?difficulty=easy` | 获取文件中的示例 |
| `POST /generate-sample` | 生成一条测试数据 |
| `POST /label` | 提交打标 |
## 七、学生最需要知道的位置
| 想做的事 | 修改位置 |
| --- | --- |
| 改模型、温度、输出格式 | `config.yaml` |
| 修改分类提示词 | `prompts/classify.txt` |
| 修改抽取提示词 | `prompts/extract.txt` |
| 修改匹配提示词 | `prompts/match.txt` |
| 修改分类测试数据 | `data/classify_samples.json`(含 `expected_category`) |
| 修改抽取测试数据 | `data/extract_samples.json`(含中文 `expected_result`) |
| 修改匹配测试数据 | `data/match_samples.json`(含 `expected_is_match`) |
| 查看命令行打标结果 | `outputs/` |
## 八、常见问题
| 问题 | 解决办法 |
| --- | --- |
| README 命令块没有绿色运行按钮 | 确认是 `bash`/`powershell` 代码块;升级 PyCharm 2023.1+ |
| PyCharm 报 `No module named 'backend'` | 用 PyCharm 打开 `financial-labeling-project` 文件夹;或运行 `run_web.py` / `label.py` |
| 点击「生成测试数据」无反应 | 浏览器 F12 查 JS 错误;Ctrl+F5 刷新 |
| 一直卡在「生成中...」 | 检查 `DASHSCOPE_API_KEY`、网络 |
| `DASHSCOPE_API_KEY 未设置` | 在 PyCharm Run Configuration 或系统环境变量中配置 |
## 九、课堂实验建议
1. PyCharm 选 **Label Classify** 运行,看终端汇总表。
2. 改 `config.yaml` 里 `cli.output_mode` 为 `json`,再运行一次。
3. 删分类提示词里的「只能从给定类别中选择」,重新运行并对比 `outputs/`。
4. 选 **Run Web**,网页中对同一示例重新打标,观察右栏变化。