---
name: national-law-knowledge-search
description: 法律助手与法条检索工具，支持民法典、刑法、劳动法、合同法等国家法律法规的智能查询与检索；提供法律知识库检索、法条精准定位、法规查询服务；当用户需要查询法律条文、检索法规内容、进行法律咨询或法律问答时使用
dependency:
  python:
    - requests==2.31.0
---

# 国家法律法规知识库检索（法律助手、法条查询、法规检索）

## 任务目标
- 本技能用于：通过向量检索技术查询国家法律法规知识库，支持民法典、刑法、劳动法、合同法等法律法规的智能查询与检索，基于用户输入返回相关的法律条文内容
- 能力包含：法律条文检索、法条精准定位、法律知识查询、法规内容检索、法律咨询助手、法律问答
- 触发条件：用户提出法律相关问题、查询具体法条、检索法规内容、需要了解某部法律法规的相关规定、进行法律咨询或法律问答时使用

## 前置准备
- 依赖说明：需要安装requests库
  ```
  requests==2.31.0
  ```

## 操作步骤

### 标准流程

**步骤1：理解用户查询**
- 分析用户输入的法律问题或查询需求
- 提取核心查询内容（如"在合肥被打"、"劳动纠纷赔偿"等）

**步骤2：智能判断查询类型与返回数量**

智能体必须主动分析用户输入，判断查询意图并设置对应的topk值：

**判断流程**：
1. 检查用户输入是否包含法律名称
2. 检查是否包含"第X章第X条"或"第X条"模式
3. 根据匹配结果确定查询类型
4. 设置对应的topk值

**判断规则与topk设置**：

**规则1：精确法条查询 → topk=1**

识别条件：用户明确指定法律名称 + 条款编号
- 模式A：法律名称 + 第X章 + 第X条
  - 示例："民法典第一章第一条"
  - 示例："刑法第二章第三十五条"
  - 示例："劳动合同法第一章第二条"
- 模式B：法律名称 + 第X条
  - 示例："民法典第15条"
  - 示例："消费者权益保护法第55条"
  - 示例："道路交通安全法第67条"

**规则2：一般性法律咨询 → topk=3-15（按复杂度判断）**

识别条件：问题描述、关键词查询、模糊查询
- 简单查询（topk=3-5）：
  - 示例："在合肥被打怎么办？"
  - 示例："劳动合同赔偿标准"
  - 示例："交通事故责任划分"
- 一般查询（topk=5-10）：
  - 示例："我想了解离婚财产分割的法律规定"
  - 示例："公司欠薪如何维权"
- 复杂查询（topk=10-15）：
  - 示例："劳动者权益保护有哪些相关规定"
  - 示例："涉及多个法律领域的综合问题"

**规则3：仅法条编号查询 → topk=3-5**

识别条件：只有条款编号，没有指定法律名称
- 示例："第15条是什么内容？"
- 示例："关于第17条的规定"
- 示例："第一章第三条"

**判断方法**：
- 使用关键词匹配识别常见法律名称（民法典、刑法、合同法、劳动法、消费者权益保护法等）
- 使用正则表达式识别"第[一二三四五六七八九十百千]+章"和"第[一二三四五六七八九十百千]+条"模式
- 优先匹配精确法条查询，避免误判

**判断示例**：
```
用户输入："民法典第55条"
分析：包含"民法典"（法律名称）+ "第55条"（条款编号）→ 精确法条查询
设置：topk=1

用户输入："劳动合同纠纷怎么赔偿"
分析：问题描述性语句，无具体法条 → 一般查询
设置：topk=8

用户输入："第17条规定了什么"
分析：只有条款编号，无法律名称 → 仅法条编号查询
设置：topk=3
```

**步骤3：调用检索脚本**
执行以下命令调用知识库检索：
```bash
python scripts/search_knowledge.py --query "用户查询内容" --topk <数量>
```

参数说明：
- `--query`：必需，用户的查询文本（字符串类型）
- `--topk`：可选，返回结果数量（整数类型），默认为5

**步骤4：专业化解析与展示**
脚本返回JSON格式数据后，智能体必须按法律专业标准解析和展示：

**解析流程**：
1. 从 `content` 字段中提取法律层级信息
2. 识别法律名称、章节、条款编号
3. 提取具体条文内容
4. 计算相关度百分比（score × 100）
5. 按专业格式展示

**法律条文解析规则**：
- 提取法律名称：content开头到第一个"第X章"或"第X条"之前
- 提取章节信息：识别"第X章"模式（如"第二章"）
- 提取条款编号：识别"第X条"模式（如"第十七条"）
- 提取正文内容：条款编号后的具体条文

**特殊情况处理**：
- 无章节信息：直接显示"第X条"
- 无条款编号：标注为"相关规定"或"相关内容"
- 仅法律名称：显示法律名称 + "相关内容"
- 未检索到内容：如实告知，不得推测原因

**未检索到内容的处理规范**（重要）：
当检索结果为空时：
- 必须明确告知"未检索到相关法律条文"
- 严禁猜测或推测原因（如"条款被删除"、"法条修订"、"整合到其他条款"等）
- 提供建设性建议：
  * 建议检查查询关键词或条款编号是否正确
  * 建议尝试使用不同的关键词重新检索
  * 建议提供更多上下文信息（如法律名称、相关主题等）

**禁止行为**：
- ❌ 推测法条修订情况
- ❌ 假设条款被整合或删除
- ❌ 提供未经证实的信息
- ❌ 误导用户认为系统了解法律修订历史

### 结果展示格式（强制标准）

