Classification Model Comparison logo

Classification Model Comparison

Organization
QFIN-tech
classification-model-comparison

多模型标准化评估横向对比——输入多个模型的标准化评估 JSON,对 oot 和 all 两档分别做 N-way 全维度对比(AUC、KS、分桶标签率/lift/召回率/累计召回),输出含条件格式的 Excel 报告与 delta 分析。由 classification-model-development 统一编排调用。当用户说"模型对比""对比评估""哪个模型更好""新旧对比""多版本对比""横向对比"时使用。

Overview

PublisherQFIN-tech
Repositorymodel-evo
Skill nameclassification-model-comparison
Stars
52
Forks
17
Bundled files
5
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by QFIN-tech on GitHub. Read the source before you install it.

Installation

Install the Classification Model Comparison AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/QFIN-tech/model-evo/tree/main/model-skills/classification-model-comparison
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/QFIN-tech/model-evo.git /tmp/model-evo
mkdir -p .claude/skills
cp -r /tmp/model-evo/model-skills/classification-model-comparison .claude/skills/classification-model-comparison
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Classification Model Comparison in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Classification Model Comparison on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Classification Model Comparison is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

模型对比

1. 输入依赖

输入必选来源说明
oot eval JSON(≥2 份)✅classification-model-evaluation 产出的 *_oot_eval.json同数据、同客群、同指标口径
all eval JSON(≥2 份)✅classification-model-evaluation 产出的 *_all_eval.json(--input-dir 模式自动产出)同数据、同客群、同指标口径

前置约束:对比必须在相同数据集、相同客群、相同指标口径上进行;不对比在不同测试集上评估的模型。

2. 执行命令

<skill_dir> 指本 skill 所在目录(即本文件所在目录),执行时替换为实际绝对路径,不要依赖当前工作目录。

单次 N-way 对比(手动指定 JSON 列表):

bash
# oot 单独对比
python <skill_dir>/scripts/compare_models.py \
  --jsons V1_oot_eval.json V2_oot_eval.json V3_oot_eval.json \
  -o /tmp/oot --fmt all

# all(train+test+oot 合并)对比
python <skill_dir>/scripts/compare_models.py \
  --jsons V1_all_eval.json V2_all_eval.json V3_all_eval.json \
  -o /tmp/all --fmt all

会话级聚合对比(自动扫描 session 内所有 run,对 oot 和 all 两档各产一份):

bash
python <skill_dir>/scripts/aggregate_session_comparison.py \
  --session-dir <session_dir> \
  --produced-by skills/model-comparison

脚本扫描 new-models/*/evaluation/ 和 model-recommend/*/evaluation/ 下的 eval JSON,对 oot 和 all 两档分别调 compare_models.py 对比,最终合成一份 combined 输出(中间产物落临时目录自动清理)。

3. 参数说明

compare_models.py

参数必选默认值说明
--jsons✅-模型 *_eval.json 列表,nargs="+",可传多个(脚本本身不校验数量下限,传 1 个也会跑出退化的对比结果,需上层调用方保证 ≥2 个)
-o / --output否对比报告输出文件前缀(含路径),父目录不存在会自动创建
--fmt否all输出格式,取值 json / md / xlsx / all

aggregate_session_comparison.py

参数必选默认值说明
--session-dir✅-session 根目录,需含 new-models/ 和/或 model-recommend/ 子目录
--produced-by否skills/model-comparison写入 _manifest.json 的来源标识

4. 输出产物

compare_models.py

text
<output_prefix>.json
<output_prefix>.md
<output_prefix>.xlsx

aggregate_session_comparison.py

中间产物流入临时目录,最终产出 10 个文件:6 个 per-split 文件 + 3 个 combined 文件 + 1 个 manifest。

text
<session_dir>/model-comparison/
├── model-comparison_oot.json    ← oot 单 split 对比结果
├── model-comparison_oot.md
├── model-comparison_oot.xlsx
├── model-comparison_all.json    ← all 单 split 对比结果
├── model-comparison_all.md
├── model-comparison_all.xlsx
├── 对比报告.json    ← {"oot": {...comparison...}, "all": {...comparison...}}
├── 对比报告.md      ← oot MD + 空行 + all MD 拼接
├── 对比报告.xlsx    ← 3 Sheet,oot/all 同 Sheet 上下堆叠
└── _manifest.json

