Skip to content

Lumen951/ChuangZhi_F25_PE_Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ARC-AGI 提示词工程测试系统

Python 3.8+ License

一个用于评估大语言模型在抽象推理任务上表现的提示词工程测试系统。该系统专门针对 ARC-AGI (Abstract Reasoning Challenge - Artificial General Intelligence) 挑战设计,通过精心设计的提示词框架测试 DeepSeek API 在网格变换谜题上的推理能力。

📖 项目简介

抽象与推理语料库 (ARC) 挑战被广泛认为是衡量通用人工智能 (AGI) 的关键基准之一。本项目通过构建一个完整的测试、分析、可视化系统,帮助研究人员:

  • 🧠 少样本学习: 从 2-4 个训练示例中推断出网格转换规则
  • 🎯 高维抽象归纳: 从像素级别的网格信息中抽象出通用变换规则
  • 精确匹配验证: 要求模型输出与预期完全一致
  • 📊 数据驱动迭代: 通过详细的日志分析和可视化优化提示词策略

🏗️ 系统架构

三层架构设计

┌─────────────────────────────────────────────────────────────┐
│                      Template Layer (模板层)                  │
│  ┌────────────────────────────────────────────────────────┐ │
│  │ template.py                                             │ │
│  │  • construct_prompt(d): 构造多轮对话提示词              │ │
│  │  • parse_output(text): 解析 LLM 输出的网格预测          │ │
│  │  • 提示词版本管理 (prompt/v1.0.0/)                      │ │
│  └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                    Execution Layer (执行层)                   │
│  ┌────────────────────────────────────────────────────────┐ │
│  │ test.py                                                 │ │
│  │  • test_sample(): 测试单个样本                          │ │
│  │  • call_deepseek_api(): 调用 DeepSeek API              │ │
│  │  • 时间戳日志记录 (log/run_TIMESTAMP/)                  │ │
│  └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                     Analysis Layer (分析层)                   │
│  ┌────────────────────────────────────────────────────────┐ │
│  │ data_analysis.py                                        │ │
│  │  • ARCLogAnalyzer: 日志分析与统计                       │ │
│  │  • 生成可视化图表 (准确率、热力图、时长分布)             │ │
│  │  • 生成 Markdown 报告 (错误分析、性能指标)               │ │
│  └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

数据流动

val.jsonl (测试数据)
    ↓
test.py (执行测试)
    ↓
DeepSeek API (模型推理)
    ↓
log/run_TIMESTAMP/
    ├── sample_00.json  (单个样本完整日志)
    ├── sample_01.json
    ├── ...
    └── summary.json    (汇总统计)
    ↓
data_analysis.py (分析统计)
    ↓
log/analysis/analysis_TIMESTAMP/
    ├── images/
    │   ├── overall_accuracy_trend.png  (准确率趋势)
    │   ├── question_heatmap.png        (问题热力图)
    │   ├── duration_distribution.png   (时长分布)
    │   └── ...
    ├── data/
    │   ├── overall_stats.json          (总体统计)
    │   ├── per_run_stats.json          (每次运行统计)
    │   ├── per_question_stats.json     (每题统计)
    │   └── error_samples.json          (错误样本)
    └── report.md                       (详细报告)

🚀 快速开始

环境要求

  • Python 3.8+
  • DeepSeek API 密钥
  • 依赖包: openai, matplotlib, seaborn, numpy

安装步骤

1. 克隆仓库

git clone <repository-url>
cd 提示词工程考试

2. 安装依赖

pip install openai matplotlib seaborn numpy python-dotenv

3. 配置 API 密钥

在项目根目录创建 .env 文件:

cp .env.example .env
# 编辑 .env 文件,填入你的 DeepSeek API 密钥
# DEEPSEEK_API_KEY=your_api_key_here

4. 准备测试数据

确保 test_example/val.jsonl 文件存在。

基本使用

运行测试

