83 lines
3.3 KiB
Markdown
83 lines
3.3 KiB
Markdown
# Meeting Summary Lab
|
||
|
||
这是从 Meetily 提取出的纯 Python 长会议总结测试项目。输入是**已经得到的会议文字稿**;不含 ASR、音频、数据库、录音或界面。
|
||
|
||
它严格复现原项目的核心路线:
|
||
|
||
```text
|
||
完整文字稿
|
||
-> 估算 token 数
|
||
-> 超过阈值则按窗口切块(相邻块重叠 100 tokens)
|
||
-> 每个块提取关键点、决策、行动项、人员
|
||
-> 一次性合并各块摘要
|
||
-> 按 Markdown 模板生成最终会议纪要
|
||
```
|
||
|
||
默认采用与原项目一致的粗略估算:`字符数 * 0.35`。块切分优先在句末(`. `)或空格处断开。
|
||
|
||
## 安装
|
||
|
||
项目依赖 PyYAML,用于加载可编辑的 YAML 提示词配置。可直接用源码运行:
|
||
|
||
```powershell
|
||
cd meeting-summary-lab
|
||
$env:PYTHONPATH = "src"
|
||
python -m meeting_summary_lab chunk --input .\examples\meeting.txt --context-tokens 4096
|
||
python -m meeting_summary_lab summarize --input .\examples\meeting.txt --fake --output .\report.md
|
||
```
|
||
|
||
也可以安装为本地命令:
|
||
|
||
```powershell
|
||
python -m pip install -e .
|
||
meeting-summary-lab summarize --input .\examples\meeting.txt --fake
|
||
```
|
||
|
||
## 可独立测试的功能单元
|
||
|
||
| 单元 | 命令 / API | 用途 |
|
||
| --- | --- | --- |
|
||
| Token 估算 | `rough_token_count(text)` | 验证触发分块的阈值 |
|
||
| 切块 | `chunk_text(text, size, overlap)` 或 `chunk` | 验证块尺寸、重叠与边界 |
|
||
| 单块摘要 | `SummarizationPipeline.summarize_chunk()` | 验证 map prompt |
|
||
| 摘要合并 | `combine_chunk_summaries()` | 验证 reduce prompt |
|
||
| 模板报告 | `render_final_report()` | 验证 Markdown 模板化 |
|
||
| 全链路 | `summarize` | 验证单次/分块两种路径 |
|
||
|
||
## 调整提示词
|
||
|
||
默认中文提示词位于 `prompt/zh/base.yaml`。其中 `system` 管理各阶段系统提示词,`prompts` 管理 map、reduce 和最终报告的用户提示词模板,`templates.final_output` 管理默认 Markdown 结构。修改 YAML 后,下次启动程序即可生效,无需改动 Python 代码。
|
||
|
||
## 使用真实本地模型(Ollama)
|
||
|
||
先启动 Ollama 并准备模型,例如:
|
||
|
||
```powershell
|
||
ollama pull qwen3:4b
|
||
$env:PYTHONPATH = "src"
|
||
python -m meeting_summary_lab summarize `
|
||
--input .\examples\meeting.txt `
|
||
--endpoint http://localhost:11434/v1 `
|
||
--model qwen3:4b `
|
||
--context-tokens 8192 `
|
||
--output .\report.md
|
||
```
|
||
|
||
客户端使用 OpenAI 兼容的 `/chat/completions` 协议,因此也可以指向 vLLM、LM Studio 或企业内部兼容网关。`--api-key` 是可选的;默认从 `OPENAI_API_KEY` 读取。
|
||
|
||
## 离线全流程测试
|
||
|
||
加入 `--fake` 可使用确定性测试模型:它不会调用任何网络,而是记录每一步 prompt 并生成可检查的占位结果。这适合验证切块、调用次数和模板结构;不代表真实模型质量。
|
||
|
||
```powershell
|
||
$env:PYTHONPATH = "src"
|
||
python -m unittest discover -s tests -v
|
||
python -m meeting_summary_lab summarize --input .\examples\meeting.txt --fake --context-tokens 500
|
||
```
|
||
|
||
## 与 Meetily 原实现一致的限制
|
||
|
||
这是**单层 Map-Reduce**:块摘要会在一次请求中统一合并,随后再执行一次模板化请求。极端长会议可能使“摘要合并”或“最终模板化”仍超出上下文;该项目刻意保留这一行为,方便复现和测试。若你要消除该限制,可在 `combine_chunk_summaries()` 外再套递归分组归并。
|
||
|
||
|