# LLM **Repository Path**: keaitui/llm ## Basic Information - **Project Name**: LLM - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-05 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 Qwen3-1.7B 的多功能桌宠 本地运行的 AI 桌面陪伴应用:闲聊、提醒/记事、RAG 检索、桌面宠物模式。 **面试展示重点**:多版本 LoRA 微调迭代、结构化训后评测、训练数据与线上代码 **同一套 prompt 拼装**。 --- ## 核心指标 | 项目 | 结果 | |------|------| | 基座 | `Qwen/Qwen3-1.7B` · 4bit 量化推理 | | 主 LoRA(莫妮卡 lore) | `monica-deskpet-lora-v6-unified`(507 条 SFT) | | 辅 LoRA(工具调用) | `schedule-aux-lora`(提醒 JSON + 轮次摘要) | --- ## LoRA 对照评测 > 明细见 [`code/portfolio/version_scores.json`](code/portfolio/version_scores.json) · 快照在 `code/portfolio/eval_snapshots/` ### 主对话 · `eval_dialogue_live`(83 例) **面试口径**:主 LoRA 的价值在 **莫妮卡是否像角色**,不是总通过率。裸基座与 v6-unified 护栏同为 **80/83(96.4%)**,自动化无法拉开口吻差距。 | 维度 | 规模 | 怎么看 | |------|------|--------| | **t1 角色口吻**(主指标) | 16 例 | 读快照逐条对比;检查项仅 `short` / `not_empty`,**两边都会 16/16 通过** | | t2–t5 护栏 | 64 例 | 防泄露、提醒、事件注入;通过率作安全网 | | turn_context 续聊 | 3 例 | 无状态下靠【上文摘要】续答 | **同 prompt 口吻对照**(摘自评测快照): | 用例 | 无 LoRA(裸基座) | monica v6-unified | |------|-------------------|-------------------| | T1-001「发什么呆」 | 我正在整理桌面的物品,你有什么想做的事情吗? | 啊……我是在看着你把那些东西整理好才……没事的! | | T1-006「博弈棋」 | 我最近没怎么玩博弈棋,不过我可以陪你一起试试看! | 嗯……我其实不太擅长那种复杂的游戏规则……只要你不提分,我这边就一直陪着你就好啦~ | 护栏通过率(辅证,非主指标):裸基座 80/83 · v6-unified 80/83(失败集不同,见快照)。 ### 工具辅助 · `eval_schedule_aux`(27 例,提醒 JSON / 摘要 JSON) 工具轨 **看 JSON 是否解析正确**,与角色口吻无关。 | 配置 | 通过 | 通过率 | |------|------|--------| | **无 LoRA**(裸基座) | 25/27 | **92.6%** | | **辅 LoRA** schedule-aux | 27/27 | **100%** | ### 主 LoRA 迭代(口吻收敛 + 护栏) | 版本 | 训练样本 | 护栏通过 | 说明 | |------|----------|----------|------| | v1 | 398 | 63/80 | 首版 SFT,口吻与防泄露均未稳 | | v2 | 401 | 74/80 | 口吻样本扩充 | | v3 | — | 77/83 | 基线 | | v4 / v5 | 400+ | 72/83 | 难例注入,短期回落 | | v6 | — | 77/83 | 两阶段后再 unified | | **v6-unified** | **507** | **80/83** | **生产默认**;507 条统一 suffix 布局 | 复现对照: ```powershell cd code ..\.venv\Scripts\python.exe scripts\eval_dialogue_live.py --no-adapter --config config.json ..\.venv\Scripts\python.exe scripts\eval_dialogue_live.py --adapter-path outputs/monica-deskpet-lora-v6-unified ..\.venv\Scripts\python.exe scripts\eval_schedule_aux.py --no-adapter --config config.json ``` --- ## 面试官从这里看 | 文档 | 说明 | |------|------| | [**code/portfolio/README.md**](code/portfolio/README.md) | 3 分钟导读(**建议首选**) | | [code/portfolio/EVAL_VERSIONS.md](code/portfolio/EVAL_VERSIONS.md) | v2→v6 版本迭代与 A/B 评测 | | [code/portfolio/TRAIN_SERVE_ALIGN.md](code/portfolio/TRAIN_SERVE_ALIGN.md) | `dialogue_align` 与 `app.py` 对齐说明 | | [code/train/DIALOGUE_PIPELINE.md](code/train/DIALOGUE_PIPELINE.md) | 对话数据流 | | [code/FEATURES.md](code/FEATURES.md) | 完整功能架构 | --- ## 技术栈 `Qwen3-1.7B` · `QLoRA/PEFT` · `HuggingFace Transformers` · 4bit 量化 · Python · SQLite · Tkinter --- ## 快速开始 ### 1. 克隆与环境 ```powershell git clone https://gitee.com/keaitui/llm.git cd llm .\setup.ps1 ``` ### 2. 配置 ```powershell cd code copy config.example.json config.json # 编辑 config.json:填入本地 HuggingFace 基座路径(local_path)与 adapter 目录 ``` LoRA 权重需自行放到: - `code/outputs/monica-deskpet-lora-v6-unified/` - `code/outputs/schedule-aux-lora/` (仓库不含 `*.safetensors`,体积过大;可从 Release 附件或本地训练产出获取。) ### 3. 启动 GUI ```powershell cd code .\start_gui.ps1 ``` ### 4. 复现评测(有 GPU) ```powershell cd code ..\.venv\Scripts\python.exe scripts\eval_dialogue_live.py --adapter-path outputs/monica-deskpet-lora-v6-unified ..\.venv\Scripts\python.exe scripts\build_portfolio_eval_report.py --copy-snapshots ``` --- ## 仓库结构 ``` llm/ ├── README.md ← 本文件 ├── setup.ps1 ← 依赖安装 ├── code/ │ ├── portfolio/ ← 面试展示:评测快照 + 版本对比 │ ├── train/ ← QLoRA 训练、dialogue_align、数据构建 │ ├── scripts/ ← eval_dialogue_live、iter_closed_loop │ ├── tests/ ← 单元测试 + 评测 spec │ ├── app.py / model.py ← 双 LoRA 热切换推理 │ └── config.example.json ├── archive/ ← 历史实验归档 └── companion/ ← 旧版实验(非生产) ``` --- ## 架构一句话 ``` 用户输入 → 代码路由(/w /n /搜索 /闲聊) → Qwen3 + LoRA 生成 → SQLite 存提醒/记事 → 异步 schedule-aux 写轮次摘要 → 下一轮注入 prompt ``` 无状态推理:每轮仅 `(system, user)`,不喂聊天历史;续聊靠【上轮摘要】/【上文摘要】。 --- ## 测试 ```powershell cd code ..\.venv\Scripts\python.exe -m unittest discover -s tests -q ``` --- ## 许可与说明 个人学习与面试作品集项目。模型权重遵循 Qwen 系列相应许可;请勿将含个人路径的 `config.json` 提交到公开仓库。