cd code
python test.py

默认测试 20 个样本。修改 test.py 第 197 行可调整测试数量。

分析结果

cd code
python data_analysis.py

可视化查看

cd code
python print_data.py

📊 分析输出说明

关键指标

指标 说明
准确率 预测网格与真实网格完全匹配的百分比
时长 单个样本的 API 调用延迟
难度分类 简单(≥80%)、中等(40-80%)、困难(<40%)

可视化图表

  1. overall_accuracy_trend.png - 准确率与时长趋势
  2. question_accuracy_bar.png - 每题正确/错误统计
  3. question_heatmap.png - 运行×问题热力图
  4. duration_distribution.png - 每题用时分布
  5. pass_rate_by_question.png - 按难度排序的通过率

🧠 提示词工程框架

设计理念

本系统采用 认知脚手架 方法,结合多种前沿提示词技术:

  1. Graph of Thoughts (GoT) / Tree of Thoughts (ToT) - 多路径探索
  2. Chain of Draft (CoD) - 简洁高效的中间步骤
  3. 原子工具集 - 降低推理难度,提升精确性
  4. 模拟 PAL - 显式列出中间结果

工具分类

  • 抽象与识别: Object Identification, FilterCol, Compress, SelectObjectByProperty, GetProperties
  • 变换与操作: Rotate, Flip, Transpose, ColShape, UpdateColorByNeighbor, CropToBoundingBox, PackObjects, Scale, Move
  • 结构与组合: ComposeGrowing, Arithmetic, Mask Generation, Tile, ConstructFromProperties

推理流程

  1. 任务描述草稿
  2. 结构化特征提取
  3. 多假设生成 (至少5个)
  4. 评估与过滤
  5. 最优规则选择 (MDL引导)
  6. 详细转换步骤
  7. 最终预测 (JSON格式)

📁 目录结构

提示词工程考试/
├── code/                      # 核心代码
│   ├── test.py               # 测试执行脚本
│   ├── template.py           # 提示词模板
│   ├── data_analysis.py      # 数据分析
│   ├── print_data.py         # 可视化工具
│   ├── prompt/v1.0.0/        # 提示词版本
│   └── log/                  # 日志输出
├── test_example/             # 测试数据
│   └── val.jsonl            # ARC验证集
├── paper/                    # 参考文献
├── report/                   # 项目报告
├── .env                      # API密钥(不提交)
├── .env.example              # 配置模板
└── README.md                 # 本文件

🔧 高级配置

修改提示词

编辑 code/template.py 中的 construct_prompt() 函数:

  • 系统提示词: 第 21-68 行
  • 用户提示词: 第 73-158 行

调整测试参数

# code/test.py
total_samples = 20      # 测试样本数
api_timeout = 120       # API超时(秒)
max_retries = 3         # 重试次数

📈 迭代策略

  1. 小规模测试 - 初始10个样本
  2. 运行分析 - 查看性能指标
  3. 识别模式 - 检查error_samples.json
  4. 针对性优化 - 调整提示词
  5. 扩大测试 - 验证稳定性
  6. 版本记录 - 保存版本和数据

关键发现

  • ✅ 困难题推理链更长,需CoD优化
  • ✅ 长提示词更稳定
  • ⚠️ Few-shot位置敏感
  • ⚠️ 建议每版本测试3次取平均

⚠️ 常见问题

API密钥错误

确保 .env 文件在根目录,格式正确: DEEPSEEK_API_KEY=sk-xxx

数据路径错误

确认 test_example/val.jsonl 存在

中文显示异常

系统已配置中文字体,如有问题可重建字体缓存

输出超限

在提示词中增强CoD指令,要求更简洁的步骤

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支
  3. 提交修改
  4. 推送到分支
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证

🙏 致谢


⭐ 如果这个项目对你有帮助,请给一个 Star!

About

上海创智学院2025金秋营提示词工程考试仓库

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages