用个人对话微调1.5B本地工具助手
开源助手JERN以个人对话微调Qwen2.5-1.5B-Instruct,结合FastAPI、单文件网页和插件执行文件、Shell及搜索等操作。项目另含从零训练的字符级Transformer,用于学习实验,与实际助手模型分开。
AI 深度解读
把自己的对话拿来微调一个小模型,再给它接上文件和 Shell,能不能做出一个属于自己的 AI 助手?作者做了个叫 JERN 的开源实验:模型、界面和工具都能在自己的机器上运行,还能按自己写的对话样本调整回答风格。
它的价值不在于证明小模型能替代成熟的编程助手,而在于把一条完整链路摊开:怎么训练、怎么调用工具、借用云端 GPU 后哪些数据会离开电脑,以及小模型到底会在哪些地方出错。
个性化靠什么,1.5B 又够做什么
JERN 全称是 Just An Experimental Response Network。项目里有两个模型,但承担助手工作的只有一个:基于 Qwen/Qwen2.5-1.5B-Instruct 微调的 Chat model。
训练数据放在 data/chat/conversations.txt,内容是作者自己编写的对话,包括 JERN 怎么介绍自己、用什么语气回答,以及什么时候应该调用工具。model/jern/data.py 负责把文本解析成数据集。
这里要分清:原文没有描述自动收集聊天历史、持续学习用户习惯的机制。它展示的是通过人工编写的样本,教模型按指定风格回答和调用工具。
首次运行时,应用会下载基础模型并微调。作者给出的耗时是 GPU 上 5–10 分钟,CPU 上一小时或更久;结果保存到 out-jern/,后续启动直接复用。不过,原文没有交代训练数据规模、具体硬件和训练参数,这组时间只能作为作者环境下的参考。
选择 1.5B,主要因为它能适配配置不高的 GPU,微调快,整条流程也容易读懂和修改。代价同样明确:作者遇到了选错工具、重复回答和事实错误。
另一个 Char model 是作者从零编写的 GPT 风格 Transformer,在同一份文件上逐字符训练。它用于学习实验,不负责驱动助手,不能把两个模型理解成协作完成任务。
真正让它能办事的是工具循环
应用由 FastAPI 服务、无需构建的单文件 Web UI,以及工具插件组成。执行 python main.py 后,界面会在本机 127.0.0.1:8000 打开。
工具循环的过程很直接:模型提出工具调用,服务端执行,再把结果送回模型,让它决定下一步。模型自己不会直接操作操作系统,真正读文件、执行命令的是应用层。
每个工具对应 app/tools/ 下的一个文件,通过 ToolRegistry 注册。内置能力覆盖文件、Shell、网页搜索、下载和系统信息;还可以通过 mcp.json 配置 MCP 服务器,例如 GitHub。界面会在最终回答之前,用时间线展示各次工具调用。
回答像不像自己,与能否可靠地操作电脑,是两件需要分别验证的事。
作者提醒,模型操作的是真实文件和真实命令,批准前应检查它准备执行什么。但原文没有展开审批机制,也没说明是否有目录限制、命令限制或隔离执行环境。工具调用过程可见,有助于检查,却不足以证明执行安全。
借用 Colab 后,哪些东西仍然留在本地
作者的笔记本没有 GPU,因此加入了可选的 Colab 模式:
python main.py colab --gpu=T4 -- serve
这条命令解决的是本机缺少 GPU 的问题。要注意 colab --gpu=T4:它把模型放到免费的 Google Colab T4 上运行,通过 SSH 隧道连接同一个本地 Web UI,工具仍在作者电脑上执行。
执行位置和数据流向需要分开看。模型在 Colab,就会收到用户消息和工具返回的内容,包括目录列表、文件正文、命令输出。SSH 隧道并没有让远端推理变成本地推理。
如果目标是让对话和文件内容留在自己的硬件上,就应该跳过 Colab。
相关配置和隧道说明放在仓库的 docs/colab.md。这是算力不足时的替代方案,但不能继续按完全本地的隐私边界理解它。
我的判断
我更认可 JERN 作为学习项目的价值:模型训练、服务、工具执行和界面都有明确位置,范围也足够小,适合程序员顺着源码理解一个助手如何运转。
但「微调后更适合自己」目前还是作者的经验之谈。原文没有提供与基础模型、仅使用提示词、或更大模型的对照结果,也没有工具调用成功率。因此,它能说明这条路跑通了,不能说明微调就是个性化助手的最佳起点。
如果只想调整语气和自我介绍,我会先用提示词验证需求,再决定是否值得增加训练流程。如果希望提高操作可靠性,则应单独评估工具选择、参数和执行权限。把错误调用样例补进训练集可以尝试,但不能据此认定风险已经解决。
能拿来做什么
- 想理解 AI 助手的全流程,可以按原文命令启动 MIT 许可的项目,再沿着数据解析、模型输出和工具执行三个环节读源码:
git clone https://github.com/IshvaraX/JERN
cd JERN
python -m venv venv
pip install -r requirements.txt
python main.py
注意最后的 python main.py:首次运行包含模型下载和微调,不能按普通 Web 服务的启动耗时预期它。
- 想给日常 AI 编程增加本地文件能力,可以先研究
app/tools/和ToolRegistry,从列目录、读取文件等只读工具理解调用循环,再考虑 Shell 执行。 - 想验证个性化是否有效,可以用相同问题比较基础模型与微调结果,分别记录语气表现、事实错误和工具选择,避免只凭「听起来更像自己」判断效果。
- 准备使用 Colab 时,应先确认任务是否会读取私有源码或其他敏感文件;本地工具的返回结果也属于发送给远端模型的数据。