# 金融文本大模型打标项目



这是一个给初学者使用的金融文本大模型打标项目，分两步完成：



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**，网页中对同一示例重新打标，观察右栏变化。


