跳到主要内容
返回开发者精选

天问:用 1B 模型把八字与周易变成自我反思

作者:liuyd-dev模型:MiniCPM5-1B

用 1B 模型把八字与周易变成自我反思

天问(Tianwen)是一个完全跑在本地的东方式自我反思应用。一个 1B 参数的模型,把三千年的中国术数语言,变成今天就能做到的一小步。它是 Build Small Hackathon 的参赛作品,名字取自屈原的《天问》:最值得问的问题,是问自己的问题。

  • 演示视频:8 分钟讲解
  • 社区帖子:r/huggingface
  • 模型:build-small-hackathon/tianwen-minicpm5-1b
  • 数据集:build-small-hackathon/tianwen-distill

这是什么​

天问挑了一个很玄的领域,中国的八字命理和六爻占卜,把它做成温和、带点游戏感的自我反思工具。它不算命,只把古老的符号换成日常的心理学语言,每次结尾都落到一个具体行动上。

四种解读,从最宽的视角收到最近的当下:

  • 命盘:一生的画像(八字四柱)
  • 年运:今年的基调,加上逐月展开的十二个月
  • 日盘:今天的能量、每日符印壁纸、30 天心情趋势
  • 请事:心里有问题时,掷三枚硬币六次,得到一次六爻解读

语言支持简体中文、繁体中文和英文。主题有“汝窑白”和“玄武黑”两种,可以装成 PWA。

思路与技术​

这届黑客松的主旨是“AI 的未来不必住在别人的数据中心里”。天问是一个完整应用,关键部分全在你自己的设备上跑:

层做法
排盘确定性计算:lunar-python 在本地算出八字、流年、流月和卦象,日期不靠模型猜。
解读微调后的 MiniCPM5-1B(1B 参数),经 llama.cpp 以 OpenAI 兼容接口提供服务。项目从教师模型蒸馏出自己的语气:平实、第二人称、不渲染厄运。
安全确定性护栏(safety/intercept):危机词立刻熔断,转向求助热线;不祥的符号会重映射成成长性的说法。这一层从不交给 1B 模型的概率。
兜底大模型不可用时,规则引擎照样能生成完整解读,所以离线也能用。

作者强调,这种语气不是靠提示词“调”出来的,是教出来的。完整的蒸馏 → LoRA → GGUF → 部署过程,以及踩过的每一个坑,都记在 Fine-Tuning Field Notes(docs/FINETUNE_REPORT.md)里。

技术栈:MiniCPM5-1B · LLaMA-Factory(LoRA,bf16)· Modal(A100 训练)· llama.cpp(GGUF Q4_K_M)· HF ZeroGPU(推理)· FastAPI + Gradio(后端)· React + shadcn/ui + Tailwind(前端)· lunar-python。

亮点​

  • 完全本地:零外部网络请求,可离线安装的 PWA。
  • 微调:自建蒸馏数据集,对 MiniCPM5-1B 做 LoRA 微调,loss 曲线健康。
  • 开放共享:数据集、训练和蒸馏脚本都开放,构建日志也写得很细。
  • 小模型也能干:用 1B 模型完成通常要 4B 以上模型才做的事;蒸馏和训练流水线跑在 Modal A100 上。

本地运行​

Bash
# 1) Build the React frontend (the backend serves this build)
cd frontend && pnpm install && pnpm build && cd ..

# 2) Start the backend
python app.py # → http://127.0.0.1:7860/

# 3) (optional) Serve the fine-tuned model for real LLM readings
llama-server -m finetune/data/tianwen-minicpm1b-q4_k_m.gguf --port 8888 -c 4096

即使没跑大模型,天问也能靠确定性的规则引擎正常工作。

仓库结构​

Plain Text
app.py FastAPI + Gradio backend (serves frontend/dist, SSE streaming readings)
bazi/ divination/ Deterministic charting & I-Ching engines (lunar-python)
prompts/ System prompts, templates, OpenAI-compatible LLM client
safety/ Crisis circuit-breaker + symbol re-mapping
finetune/ Distillation (gen_distill.py) + Modal training (train_modal.py) + deploy
frontend/ React + shadcn UI (build → frontend/dist)
docs/FINETUNE_REPORT.md The build log (Field Notes)

说明​

排盘基于 lunar-python,城市数据来自 GeoNames(CC BY 4.0)。本应用仅供自我反思和娱乐,不能替代专业的医疗、心理或财务建议。

相关链接​

项目信息

基于模型
MiniCPM5-1B
作者
liuyd-dev