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>
This commit is contained in:
72
experiments/config.py
Normal file
72
experiments/config.py
Normal file
@@ -0,0 +1,72 @@
|
||||
"""
|
||||
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,
|
||||
}
|
||||
Reference in New Issue
Block a user