MingLi-Bench
用全球算命师大赛真题,量化评估 GPT/Claude/Gemini 等大模型的命理推理与中文文化理解能力
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用全球算命师大赛真题,量化评估 GPT/Claude/Gemini 等大模型的命理推理与中文文化理解能力
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024 年,一位化名 DestinyLinker 的开发者在 GitHub 上传了一个名为 MingLi-Bench 的项目,上来就提了一个让很多人摸不着头脑的问题:大语言模型,到底能不能算准八字?
这不是一个无厘头的玩笑。在 AI 圈子里,用"玄学题"测试大模型其实是一种非常有价值的研究范式——命理学需要综合生辰信息、传统文化知识、模糊逻辑推理等多种能力,恰好覆盖了当前 LLM 的长处和短板:知识储备够不够、推理链是否连贯、对中文文化语境的理解有多深。如果 AI 连八字、紫微斗数都能推得准,那它的综合推理能力绝对不可小觑。
更关键的是,命理学有着客观的 ground truth(标准答案)——这些题目来源于真实的全球算命师大赛(HKJFMA),有专业评审打分,最终答案明确。这为量化评估 LLM 的命理推理能力提供了难得的数据基础。
MingLi-Bench 的评测题目并非凭空杜撰,而是从 2022—2025 年全球算命师大赛(Global Fortune Teller Competition)历年真题中精选而出。大赛由香港玄学协会(HKJFMA)主办,是全球规模最大的中国传统命理专业竞赛,参赛者均为职业命理师。
项目从大赛中精选了 160 道选择题,覆盖十二大人生领域:事业、健康、婚姻、子女、学业、官非、家庭、性格、灾劫、财运、运势、外貌。每道题以四字选择题形式呈现,评分标准是精确匹配(Exact Match)——模型输出的答案必须与标准答案完全一致才算正确。这个严格标准确保了评测结果的公正性。
题目数据以 JSON 格式存储在 data/data.json,每条记录包含:命主生辰信息(性别、出生年月日时分、地点)、事件类型、选择题四个选项和标准答案。命盘数据则借助 Python 库 iztro 预先排好,存储在 data/fortune_api_results.json,评测时按需注入。
MingLi-Bench 的代码架构清晰,体现了良好的工程设计习惯。核心在 mingli_bench/ 包:
| 文件 | 职责 |
|---|---|
benchmark.py | 主评测引擎:题目加载、并发调用、结果统计 |
cli.py | 命令行入口,参数解析 |
models/ | 模型客户端(OpenAI/Anthropic/Google/DeepSeek/Doubao/OpenRouter) |
data/ | 数据加载器,支持年份/类别过滤 |
utils/ | 日志、配置、装饰器等基础设施 |
评测引擎(FortuneTellingBenchmark)的核心流程是:加载题目 → 构造 prompt → 并发调用 LLM API → 提取答案 → 精确匹配评分。并发调用基于 Python ThreadPoolExecutor,默认 5 个 worker,支持通过 --max-workers 调整。
模型 Client 采用工厂模式(factory.py),支持 6 大平台:OpenAI(GPT 系列)、Anthropic(Claude 系列)、Google(Gemini 系列)、DeepSeek(R1 系列)、Doubao(火山引擎豆包)、OpenRouter(聚合代理)。用户只需指定模型名,系统自动识别平台路由到对应的 API Client。
提示词构造(_prepare_prompt)是评测质量的关键。项目支持两种模式:
--cot):在指令中加入"请先分析推理过程,然后给出答案",让模型展示推理步骤--astro):预先注入排好的八字和紫微斗数命盘,将"排盘"与"推理"解耦,专注评测推理能力答案提取(_extract_answer)用正则表达式从模型输出中提取答案字母(A/B/C/D),优先级依次为:显式"答案:X"格式 → 单行单独字母 → 句尾字母 → 最后出现的有效字母。
安装非常简洁:
git clone https://github.com/DestinyLinker/MingLi-Bench.git
cd MingLi-Bench
pip install -r requirements.txt
cp .env.example .env # 填入 API Key
运行评测只需一条命令:
python -m mingli_bench.cli \
--model openai/gpt-4o --year 2025 --cot --astro --max-workers 8
支持的参数非常丰富:按年份过滤(--year)、按类别过滤(--categories)、思维链开关(--cot)、命盘注入(--astro)、随机打乱选项顺序(--shuffle-options,防位置偏差)等。评测结果保存在 logs/ 目录,包含每题详细结果(JSON)、核心指标摘要(TXT)和模型原始响应(按题目分文件)。
需要清醒认识到的是,MingLi-Bench 本质上测试的并不是模型是否"信命理",而是模型对中国传统命理文化的知识储备和逻辑推理能力。这是一个 AI 可解释性 + 文化理解能力的评测基准,而非对命理本身的学术认可。
此外,项目依赖外部 LLM API,评测结果受 API 版本、限流策略、时延等因素影响,可重复性有一定局限。题目样本量 160 道,分布在 12 个类别、4 个年份,每个子类的样本量相对较小,细粒度分析时需注意统计意义。
MingLi-Bench 代表了一种有价值的 LLM 评测思路——用垂直领域的专业任务来衡量模型的综合能力。相比通用的 MMLU / GSM8K,用命理题评测有几个独特价值:
从 Stars 增长曲线看,该项目在发布后获得了稳定关注,是 LLM 评测赛道中一个独特且有实际价值的存在。