```
为您检索到以下相关法律规定：

【检索结果1】相关度：66.7%

📜 法律名称：《苏州市中小学生心理健康促进条例》
📚 章节条款：第二章 第十七条
📝 条文内容：公安机关发现学生身心健康受到侵害、疑似受到侵害或者面临其他危险情形的，应当及时处置，并将相关情况及时告知学生父母或者其他监护人。

───────────────────────────────────

【检索结果2】相关度：68.3%

📜 法律名称：《安徽省人民代表大会议事规则》
📚 章节条款：第八章 第七十五条
📝 条文内容：代表在省人民代表大会各种会议上的发言和表决，不受法律追究。

───────────────────────────────────
```

**空结果展示格式**（强制标准）：

```
很抱歉，未检索到相关的法律条文。

建议：
1. 请确认查询的关键词或条款编号是否正确
2. 可以尝试使用不同的关键词重新检索
3. 或者提供更多上下文信息，如法律名称、相关主题等
```

**展示规范要求**：
1. 法律名称必须加书名号《》
2. 章节条款清晰标注层级关系
3. 条文内容完整呈现，不截断
4. 使用分隔线区分不同结果
5. 相关度以百分比形式展示（保留一位小数）

## 资源索引
- 检索脚本：见 [scripts/search_knowledge.py](scripts/search_knowledge.py)（调用向量检索接口查询自建法律知识库）
- 返回格式：见 [references/api_response_format.md](references/api_response_format.md)（API返回数据结构说明）

## 注意事项
1. **参数类型严格要求**：
   - query必须是字符串类型
   - topk必须是整数类型
   - 严格按照JSON格式传参

2. **topk智能判断（强制执行）**：
   - 精确法条查询（法律名称+条款编号）：topk=1
   - 仅法条编号查询：topk=3-5
   - 简单问题（单一事实查询）：topk=3-5
   - 一般问题（需要多个参考）：topk=5-10
   - 复杂问题（涉及多个法律领域）：topk=10-15
   - 不要让用户指定topk值，在技能内部自动判断
   - 避免返回过多或过少结果

3. **专业化展示要求**：
   - 必须提取并标注法律名称、章节、条款
   - 法律名称加书名号《》
   - 条文内容完整展示，保持法律文本严肃性
   - 相关度以百分比显示（如66.7%）
   - 使用专业法律术语和格式
   - 如结果不理想，可调整查询关键词重新检索

4. **错误处理**：
   - 如果API调用失败，友好提示用户
   - 网络超时时可重试一次
   - 记录错误信息用于问题排查

5. **未检索到内容的处理（重要）**：
   - 必须如实告知"未检索到相关法律条文"
   - 严禁推测或猜测原因（如"条款被删除"、"法条修订"等）
   - 严禁提供未经证实的信息
   - 严禁误导用户认为系统了解法律修订情况
   - 只提供建设性建议（检查关键词、尝试不同检索方式等）

## 使用示例

### 示例1：精确法条查询（topk=1）
```
用户：民法典第15条规定了什么？
分析：包含"民法典"（法律名称）+ "第15条"（条款编号）→ 精确法条查询
执行：python scripts/search_knowledge.py --query "民法典第15条" --topk 1
展示：返回1条精确匹配的条文
```

### 示例2：一般法律咨询（topk=8）
```
用户：劳动合同纠纷怎么赔偿？
分析：问题描述性语句，无具体法条 → 一般查询
执行：python scripts/search_knowledge.py --query "劳动合同纠纷怎么赔偿" --topk 8
展示：返回8条相关法规和赔偿标准
```

### 示例2-1：劳动法相关查询（topk=10）
```
用户：劳动法关于加班费的规定
分析：指定劳动法 + 加班费 → 一般查询
执行：python scripts/search_knowledge.py --query "劳动法关于加班费的规定" --topk 10
展示：返回10条劳动法相关条文
```

### 示例3：复杂问题查询（topk=12）
```
用户：劳动者权益保护有哪些相关规定？
分析：涉及多个法律领域，需要综合了解 → 复杂查询
执行：python scripts/search_knowledge.py --query "劳动者权益保护相关规定" --topk 12
展示：返回12条相关法律法规
```

### 示例4：仅法条编号查询（topk=3）
```
用户：第17条的内容是什么？
分析：只有条款编号，无法律名称 → 仅法条编号查询
执行：python scripts/search_knowledge.py --query "第17条" --topk 3
展示：返回3条相关条文
```

### 示例5：常见法律问题咨询（topk=5）
```
用户：交通事故怎么赔偿？
分析：常见法律问题 → 简单查询
执行：python scripts/search_knowledge.py --query "交通事故怎么赔偿" --topk 5
展示：返回5条相关法律规定
```

### 示例6：合同法相关查询（topk=8）
```
用户：合同违约怎么处理？
分析：合同法相关问题 → 一般查询
执行：python scripts/search_knowledge.py --query "合同违约怎么处理" --topk 8
展示：返回8条合同法相关条文
```

### 示例7：刑法相关问题（topk=10）
```
用户：什么情况下构成正当防卫？
分析：刑法相关概念查询 → 一般查询
执行：python scripts/search_knowledge.py --query "正当防卫构成条件" --topk 10
展示：返回10条刑法相关条文
```

### 示例5：简单事实查询（topk=5）
```
用户：在合肥被打怎么办？
分析：简单事实查询 → 简单查询
执行：python scripts/search_knowledge.py --query "在合肥被打怎么办" --topk 5
展示：返回5条最相关的法律知识和案例
```
