STATIC API DOCUMENT

法律幻觉校验接口 API 文档

自动校验文本内容中的法律引用是否正确,系统自动抽取文中引用的法规/法条和案号,与智库比对语义一致性,核验法规时效性,输出"一致/不一致/未命中"判定及权威原文。 可以用来复核、校验、核查法律引用准确性,校验AI帮助撰写包含法律引用的法律文书是否存在幻觉

接口详情页 分类:幻觉检测 MCP Tool:yuandian_hall_detect

接口概览

接口名称法律幻觉校验接口
接口描述自动校验文本内容中的法律引用是否正确,系统自动抽取文中引用的法规/法条和案号,与智库比对语义一致性,核验法规时效性,输出"一致/不一致/未命中"判定及权威原文。 可以用来复核、校验、核查法律引用准确性,校验AI帮助撰写包含法律引用的法律文书是否存在幻觉
接口分类幻觉检测
调用地址https://open.chineselaw.com/open/hall_detect
请求方式POST

请求参数

3. 请求参数(Body)

字段名 类型 是否必填 说明
text string 待抽取的用户原文文本

3.1 校验与默认值(按代码)

  • 缺少 text / 类型不对:返回 422(请求参数校验失败,见“5. 错误返回”)
  • text 不做最小长度校验(但为空字符串会导致抽取结果通常为空)

响应参数

4. 返回信息

  • 返回类型:JSON

