Files
gbanyan 43c025e060 feat: Add experiments framework and novelty-driven agent loop
- Add complete experiments directory with pilot study infrastructure
  - 5 experimental conditions (direct, expert-only, attribute-only, full-pipeline, random-perspective)
  - Human assessment tool with React frontend and FastAPI backend
  - AUT flexibility analysis with jump signal detection
  - Result visualization and metrics computation

- Add novelty-driven agent loop module (experiments/novelty_loop/)
  - NoveltyDrivenTaskAgent with expert perspective perturbation
  - Three termination strategies: breakthrough, exhaust, coverage
  - Interactive CLI demo with colored output
  - Embedding-based novelty scoring

- Add DDC knowledge domain classification data (en/zh)
- Add CLAUDE.md project documentation
- Update research report with experiment findings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:16:21 +08:00

73 lines
1.8 KiB
Python

"""
Experiment configuration for 5-condition idea generation study.
"""
from typing import Literal
from pathlib import Path
# Paths
EXPERIMENTS_DIR = Path(__file__).parent
DATA_DIR = EXPERIMENTS_DIR / "data"
RESULTS_DIR = EXPERIMENTS_DIR / "results"
DOCS_DIR = EXPERIMENTS_DIR / "docs"
# LLM Settings
MODEL = "qwen3:8b"
TEMPERATURE = 0.9
# Expert Settings
EXPERT_COUNT = 4
EXPERT_SOURCE: Literal["curated", "llm", "dbpedia", "wikidata"] = "curated"
KEYWORDS_PER_EXPERT = 1
# Language Settings
PROMPT_LANGUAGE: Literal["en", "zh"] = "en"
# Attribute Settings
FIXED_CATEGORIES = ["Functions", "Usages", "User Groups", "Characteristics"]
# Deduplication Settings
DEDUP_THRESHOLD = 0.85
DEDUP_METHOD: Literal["embedding", "llm"] = "embedding"
# Reproducibility
RANDOM_SEED = 42
# Idea Generation Settings
IDEAS_PER_EXPERT = 5 # For C2 and C5
IDEAS_DIRECT = 20 # For C1
# Condition Names
CONDITIONS = [
"c1_direct",
"c2_expert_only",
"c3_attribute_only",
"c4_full_pipeline",
"c5_random_perspective",
]
# Condition Display Names
CONDITION_NAMES = {
"c1_direct": "C1: Direct Generation",
"c2_expert_only": "C2: Expert-Only",
"c3_attribute_only": "C3: Attribute-Only",
"c4_full_pipeline": "C4: Full Pipeline",
"c5_random_perspective": "C5: Random-Perspective",
}
# Summary Config Dict (for logging/reporting)
EXPERIMENT_CONFIG = {
"model": MODEL,
"temperature": TEMPERATURE,
"expert_count": EXPERT_COUNT,
"expert_source": EXPERT_SOURCE,
"keywords_per_expert": KEYWORDS_PER_EXPERT,
"prompt_language": PROMPT_LANGUAGE,
"random_seed": RANDOM_SEED,
"categories": FIXED_CATEGORIES,
"dedup_threshold": DEDUP_THRESHOLD,
"dedup_method": DEDUP_METHOD,
"ideas_per_expert": IDEAS_PER_EXPERT,
"ideas_direct": IDEAS_DIRECT,
}