# Constitution LLM：用大型语言模型分析古代政体宪法的开源工具

> 一个利用大型语言模型对前现代时代宪法进行标注和分析的学术级开源工具，支持多模型验证、批量处理和9项政治指标评估。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-06-01T05:15:10.000Z
- 最近活动: 2026-06-01T05:20:08.064Z
- 热度: 154.9
- 关键词: LLM, 宪法分析, 政治指标, 数字人文, 历史研究, 多模型, 验证机制, Gemini, Claude, 学术研究
- 页面链接: https://www.zingnex.cn/forum/thread/constitution-llm
- Canonical: https://www.zingnex.cn/forum/thread/constitution-llm
- Markdown 来源: ingested_event

---

# Constitution LLM：用大型语言模型分析古代政体宪法的开源工具

## 原作者与来源

- **原作者/维护者**: deankuo
- **来源平台**: GitHub
- **原始标题**: constitution_llm
- **原始链接**: <https://github.com/deankuo/constitution_llm>
- **发布时间**: 2026年6月

---

## 项目概述

Constitution LLM 是一个专为学术研究设计的开源工具，利用大型语言模型（LLMs）对前现代时代的宪法文本进行自动化标注和政治指标分析。该项目面向政治学家、历史学家和数字人文研究者，提供了一套完整的流水线来处理、分析和验证古代政体的宪法特征。

项目的核心目标是解决传统人工阅读和分析大量历史宪法文本的效率问题。通过引入多LLM支持和验证机制，研究者可以快速获得关于古代政体政治结构的量化指标，为比较政治研究提供数据支持。

---

## 核心功能与特性

### 多LLM提供商支持

项目不绑定单一模型，而是支持多个主流LLM提供商：

- **OpenAI**: GPT-5、GPT-4o 等
- **Anthropic**: Claude 4.5 Sonnet 等
- **Google Gemini**: Gemini 3.1 Pro Preview、Gemini 2.5 Pro 等（默认使用）
- **AWS Bedrock**: Claude on Bedrock 等

这种多模型支持允许研究者比较不同模型在历史文本理解上的表现，也提供了成本和质量的权衡选择。

### 九项政治指标评估

系统定义了一套完整的政治指标框架，用于量化描述古代政体的政治特征：

#### 主权与权力结构指标

1. **Sovereign（主权）**: 区分独立政体与殖民地/附庸国/朝贡国（0/1）
2. **Federalism（联邦制）**: 中央集权 vs 联邦/邦联分权（0/1）

#### 制衡与决策机制指标

3. **Checks（制衡能力）**: 独立机构抵制行政权力的能力（0/1/2）
4. **Collegiality（合议制）**: 行政决策是否由多人共享（0/1）
5. **Assembly（议会类型）**: 无/委员会/立法机构/全民（0/1/2/3）

#### 领导人产生与退出机制

6. **Entry（就职方式-细粒度）**: 11个精细分类（0-10）
7. **Entry（就职方式-粗粒度）**: 非正规/世袭/任命/选举（0-3）
8. **Exit（离职方式-细粒度）**: 16个精细分类（0-15）
9. **Exit（离职方式-粗粒度）**: 非正规/自然/自愿/制度化（0-3）

此外，系统还支持下游分类器来评估立法机构选举情况（Elections），该指标依赖于议会类型为立法机构（assembly = 2）。

---

## 验证机制

项目提供了两种验证方法来提高标注的可靠性：

### 自洽性验证（Self-Consistency）

通过对同一问题多次调用模型并进行投票，取多数结果作为最终预测。系统会输出：

- `{ind}_verified`: 验证后的预测值
- `{ind}_agreement`: 一致性比例（0.0-1.0）
- `{ind}_uncertainty`: 不确定性等级（none/low/high）

当所有投票结果都不同时，系统会回退到初始预测。值得注意的是，在 `single` 和 `sequential` 模式下，所有指标共享同一批额外调用，因此总调用次数为 `1 + n_samples`，而非 `1 + n_indicators × n_samples`。

### 验证链（Chain of Verification, CoVe）

通过跨模型验证和事实性问题检查来提高标注准确性。对于宪法文本，系统会提出4个验证性问题来交叉验证初始预测的可靠性。CoVe 使用不同的验证模型（可在 `.env` 中通过 `BEDROCK_VERIFIER_MODEL` 配置）来独立评估结果。

---

## 提示模式与处理策略

项目提供了三种提示模式以适应不同的分析需求：

### Single 模式

将所有9个指标整合到一个统一的提示中一次性处理。适合快速预览和小规模测试。

### Multiple 模式（推荐）

为每个指标单独发送提示。虽然调用次数增加，但可以获得更专注的分析结果，是推荐的生产环境配置。

### Sequential 模式

在一个提示中按顺序处理所有指标，支持用户定义顺序或随机顺序。适合研究不同提问顺序对结果的影响。

### 并行行处理

支持通过 `--parallel-rows N` 参数并发处理多个领导人记录，显著提高大批量数据处理的效率。

---

## 搜索模式与外部知识

系统提供了三种搜索模式来增强LLM的知识获取能力：

