Metadata-Version: 2.4
Name: routed-confidence
Version: 0.1.0
Summary: Field-level confidence evaluator SDK for routed extraction results
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: dotenv>=0.9.9
Requires-Dist: fastapi>=0.116.1
Requires-Dist: httpx[socks]>=0.28.1
Requires-Dist: openai>=1.107.1
Requires-Dist: pydantic>=2.11.7
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: uvicorn>=0.35.0

# routed-confidence

字段级置信度评估 SDK。

这个包只负责一件事：输入一条提取结果，输出每个字段的置信度分数。它不计算检出率、误伤率、日报统计，也不包含 Web、API 服务或自动迭代逻辑。

## 位置

源码目录：

```text
routed_confidence/
```

主要入口：

```text
routed_confidence/evaluator.py
```

内部评分组件：

```text
routed_confidence/internal/confidence_evaluators/
```

默认规则文件：

```text
routed_confidence/rules/meeting_ruler.json
```

## 安装

在当前仓库本地开发安装：

```bash
pip install -e .
```

从本地 wheel 安装：

```bash
python3 -m pip wheel . --no-deps --no-build-isolation -w dist
pip install dist/routed_confidence-0.1.0-py3-none-any.whl
```

如果发布到 PyPI 或私有 PyPI 后：

```bash
pip install routed-confidence
```

Python 导入名使用下划线：

```python
from routed_confidence import ConfidenceEvaluator
```

## 使用

```python
from routed_confidence import ConfidenceEvaluator

record = {
    "extraction_result": {
        "会议召开时间": {
            "value": "2026-05-20 14:00:00",
            "content": "会议召开时间为2026年5月20日14:00",
            "type": "text",
            "title_path": ["一、会议基本情况"],
        }
    },
    "input_text": "会议召开时间为2026年5月20日14:00。",
}

evaluator = ConfidenceEvaluator()
result = evaluator.evaluate(record)
print(result)
```

也可以使用一次性函数：

```python
from routed_confidence import evaluate_confidence

result = evaluate_confidence(record)
```

## 返回格式

```json
{
  "field_scores": {
    "会议召开时间": {
      "source_value": "2026-05-20 14:00:00",
      "total_score": 0.75,
      "dimension_scores": {
        "schema": 1.0,
        "similarity": 0.82,
        "historical": 0.5,
        "relation": 1.0
      },
      "reason": "字段符合规则要求",
      "violations": [],
      "suggestions": []
    }
  },
  "summary": {
    "total_fields": 1,
    "average_score": 0.75
  }
}
```

注意：SDK 不返回 `is_correct`。`is_correct` 属于“标注数据 vs 提取数据”的评测逻辑，不属于置信度 SDK。

## 自定义规则和权重

```python
from routed_confidence import ConfidenceEvaluator

evaluator = ConfidenceEvaluator(
    rules_file="/path/to/meeting_ruler.json",
    weights={
        "schema": 0.1,
        "sim": 0.2,
        "wilson": 0.1,
        "relation": 0.6,
    },
)
```

如果不传 `rules_file`，SDK 会优先寻找当前项目里的 `schema/ruler/meeting_ruler.json`，找不到时使用包内置的默认规则。

## 发布

安装构建工具：

```bash
pip install build twine
```

构建：

```bash
python -m build
```

会生成：

```text
dist/routed_confidence-0.1.0-py3-none-any.whl
dist/routed_confidence-0.1.0.tar.gz
```

上传到 PyPI：

```bash
twine upload dist/*
```

上传到私有 PyPI：

```bash
twine upload --repository-url https://your-private-pypi/simple/ dist/*
```

发布后安装：

```bash
pip install routed-confidence
```

## 当前边界

- 只做单条/字段级置信度评估。
- 不计算检出率。
- 不计算误伤率。
- 不依赖 `methods/api`、`methods/web_conf`、`methods/reflect_rule`。
- 不要求用户导入内部四维组件。