4.1 成功响应结构(200

字段名 类型 说明
regulations array 抽取到的法规/法条列表
cases array 抽取到的案例列表
highlighted_text string 高亮后的原文(HTML 字符串,已转义,包含 <span ...> 标记)
semantic_compare_error string | absent 语义比对流程异常时可能出现(不一定有)
chat_model string 本次调用使用的模型名(从服务端配置回填)
request_id string 本次请求 ID(与响应头 X-Request-ID 一致)

5. 错误返回(统一异常结构)

发生校验失败、业务抛错或未处理异常时,接口会返回下述结构(并带 request_id;响应头同样会返回 X-Request-ID)。

字段名 类型 说明
success boolean 固定为 false
error_code string 错误码,如 VALIDATION_ERRORHTTP_502INTERNAL_ERROR
message string 错误信息
request_id string 请求 ID
detail any | absent 可能存在:校验错误详情、或非字符串的异常详情

常见 HTTP 状态码:

  • 422:请求参数校验失败(如缺少 text
  • 502:上游(外部 Chat/权威来源)调用失败或响应不可解析(以 HTTP_502 形式返回)
  • 500:服务内部异常(INTERNAL_ERROR

6. 返回字段说明

6.1 regulations[](法规/法条对象)

抽取阶段会给每条法规生成稳定的 extract_reg_id;若能命中“权威来源”详情,会补充 url、元数据、以及 think_tank_content
若仅有法规名、没有具体条号,会标记 source_no_specific_clause=true,并跳过语义比对(semantic_compare.skipped=true)。

字段名 类型 说明
name string 法规名称(可能带《》)
clause string 法条号(如“第一百条”;可能为空串表示仅法规名)
content string 从“用户原文”中逐字摘录的依据片段(模型抽取)
extract_reg_id string 服务端生成的 UUID,用于前端对齐与批量语义比对 key
url string 命中权威来源时返回的详情页 URL(可为空串)
think_tank_content string 命中权威来源时的条文正文(可能为空串)
source_no_specific_clause boolean 仅法规名、无具体条号时为 true
law_exists boolean 仅法规名存在性检索时,法规存在/不存在(可能缺省)
think_tank_clause_missing boolean 有条号但权威来源缺失该条时可能为 true(可能缺省)
publish_date string 统一后的“发布日期”(可能为空串)
implement_date string 统一后的“实施日期”(可能为空串)
validity_status string 统一后的“时效性/是否有效”(可能为空串)
document_number string 统一后的“发文字号”(可能为空串)
semantic_compare object “原文摘录(content)” vs “权威来源正文(think_tank_content)”的语义比对结果

6.1.1 semantic_compare(法规语义比对对象)

字段名 类型 说明
结论 string 比对结论;无可比文本时通常为“无法判断”
语义相似度 number | null 相似度(可能为空)
说明 string 说明文字
要点 array 关键信息点(可能为空数组)
skipped boolean 仅法规名无条号时为 true(可能缺省)
skip_reason string 跳过原因(如 NO_CLAUSE,可能缺省)
skip_message string 跳过提示(可能缺省)

6.2 cases[](案例对象)

命中权威来源时,会补充 urlthink_tank_content,并补齐列表展示字段(英文键 + 中文别名键并存)。

字段名 类型 说明
name string 案例名称(可能为空串)
case_number string 案号(服务端会做括号/空白归一化;命中权威来源时可能回填为“官方案号”)
content string 从“用户原文”中逐字摘录的依据片段(模型抽取)
url string 命中权威来源时返回的案例详情页 URL(可为空串)
think_tank_content string 命中权威来源时的“内容:”正文摘录(可为空串)
case_type string 案例类型(可为空串)
court string 法院(可为空串)
judgment_date string 日期(可为空串)
basic_facts string 基本案情(可为空串)
judgment_key_points string 裁判要点(可为空串)
judgment_result string 裁判结果(可为空串)
judgment_analysis string 裁判分析过程(可为空串)
typical_significance string 典型意义(可为空串)
case_commentary string 案例评析(可为空串)
案例类型/法院/日期/... string 以上字段的中文别名(值与英文键一致)
案号 string case_number 的中文别名(值与 case_number 对齐)

6.3 highlighted_text

  • 类型:string(HTML 字符串)
  • 说明:对原文进行转义后,在命中的法规/案号等片段外包裹 <span>,用于前端着色与悬浮提示。
    • 可能包含的 class(示例):hl-statute-linkhl-case-refmissing-refcase-hit
    • 注意:这不是纯文本;如需纯文本请使用原始入参 text

错误码

暂无错误码说明

调用示例

CURL

curl --location --request POST 'https://open.chineselaw.com/open/hall_detect' \
--header 'Content-Type: application/json; charset=utf-8' \
--header 'Accept: application/json' \
--header 'X-Request-ID: 你自定义的request_id(可选)' \
--data-raw '{
  "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
}'

JAVA

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class ExtractExample {
    public static void main(String[] args) throws Exception {
        String apiUrl = "https://open.chineselaw.com/open/hall_detect";
        String url = apiUrl;

        String requestId = "你自定义的request_id(可选)";
        String jsonBody = """
        {
          "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
        }
        """;
    
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .timeout(Duration.ofSeconds(60))
                .header("Content-Type", "application/json; charset=utf-8")
                .header("Accept", "application/json")
                .header("X-Request-ID", requestId) // 可不传:删掉这一行即可
                .POST(HttpRequest.BodyPublishers.ofString(jsonBody))
                .build();
    
        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    
        System.out.println(response.statusCode());
        System.out.println("X-Request-ID=" + response.headers().firstValue("X-Request-ID").orElse(""));
        System.out.println(response.body());
    }
}

PYTHON

import requests

url = "https://open.chineselaw.com/open/hall_detect/api/extract"
headers = {
    "Content-Type": "application/json; charset=utf-8",
    "Accept": "application/json",
    "X-Request-ID": "你自定义的request_id(可选)",
}
payload = {
    "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
}

response = requests.post(url, json=payload, headers=headers, timeout=60)
response.raise_for_status()

print("X-Request-ID=", response.headers.get("X-Request-ID", ""))
print(response.json())

JAVASCRIPT

const API_URL = "https://open.chineselaw.com/open/hall_detect";
const res = await fetch(`${API_URL}/api/extract`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json; charset=utf-8",
    "Accept": "application/json",
    "X-Request-ID": "你自定义的request_id(可选)",
  },
  body: JSON.stringify({
    text: "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……",
  }),
});

if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log("X-Request-ID=", res.headers.get("X-Request-ID") || "");
console.log(await res.json());

MCP Tool 名称

MCP Serveryuandian-open-platform(元典开放平台 MCP Server)
Streamable HTTP 入口https://open.chineselaw.com/mcp
MCP Toolyuandian_hall_detect