_SPLITS = ("oot", "all") —— 只产出 oot 和 all 两档,不产出 train/test 档。

4.1 产物内容

产物说明
model-comparison_{oot,all}.json单 split 结构化对比结果,fill_report.py --section VII 的输入源。内含 comparison_meta(对比模型列表/数量)、auc_comparison / ks_comparison(按客群分组,行=客群,列=模型名)、buckets_by_model(各模型全量十分桶明细)
model-comparison_{oot,all}.md单 split 人类可读报告:标题 + 对比模型列表 + AUC 对比表(按客群) + KS 对比表(按客群)
model-comparison_{oot,all}.xlsx单 split 三 Sheet:1-指标对比、2-分桶并排对比、3-raw_data。Sheet 2 含 DataBar 条件格式
对比报告.json结构化对比结果,顶层为 {"oot": {...}, "all": {...}},每个 split 内容同 model-comparison_{split}.json
对比报告.md人类可读报告:oot 和 all 两段拼接,每段含标题 + 对比模型列表 + AUC 对比表(按客群) + KS 对比表(按客群)
对比报告.xlsx三 Sheet:1-指标对比、2-分桶并排对比、3-raw_data。每个 Sheet 内 oot 和 all 上下堆叠,以 split 标签行分隔。条件格式:详见 references/databar-formatting-spec.md。
_manifest.json记录 stage、produced_by、created_at、compare_engine、session_dir、included_runs(命中的 run 目录名列表)、splits(实际产出的档位)、skipped(因样本不足跳过的档位及原因)

5. 与其他 skill 的关联

上下游Skill关系
上游classification-model-evaluation提供本 skill 的唯一合法输入 *_eval.json(含 *_oot_eval.json 和 *_all_eval.json),是本 skill 的强制前置
编排方classification-model-development统一编排调用本 skill,本 skill 不被 classification-model-evaluation 直接调用

6. 执行约束

约束说明
前置强制不跳过 classification-model-evaluation 直接对比原始打分文件
对比口径不对比在不同测试集 / 不同客群 / 不同指标口径上评估的模型
结论产出不只凭 AUC 宣布胜者——必须结合分桶指标(label率/lift/召回率/累计召回)综合判断,DataBar 辅助观察单调性
噪声阈值delta < 0.005 不认定为有意义差异(N < 5000 时是噪声)
产出覆盖每次运行直接覆盖上次结果,不保留历史版本

7. 异常处理

条件处理方式
某档 eval JSON 不足 2 个aggregate_session_comparison.py 跳过该档,不产出对应三件套,原因记入 _manifest.json 的 skipped 字段
all eval JSON 不存在回退调用 merge_eval_splits.py 从 train/test/oot 合并生成;正常流程由 eval_single.py --input-dir 直接产出,不经过此路径
compare_models.py 找不到aggregate_session_comparison.py 抛 FileNotFoundError 并终止
session_dir 不存在aggregate_session_comparison.py 抛 FileNotFoundError
new-models/ 与 model-recommend/ 均不存在停止执行,提示检查 --session-dir
compare_models.py 子进程非 0 退出aggregate_session_comparison.py 打印其 stdout/stderr 后抛 RuntimeError
预期产物文件未生成aggregate_session_comparison.py 抛 FileNotFoundError 并附 compare_models 的 stdout

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Classification Model Comparison AI skill do?

多模型标准化评估横向对比——输入多个模型的标准化评估 JSON,对 oot 和 all 两档分别做 N-way 全维度对比(AUC、KS、分桶标签率/lift/召回率/累计召回),输出含条件格式的 Excel 报告与 delta 分析。由 classification-model-development 统一编排调用。当用户说"模型对比""对比评估""哪个模型更好""新旧对比""多版本对比""横向对比"时使用。

Why use Classification Model Comparison on TypingMind?

Because you install it once and use it with any model. Classification Model Comparison is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Classification Model Comparison in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/QFIN-tech/model-evo/tree/main/model-skills/classification-model-comparison. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Classification Model Comparison?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Classification Model Comparison?

As many as you like. As long as a model supports skills, you can use Classification Model Comparison with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Classification Model Comparison AI skill free?

Yes. It is published on GitHub by QFIN-tech under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