[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-984":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},984,"MingLi-Bench","DestinyLinker\u002FMingLi-Bench","DestinyLinker","A benchmark for evaluating LLMs on Chinese traditional fortune telling — Bazi (八字) and Ziwei Doushu (紫微斗数).","https:\u002F\u002FdestinyLinker.github.io\u002FMingLi-Bench\u002F",null,"Python",1654,287,103,0,63,167,647,189,20.38,"MIT License",false,"main",true,[],"2026-06-12 02:00:21","\u003Cdiv align=\"center\">\n\n# Chinese Fortune Telling Bench\n\n**A benchmark for evaluating large language models on Chinese traditional fortune telling — Bazi (八字) and Ziwei Doushu (紫微斗数).**\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](.\u002FLICENSE)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.9%2B-blue.svg)](https:\u002F\u002Fwww.python.org\u002F)\n[![Questions](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FQuestions-160-green.svg)](.\u002Fdata\u002Fdata.json)\n[![Years](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FYears-2022--2025-orange.svg)](.\u002Fdata)\n\nEnglish | [中文](.\u002FREADME_zh.md)\n\n\u003C\u002Fdiv>\n\n---\n\n## Overview\n\nQuestions are multiple-choice and scored by exact match against a ground-truth answer. The corpus is sourced from the annual **Global Fortune Teller Competition** ([全球算命师大赛](https:\u002F\u002Fhkjfma.org)) for 2022–2025. Raw sheets live under [data\u002Fraw\u002F](.\u002Fdata\u002Fraw\u002F).\n\n| File | Description |\n|---|---|\n| [data\u002Fdata.json](.\u002Fdata\u002Fdata.json) | 160 normalized multiple-choice questions across twelve life aspects (career, health, marriage, children, wealth, …). |\n| [data\u002Ffortune_api_results.json](.\u002Fdata\u002Ffortune_api_results.json) | Pre-computed Bazi and Ziwei charts (via [iztro](https:\u002F\u002Fgithub.com\u002FSylarLong\u002Fiztro)), keyed by `case_id` and joined to `data.json` at runtime when `--astro` is set. Isolates pure reasoning from chart derivation. |\n\n> Filter by year with `--year`. Inspect the dataset with `--stats`.\n\n---\n\n## Installation\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FDestinyLinker\u002FMingLi-Bench.git\ncd MingLi-Bench\npip install -r requirements.txt\n```\n\n---\n\n## Configuration\n\nThe CLI reads API keys and defaults from a `.env` file. Copy the template and fill in only the providers you plan to use — empty or placeholder values are skipped automatically.\n\n```bash\ncp .env.example .env\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Supported providers\u003C\u002Fb>\u003C\u002Fsummary>\n\n```dotenv\n# OpenRouter — one key, most models\nOPENROUTER_API_KEY=sk-or-...\nOPENROUTER_BASE_URL=https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\n\n# Native providers (only if you call them directly)\nOPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https:\u002F\u002Fapi.openai.com\u002Fv1   # override for OpenAI-compatible gateways\nANTHROPIC_API_KEY=sk-ant-...\nGOOGLE_API_KEY=...\nDEEPSEEK_API_KEY=sk-...\nDEEPSEEK_BASE_URL=https:\u002F\u002Fapi.deepseek.com\n\n# Doubao \u002F Volcengine — both key and endpoint id are required\nDOUBAO_API_KEY=...\nDOUBAO_BASE_URL=https:\u002F\u002Fark.cn-beijing.volces.com\u002Fapi\u002Fv3\nDOUBAO_ENDPOINT_ID=ep-...\n\n# Defaults (CLI flags can override)\nTIMEOUT=60\nMAX_WORKERS=5\nMAX_TOKENS=8192\nTEMPERATURE=0.0\n```\n\n\u003C\u002Fdetails>\n\n`.env` is git-ignored. To run against a different key set, pass `--env-file \u002Fpath\u002Fto\u002Fother.env`.\n\n**Sanity check** once keys are in place:\n\n```bash\npython -m mingli_bench.cli --list-models   # supported model names\npython -m mingli_bench.cli --stats         # dataset statistics\n```\n\n---\n\n## Quick Start\n\n> **Recommended defaults:** always pass `--cot` and `--astro`. Chain-of-Thought gives the model room to reason through the chart, and `--astro` injects pre-computed Bazi\u002FZiwei charts so scores reflect reasoning ability rather than date-to-chart conversion accuracy. Drop them only when you specifically want to ablate either effect.\n\nThere are two common routing modes.\n\n### 1. Via OpenRouter (one key, most models)\n\nLeave `--platform` unset and write the model name in OpenRouter's `provider\u002Fmodel` form. The CLI auto-detects the `\u002F` and routes through OpenRouter.\n\n```bash\npython -m mingli_bench.cli --model openai\u002Fgpt-4o               --year 2025 --cot --astro --max-workers 8\npython -m mingli_bench.cli --model anthropic\u002Fclaude-sonnet-4-6 --year 2025 --cot --astro\npython -m mingli_bench.cli --model google\u002Fgemini-2.5-pro       --year 2025 --cot --astro\npython -m mingli_bench.cli --model deepseek\u002Fdeepseek-r1        --year 2025 --cot --astro\n```\n\n### 2. Native provider\n\nWhen the model name doesn't match auto-detection rules (e.g. a versioned Doubao endpoint id), or when you want to force an OpenAI-compatible gateway, pass `--platform` explicitly.\n\n```bash\n# Native Doubao \u002F Volcengine\npython -m mingli_bench.cli \\\n    --platform doubao --model doubao-seed-2-0-pro-260215 \\\n    --year 2025 --cot --astro --max-workers 8\n\n# Any model name, routed through an OpenAI-compatible gateway (set via OPENAI_BASE_URL)\npython -m mingli_bench.cli \\\n    --platform openai --model doubao-seed-2-0-pro-260215 \\\n    --year 2025 --cot --astro --max-workers 8\n```\n\n`--platform` accepts: `openai`, `openrouter`, `anthropic`, `google`, `deepseek`, `doubao`.\n\n---\n\n## CLI Reference\n\n| Flag | Default | Description |\n|---|---|---|\n| `--model, -m` | **required** | Model name. Contains `\u002F` → treated as an OpenRouter id; otherwise provider is inferred from prefix (`gpt-*`, `claude-*`, `gemini-*`, `deepseek-*`, `doubao-*`). |\n| `--platform` | inferred | Force routing platform, overriding prefix-based inference. |\n| `--year, -y` | all | Evaluate one year only. Available: `2022`, `2023`, `2024`, `2025`. |\n| `--max-workers` | `5` | Concurrent API calls. Raise to 8–16 if rate limits allow; lower on throttling. |\n| `--cot` | off | Prepend a Chain-of-Thought instruction to the prompt. |\n| `--astro` | off | Inject pre-computed Bazi\u002FZiwei charts from `data\u002Ffortune_api_results.json` into the prompt (model does not have to derive them from the birth date). |\n| `--sample, -s N` | all | Evaluate only the first N questions. Useful as a smoke test. |\n| `--categories, -c` | all | Filter by category, e.g. `--categories 事业 婚姻`. Available: 事业、健康、外貌、婚姻、子女、学业、官非、家庭、性格、灾劫、财运、运势. |\n| `--shuffle-options` | off | Randomize option order per question to guard against position bias. |\n| `--output-dir, -o` | `logs` | Directory for result files. |\n| `--no-save` | off | Print to terminal only; do not write files. |\n| `--env-file` | `.env` | Use a different env file. |\n| `--list-models` | — | Print supported model names and exit. |\n| `--stats` | — | Print dataset statistics (optionally filtered by `--year`) and exit. |\n\nFull help: `python -m mingli_bench.cli --help`.\n\n---\n\n## Output\n\nEach run writes three artifacts under `--output-dir` (default `logs\u002F`):\n\n| Artifact | Description |\n|---|---|\n| `\u003Cmodel>_results.json` | Per-question predictions, scoring, and aggregates. |\n| `\u003Cmodel>_summary.txt`  | Headline numbers. |\n| `\u003Cmodel>_responses\u002F`   | Raw model responses, one file per question. |\n\n---\n\n## License\n\nReleased under the [MIT License](.\u002FLICENSE).\n\n## Contact\n\n- Issues: [github.com\u002FDestinyLinker\u002FMingLi-Bench\u002Fissues](https:\u002F\u002Fgithub.com\u002FDestinyLinker\u002FMingLi-Bench\u002Fissues)\n- Email: [help@destinylinker.com](mailto:help@destinylinker.com)\n","MingLi-Bench 是一个用于评估大型语言模型在中国传统命理学（八字和紫微斗数）方面表现的基准测试工具。它通过多选题形式对模型进行评分，题目来源于2022年至2025年的全球算命师大赛。项目支持多种API接入方式，并允许用户根据需求选择不同的参数配置以优化测试过程。该工具特别适用于研究者、开发者以及对中国传统命理学感兴趣的人士，帮助他们更准确地衡量AI在这一特定文化背景下的理解和推理能力。",2,"2026-06-11 02:40:42","CREATED_QUERY"]