
# 搜索规划模型
#### 功能介绍
Pangu-SearchPlan模型，用于RAG场景，提供通用意图分类/多轮查询改写/复杂查询分解/时间抽取等功能，在RAG任务中生产用于检索的query，以及根据query分类路由到后续不同的流程。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/productdesc-pangulm/pangulm_01_0020.html)。
#### URI
获取URI方式请参见[请求URI](https://support.huaweicloud.com/api-pangulm/pangulm_05_0004.html)。
POST /app/search/v1/planning
#### 请求参数
使用[Token认证](https://support.huaweicloud.com/api-pangulm/pangulm_05_0009.html#pangulm_05_0009__section94702116509)方式的请求Header参数见[表1]。
 表1请求Header参数（Token认证） 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 用户Token。 用于获取操作API的权限。如[图4](https://support.huaweicloud.com/api-pangulm/pangulm_05_0009.html#pangulm_05_0009__fig10797003103)中响应消息头中X-Subject-Token的值即为Token。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| Content-Type | 是    | String | **参数解释：** 发送的实体的MIME类型。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** application/json                                                                                                                                                                       |
   
使用[API Key认证](https://support.huaweicloud.com/api-pangulm/pangulm_05_0009.html#pangulm_05_0009__section148602501261)方式的请求Header参数见[表 请求Header参数（API Key认证）]。
 表2请求Header参数（API Key认证） 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| X-Apig-AppCode | 是    | String | **参数解释：** API Key值。 用于获取操作API的权限。[API Key认证](https://support.huaweicloud.com/api-pangulm/pangulm_05_0009.html#pangulm_05_0009__section148602501261)响应消息头中X-Apig-AppCode的值即为API Key。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| Content-Type   | 是    | String | **参数解释：** 发送的实体的MIME类型。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** application/json                                                                                                                                                                              |
   
表3请求Body参数 
| 参数      | 是否必选 | 参数类型           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| query   | 是    | String         | **参数解释：** query信息。 **约束限制：** 字符串长度限制：1\~1024 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| history | 否    | List\[String\] | **参数解释：** 多轮对话的query和answer。实现逻辑如下： 1. 只参考最近5轮对话。  2. 对话历史和问题总长度1000token，超长会按照特定逻辑截断。  3. 问题只参考前500字。   **约束限制：** - 元素必须为偶数个，如 \[Question1, Answer1, Question2, Answer2\]。  - 按照对话顺序从旧到新。  - 问题Question必填。  - 答案Answer可以为空字符串，但必须占位。  - 数组长度限制：0\~50。  - 字符串长度限制：0\~4096。   **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 响应参数
状态码：200
表4响应Body参数 
| 参数              | 参数类型           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| category        | String         | **参数解释：** Query分类，对于行业知识类，建议使用前缀匹配。 **闲聊类：**坐火车累死了。 **语言任务类：**请创作一封约460字的邮件，主题是咨询一个新的IT项目的细节，这个邮件将被发送给公司的IT项目经理。 **人设类：**你叫什么名字？ **通用知识类：**豆汁和豆浆的区别。 **天气类：**明天北京天气。 **行业知识类：** - **行业知识类-金融：**贷款重组的定义是什么?  - **行业知识类-政务：**《国务院关于印发新一代人工智能发展规划的通知》的指导思想是什么？  - **行业知识类-医疗：**儿童便秘市面上常见西药是什么？对于未考虑到行业知识类的细分类别，一般会分为"行业知识类"。   **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                          |
| sub_queries     | List\[String\] | **参数解释：** 多轮改写和复杂问题分解之后的子查询问题，可能包含多个值。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| language        | String         | **参数解释：** 查询语言，编码对应[ISO 639-1](https://zh.wikipedia.org/wiki/ISO_639-1)。 **约束限制：** 不涉及 **取值范围：** - zh：中文  - en：英文  - ar：阿语  - fr：法语  - th：泰语  - mix：混合  - unknown：未知   **默认取值：** 不涉及                                                                                                                                                                                                                         |
| timeliness      | boolean        | **参数解释：** 时效性查询，比如今天天气怎么样 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| date_range      | String         | **参数解释：** 从query中抽取时间范围，抽取结果如： query：2022年全网最高用电负荷最大时，外电入鲁电力是多少？ date_range：2022-01-01\~2022-12-31。 query：华为一季度收入。 date_range：2024-01-01\~2024-03-31。 query：今日时间。 date_range：2024-04-01。 query：2023年11月30日配套储能放电量是多少？ date_range：2023-11-30\~2023-11-30。 query：两天前北京发生了什么大事？ date_range：2024-03-30\~2024-03-30。  当有多个子query时，用";"拼接如： query：2023年第一季度山东和山西的GDP。 date_range：2023-01-01\~2023-03-31;2023-01-01\~2023-03-31。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| calculation     | boolean        | **参数解释：** 计算类查询，比如经济增长率。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| output_language | String         | **参数解释：** query是否涉及"请用xx语言回答"这样的表述，即会输出对应语言编码。如zh、en、ar、fr、th。无结果则输出""。 查询语言，编码对应[ISO 639-1](https://zh.wikipedia.org/wiki/ISO_639-1)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| cost            | float          | **参数解释：** 请求处理耗时，单位ms。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
**状态码： 400**
表5响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误信息 |
   
#### 请求示例
```
POST /app/search/v1/planning \
--header 'Content-Type: application/json' \
--data '
{
    "query": "今天天气怎样？" ,
    "history": []
}
'
```
#### 响应示例
```
{
    "sub_queries": [
        "今天天气怎样？"
    ],
    "category": "天气类",
    "calculation": false,
    "timeliness": true,
    "language": "zh",
    "output_language": "",
    "date_range": "2025-05-15~2025-05-15",
    "cost": 164.17336463928223
}
```
#### 状态码
请参见[状态码](https://support.huaweicloud.com/api-pangulm/pangulm_05_0019.html)。
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-pangulm/pangulm_05_0020.html)。