响应示例

## 7. 示例

### 7.1 请求示例

```json
{
  "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
}
```

### 7.2 成功响应示例(示意)

```json
{
  "regulations": [
    {
      "name": "《中华人民共和国民法典》",
      "clause": "第一百二十二条",
      "content": "……(此处为从用户原文逐字摘录的片段)",
      "extract_reg_id": "2d2fbb7a-8c3a-4d3c-9a9e-6f3fd1b7c2c1",
      "url": "https://example.com/xxx",
      "think_tank_content": "……(此处为权威来源条文正文)",
      "publish_date": "",
      "implement_date": "",
      "validity_status": "",
      "document_number": "",
      "semantic_compare": {
        "结论": "无法判断",
        "语义相似度": null,
        "说明": "缺少提取摘录或权威来源正文,无法建立可比关系",
        "要点": []
      }
    }
  ],
  "cases": [
    {
      "name": "",
      "case_number": "(2019)苏0206民初3374号",
      "content": "……(逐字摘录)",
      "url": "https://example.com/case",
      "think_tank_content": "……(权威来源内容摘录)",
      "case_type": "",
      "court": "",
      "judgment_date": "",
      "basic_facts": "",
      "judgment_key_points": "",
      "judgment_result": "",
      "judgment_analysis": "",
      "typical_significance": "",
      "case_commentary": "",
      "案例类型": "",
      "法院": "",
      "日期": "",
      "基本案情": "",
      "裁判要点": "",
      "裁判结果": "",
      "裁判分析过程": "",
      "典型意义": "",
      "案例评析": "",
      "案号": "(2019)苏0206民初3374号"
    }
  ],
  "highlighted_text": "……(HTML 字符串,包含 span 标注)",
  "chat_model": "YOUR_CHAT_MODEL",
  "request_id": "req_1714460000000_ab12cd34"
}
```

### 7.3 失败响应示例(缺少 text,422)

```json
{
  "success": false,
  "error_code": "VALIDATION_ERROR",
  "message": "请求参数校验失败",
  "request_id": "req_1714460000000_ab12cd34",
  "detail": [
    {
      "type": "missing",
      "loc": ["body", "text"],
      "msg": "Field required",
      "input": {}
    }
  ]
}
```

完整文档

法律幻觉校验接口文档

1. 基本信息

  • 接口名称:法律幻觉校验接口
  • 接口用途:自动校验文本内容中的法律引用是否正确,系统自动抽取文中引用的法规/法条和案号,与智库比对语义一致性,核验法规时效性,输出"一致/不一致/未命中"判定及权威原文。
    可以用来复核、校验、核查法律引用准确性,校验AI帮助撰写包含法律引用的法律文书是否存在幻觉。

2. 请求信息

  • HTTP Method:POST
  • URLhttps://open.chineselaw.com/open/hall_detect
  • Content-Typeapplication/json; charset=utf-8
  • Acceptapplication/json
  • X-API-Key:你的api_key

3. 请求参数(Body)

字段名 类型 是否必填 说明
text string 待抽取的用户原文文本

3.1 校验与默认值(按代码)

  • 缺少 text / 类型不对:返回 422(请求参数校验失败,见“5. 错误返回”)
  • text 不做最小长度校验(但为空字符串会导致抽取结果通常为空)

4. 返回信息

  • 返回类型:JSON