- **None（默认）**: 纯LLM输出，不进行网络搜索
- **Agentic**: LLM 自主决定是否通过工具调用进行搜索（使用 Serper API）
- **Forced**: 总是先搜索再回答（使用 Wikipedia/DuckDuckGo/Serper 分层搜索）

对于需要验证历史事实或获取额外背景信息的场景，Forced 模式可以显著提高标注准确性。

---

## Gemini 批量API支持

项目支持使用 Gemini 的批量API（`--use-batch`）来降低成本。批量处理可享受50%的费用折扣，同时兼容 `--search-mode forced` 模式。批量任务会按 `--checkpoint-interval`（默认500行）分割以便断点续传。

---

## 数据格式与输入输出

### 支持的输入格式

系统接受 CSV 和 JSONL 两种输入格式，通过文件扩展名自动检测。提供了 `scripts/csv_to_jsonl.py` 脚本用于格式转换。

### 领导人级别数据格式

对于领导人级别的分析，输入数据需要包含：
- 政体名称（polity）
- 领导人姓名（name）
- 任期开始年份（start_year）
- 任期结束年份（end_year）

### 输出格式

输出包含原始预测、验证结果、推理过程、成本统计和token使用量等元数据，方便研究者进行后续分析和质量控制。

---

## 实验追踪与可观测性

### LangSmith 集成

项目可选集成 LangSmith 进行LLM调用追踪。设置 `LANGCHAIN_TRACING_V2=true` 即可启用，零开销地记录所有提示、输出和中间步骤。

### 实验日志

每次非测试运行都会追加一条JSON记录到 `data/logs/experiments.jsonl`，包含：
- 日期时间
- 使用的模型
- 处理的指标
- 验证方法
- 总条目数
- 提示风格
- 搜索模式
- 成本和token统计
- 运行时长

---

## 典型使用场景

### 快速测试（5条记录）

```bash
python main.py --pipeline leader \
  --indicators sovereign assembly appointment tenure exit collegiality separate_powers \
  --models gemini-2.5-pro \
  --mode multiple \
  --test 5
```

### 带自洽性验证的批量处理

```bash
python main.py --pipeline leader \
  --indicators assembly appointment \
  --models gemini-2.5-pro \
  --verify self_consistency \
  --verify-indicators assembly \
  --test 10
```

### 带验证链的宪法分析

```bash
python main.py --pipeline leader \
  --indicators constitution \
  --models gemini-2.5-pro \
  --verify cove \
  --verify-indicators constitution \
  --test 5
```

### Python API 使用

```python
from pipeline.predictor import Predictor, PredictionConfig
from config import PromptMode, VerificationType
import os

config = PredictionConfig(
    mode=PromptMode.MULTIPLE,
    indicators=['sovereign', 'assembly', 'collegiality'],
    verify=VerificationType.NONE,
    model='gemini-2.5-pro',
    temperature=0.0
)

api_keys = {'gemini': os.getenv('GEMINI_API_KEY')}
predictor = Predictor(config, api_keys)

# 分析罗马共和国时期凯撒的执政特征
result = predictor.predict("Roman Republic", "Julius Caesar", -49, -44)
print(result.predictions['sovereign'].prediction)
print(result.predictions['sovereign'].reasoning)
```

---

## 学术价值与应用前景

Constitution LLM 为数字人文研究提供了一个可扩展的文本分析框架。其价值体现在：

### 规模化处理能力

传统上，历史学家需要手工阅读和分析大量宪法文本，耗时且难以标准化。LLM 辅助标注可以在保持学术严谨性的同时大幅提升处理效率。

### 跨政体比较研究

通过统一的指标框架，研究者可以比较不同历史时期、不同地理区域的政体特征，发现政治制度演变的规律。

### 方法论贡献

项目探索了 LLM 在历史文本分析中的可靠性和局限性，为后续研究提供了方法论参考。自洽性验证和验证链机制也是评估 LLM 在历史领域应用的重要尝试。

---

## 局限与挑战

尽管 Constitution LLM 是一个功能丰富的工具，但使用时仍需注意以下局限：

### 历史知识的准确性

LLM 的训练数据截止于特定时间点，可能缺乏对某些冷门历史政体的了解。搜索模式可以缓解这一问题，但无法完全消除。

### 标注的主观性

政治指标本身带有一定的解释空间，不同研究者可能对同一宪法文本有不同的理解。LLM 的标注应被视为一种参考，而非权威结论。

### 成本考量

大规模分析会产生显著的 API 费用，特别是对于需要多次验证的场景。批量API和并行处理可以帮助降低成本。

---

## 总结

Constitution LLM 是一个将大型语言模型应用于历史政治学研究的创新开源项目。它提供了一套完整的工具链，支持多模型、多指标、多验证策略的宪法文本分析。对于从事比较政治、历史制度研究的学者而言，这是一个值得关注的工具。

项目在设计上充分考虑了学术研究的严谨性需求，通过自洽性验证、验证链等机制提高标注可靠性，同时提供了丰富的配置选项以适应不同的研究场景。随着 LLM 技术的不断进步，这类跨学科应用将为数字人文研究开辟新的可能性。
