概述
Hypogenic 提供基于大语言模型的自动化假设生成与检验能力,用于加速科学发现。框架支持三种方法:HypoGeniC(数据驱动假设生成)、HypoRefine(文献与数据协同整合)以及 Union 方法(将文献假设与数据驱动假设进行机制化组合)。
主要能力
1. HypoGeniC:数据驱动假设生成
仅从观测数据出发,通过迭代优化生成假设。
流程:
- 先用小规模数据子集初始化生成候选假设
- 根据性能迭代优化假设
- 用来自困难样本的新假设替换表现较差的假设
适用:无现有文献的探索性研究、新数据集中的模式发现。
2. HypoRefine:文献与数据整合
通过智能体框架将现有文献与实证数据协同结合。
流程:
- 从相关研究论文(通常 10 篇)中提取洞见
- 从文献生成有理论依据的假设
- 从观测模式生成数据驱动假设
- 通过迭代改进优化两个假设库
适用:已有理论基础的研究、验证或扩展已有理论。
3. Union 方法
将纯文献假设与框架输出进行机制化组合。
变体:
- Literature ∪ HypoGeniC:文献假设与数据驱动生成结合
- Literature ∪ HypoRefine:文献假设与整合方法结合
适用:全面假设覆盖,在保持多样视角的同时消除冗余。
使用方式
安装
uv pip install hypogenic
可选依赖:
- Redis 服务器(端口 6832):缓存 LLM 响应,在迭代假设生成期间显著降低 API 成本
- s2orc-doc2json:HypoRefine 工作流中处理文献 PDF 所需
- GROBID:PDF 预处理所需
克隆示例数据集:
# HypoGeniC 示例
git clone https://github.com/ChicagoHAI/HypoGeniC-datasets.git ./data
# HypoRefine/Union 示例
git clone https://github.com/ChicagoHAI/Hypothesis-agent-datasets.git ./data
命令行用法
假设生成:
hypogenic_generation --config ./data/your_task/config.yaml --method hypogenic --num_hypotheses 20
假设推断:
hypogenic_inference --config ./data/your_task/config.yaml --hypotheses output/hypotheses.json
Python API 用法
from hypogenic import BaseTask
task = BaseTask(config_path="./data/your_task/config.yaml")
task.generate_hypotheses(method="hypogenic", num_hypotheses=20)
results = task.inference(hypothesis_bank="./output/hypotheses.json")
HypoRefine/Union 方法:
task.generate_hypotheses(
method="hyporefine",
num_hypotheses=15,
literature_path="./literature/your_task/",
output_path="./output/"
)
数据集格式
需遵循 HuggingFace datasets 格式与命名约定。必需文件:<TASK>_train.json、<TASK>_val.json、<TASK>_test.json。JSON 必需键:text_features_1 到 text_features_n(字符串列表,包含特征值)、label(字符串列表,包含真实标签)。所有列表长度必须一致,标签格式必须与 extract_label() 函数输出格式匹配。
配置
每个任务需要 config.yaml,指定数据集路径与提示模板,包括:观测生成、批量假设生成、假设推断、相关性检查、自适应方法(用于 HypoRefine)。模板支持数据集占位符动态注入(如 ${text_features_1}、${num_hypotheses})、自定义标签提取函数、基于角色的提示结构。
文献处理(HypoRefine/Union 方法)
使用基于文献的假设生成需预处理 PDF 论文:
# 首次设置 GROBID
bash ./modules/setup_grobid.sh
# 启动 GROBID 服务
bash ./modules/run_grobid.sh
# 处理 PDF
cd examples
python pdf_preprocess.py --task_name YOUR_TASK_NAME
将研究论文放入 literature/YOUR_TASK_NAME/raw/。自动文献检索将在未来版本中支持。
适用场景
- 从观测数据集生成科学假设
- 系统性检验多个竞争假设
- 将文献洞见与实证模式结合
- 通过自动化假设构思加速研究发现
- 需要假设驱动分析的领域:欺骗检测、AI 生成内容识别、心理健康指标、预测建模等实证研究
性能优化
- 缓存:启用 Redis 缓存降低重复 LLM 调用的 API 成本与计算时间
- 并行处理:利用多个 worker 进行大规模假设生成与检验
- 自适应优化:利用困难样本迭代提升假设质量
已知效果(据资料所述)
- 相较 few-shot 基线提升 8.97%
- 相较纯文献方法提升 15.75%
- 假设多样性 80-84%(非冗余洞见)
- AI 内容检测任务准确率提升 14.19%
- 欺骗检测任务准确率提升 7.44%
- 人类评估者报告决策有显著改善
自定义任务
步骤:准备三个 JSON 数据集文件 → 创建 config.yaml → 实现 extract_label 函数 →(可选)处理文献 → 使用 CLI 或 Python API 生成并测试。
限制与注意事项
- 数据集所有列表必须长度一致,标签格式必须与 extract_label() 输出一致
- HypoRefine/Union 需先完成 GROBID PDF 预处理
- 自动文献检索暂未支持,需自行准备论文 PDF
- 收费、价格、平台支持范围等具体信息暂未提供
故障排除
- 假设过于笼统:调整 config.yaml 提示模板,要求更具体可检验的假设
- 推断性能差:确保数据集有足够训练样本,调整生成参数或增加假设数量
- 标签提取失败:实现自定义 extract_label() 函数
- GROBID PDF 处理失败:确保 GROBID 服务运行且 PDF 为有效研究论文