4.1 成功响应结构(200

字段名 类型 说明
regulations array 抽取到的法规/法条列表
cases array 抽取到的案例列表
highlighted_text string 高亮后的原文(HTML 字符串,已转义,包含 <span ...> 标记)
semantic_compare_error string | absent 语义比对流程异常时可能出现(不一定有)
chat_model string 本次调用使用的模型名(从服务端配置回填)
request_id string 本次请求 ID(与响应头 X-Request-ID 一致)

5. 错误返回(统一异常结构)

发生校验失败、业务抛错或未处理异常时,接口会返回下述结构(并带 request_id;响应头同样会返回 X-Request-ID)。

字段名 类型 说明
success boolean 固定为 false
error_code string 错误码,如 VALIDATION_ERRORHTTP_502INTERNAL_ERROR
message string 错误信息
request_id string 请求 ID
detail any | absent 可能存在:校验错误详情、或非字符串的异常详情

常见 HTTP 状态码:

  • 422:请求参数校验失败(如缺少 text
  • 502:上游(外部 Chat/权威来源)调用失败或响应不可解析(以 HTTP_502 形式返回)
  • 500:服务内部异常(INTERNAL_ERROR

6. 返回字段说明

6.1 regulations[](法规/法条对象)

抽取阶段会给每条法规生成稳定的 extract_reg_id;若能命中“权威来源”详情,会补充 url、元数据、以及 think_tank_content
若仅有法规名、没有具体条号,会标记 source_no_specific_clause=true,并跳过语义比对(semantic_compare.skipped=true)。

字段名 类型 说明
name string 法规名称(可能带《》)
clause string 法条号(如“第一百条”;可能为空串表示仅法规名)
content string 从“用户原文”中逐字摘录的依据片段(模型抽取)
extract_reg_id string 服务端生成的 UUID,用于前端对齐与批量语义比对 key
url string 命中权威来源时返回的详情页 URL(可为空串)
think_tank_content string 命中权威来源时的条文正文(可能为空串)
source_no_specific_clause boolean 仅法规名、无具体条号时为 true
law_exists boolean 仅法规名存在性检索时,法规存在/不存在(可能缺省)
think_tank_clause_missing boolean 有条号但权威来源缺失该条时可能为 true(可能缺省)
publish_date string 统一后的“发布日期”(可能为空串)
implement_date string 统一后的“实施日期”(可能为空串)
validity_status string 统一后的“时效性/是否有效”(可能为空串)
document_number string 统一后的“发文字号”(可能为空串)
semantic_compare object “原文摘录(content)” vs “权威来源正文(think_tank_content)”的语义比对结果

6.1.1 semantic_compare(法规语义比对对象)

字段名 类型 说明
结论 string 比对结论;无可比文本时通常为“无法判断”
语义相似度 number | null 相似度(可能为空)
说明 string 说明文字
要点 array 关键信息点(可能为空数组)
skipped boolean 仅法规名无条号时为 true(可能缺省)
skip_reason string 跳过原因(如 NO_CLAUSE,可能缺省)
skip_message string 跳过提示(可能缺省)

6.2 cases[](案例对象)

命中权威来源时,会补充 urlthink_tank_content,并补齐列表展示字段(英文键 + 中文别名键并存)。

字段名 类型 说明
name string 案例名称(可能为空串)
case_number string 案号(服务端会做括号/空白归一化;命中权威来源时可能回填为“官方案号”)
content string 从“用户原文”中逐字摘录的依据片段(模型抽取)
url string 命中权威来源时返回的案例详情页 URL(可为空串)
think_tank_content string 命中权威来源时的“内容:”正文摘录(可为空串)
case_type string 案例类型(可为空串)
court string 法院(可为空串)
judgment_date string 日期(可为空串)
basic_facts string 基本案情(可为空串)
judgment_key_points string 裁判要点(可为空串)
judgment_result string 裁判结果(可为空串)
judgment_analysis string 裁判分析过程(可为空串)
typical_significance string 典型意义(可为空串)
case_commentary string 案例评析(可为空串)
案例类型/法院/日期/... string 以上字段的中文别名(值与英文键一致)
案号 string case_number 的中文别名(值与 case_number 对齐)

6.3 highlighted_text

  • 类型:string(HTML 字符串)
  • 说明:对原文进行转义后,在命中的法规/案号等片段外包裹 <span>,用于前端着色与悬浮提示。
    • 可能包含的 class(示例):hl-statute-linkhl-case-refmissing-refcase-hit
    • 注意:这不是纯文本;如需纯文本请使用原始入参 text

7. 示例

7.1 请求示例

{
  "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
}

7.2 成功响应示例(示意)

{
  "regulations": [
    {
      "name": "《中华人民共和国民法典》",
      "clause": "第一百二十二条",
      "content": "……(此处为从用户原文逐字摘录的片段)",
      "extract_reg_id": "2d2fbb7a-8c3a-4d3c-9a9e-6f3fd1b7c2c1",
      "url": "https://example.com/xxx",
      "think_tank_content": "……(此处为权威来源条文正文)",
      "publish_date": "",
      "implement_date": "",
      "validity_status": "",
      "document_number": "",
      "semantic_compare": {
        "结论": "无法判断",
        "语义相似度": null,
        "说明": "缺少提取摘录或权威来源正文,无法建立可比关系",
        "要点": []
      }
    }
  ],
  "cases": [
    {
      "name": "",
      "case_number": "(2019)苏0206民初3374号",
      "content": "……(逐字摘录)",
      "url": "https://example.com/case",
      "think_tank_content": "……(权威来源内容摘录)",
      "case_type": "",
      "court": "",
      "judgment_date": "",
      "basic_facts": "",
      "judgment_key_points": "",
      "judgment_result": "",
      "judgment_analysis": "",
      "typical_significance": "",
      "case_commentary": "",
      "案例类型": "",
      "法院": "",
      "日期": "",
      "基本案情": "",
      "裁判要点": "",
      "裁判结果": "",
      "裁判分析过程": "",
      "典型意义": "",
      "案例评析": "",
      "案号": "(2019)苏0206民初3374号"
    }
  ],
  "highlighted_text": "……(HTML 字符串,包含 span 标注)",
  "chat_model": "YOUR_CHAT_MODEL",
  "request_id": "req_1714460000000_ab12cd34"
}

7.3 失败响应示例(缺少 text,422)

{
  "success": false,
  "error_code": "VALIDATION_ERROR",
  "message": "请求参数校验失败",
  "request_id": "req_1714460000000_ab12cd34",
  "detail": [
    {
      "type": "missing",
      "loc": ["body", "text"],
      "msg": "Field required",
      "input": {}
    }
  ]
}

8. 代码示例

8.1 CURL调用示例

curl --location --request POST 'https://open.chineselaw.com/open/hall_detect' \
--header 'Content-Type: application/json; charset=utf-8' \
--header 'Accept: application/json' \
--header 'X-Request-ID: 你自定义的request_id(可选)' \
--data-raw '{
  "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
}'

8.2 JAVA调用示例

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class ExtractExample {
    public static void main(String[] args) throws Exception {
        String apiUrl = "https://open.chineselaw.com/open/hall_detect";
        String url = apiUrl;

        String requestId = "你自定义的request_id(可选)";
        String jsonBody = """
        {
          "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
        }
        """;
    
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .timeout(Duration.ofSeconds(60))
                .header("Content-Type", "application/json; charset=utf-8")
                .header("Accept", "application/json")
                .header("X-Request-ID", requestId) // 可不传:删掉这一行即可
                .POST(HttpRequest.BodyPublishers.ofString(jsonBody))
                .build();
    
        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    
        System.out.println(response.statusCode());
        System.out.println("X-Request-ID=" + response.headers().firstValue("X-Request-ID").orElse(""));
        System.out.println(response.body());
    }
}

8.3 PYTHONE调用示例

import requests

url = "https://open.chineselaw.com/open/hall_detect/api/extract"
headers = {
    "Content-Type": "application/json; charset=utf-8",
    "Accept": "application/json",
    "X-Request-ID": "你自定义的request_id(可选)",
}
payload = {
    "text": "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……"
}

response = requests.post(url, json=payload, headers=headers, timeout=60)
response.raise_for_status()

print("X-Request-ID=", response.headers.get("X-Request-ID", ""))
print(response.json())

8.3 JAVASCRIPT调用示例

const API_URL = "https://open.chineselaw.com/open/hall_detect";
const res = await fetch(`${API_URL}/api/extract`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json; charset=utf-8",
    "Accept": "application/json",
    "X-Request-ID": "你自定义的request_id(可选)",
  },
  body: JSON.stringify({
    text: "根据《中华人民共和国民法典》第一百二十二条……另参照(2019)苏0206民初3374号的裁判观点……",
  }),
});

if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log("X-Request-ID=", res.headers.get("X-Request-ID") || "");
console.log(await res.json());