
# 生成答案 - GenerateAnswer
#### 功能介绍
将content输入给模型，使用模型能力生成答案。
注意：
1. 当"chat_id"为空时，"chat_create_flag"应为"1"，表示需要开启新的对话；当"chat_id"有值时，"chat_create_flag"可以为"0"，表示不需要开启新的对话，接口做多轮问答。
   
2. "messages"中的元素必须为奇数个，单轮对话时为1，多轮对话时为3、5、7、...，如 \[question1, answer1, question2\]
   
3. 多轮对话中：对话排列顺序从旧到新。
   
 
#### URI
POST /v1/{project_id}/applications/{application_id}/uni-search/experience/chat
表1路径参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| project_id     | 是    | String | **参数解释：** 项目ID，获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-koosearch/koosearch_06_0022.html)。 **约束限制：** 不涉及 **取值范围：** 1～64个字符，只能包含数字、字母、中划线和下划线，且必须以字母开头。 **默认取值：** 不涉及 |
| application_id | 是    | String | **参数解释：** 应用ID，获取方法请参见[获取应用ID](https://support.huaweicloud.com/api-koosearch/koosearch_06_0021.html)。 **约束限制：** 字符串 **取值范围：** 1～64个字符，只能包含数字、字母、中划线和下划线，且必须以字母开头。 **默认取值：** 不涉及 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 接口鉴权使用的Token，Token获取方式参考：[获取IAM用户Token](https://support.huaweicloud.com/api-koosearch/koosearch_06_0009.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| chat_id            | 否    | String                                                               | **参数解释：** 对话ID。 **约束限制：** 不涉及 **取值范围：** 长度不能超过64个字符。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| repo_id            | 是    | String                                                               | **参数解释：** 知识库ID。 **约束限制：** 不涉及 **取值范围：** 长度不能超过64个字符。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| extra_repo_ids     | 否    | Array of strings                                                     | **参数解释：** 多知识库问答。 **约束限制：** 不涉及 **取值范围：** 列表长度小于9。 长度不能超过64个字符。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| messages           | 是    | Array of [ChatMessage] objects | **参数解释：** 对话内容。 **约束限制：** 不涉及 **取值范围：** 列表长度不超过19。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| chat_create_flag   | 是    | String                                                               | **参数解释：** 对话开始标志。 **约束限制：** 不涉及 **取值范围：** - 0-否   - 1-是    **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                     |
| refresh_flag       | 是    | String                                                               | **参数解释：** 问答刷新标志。 **约束限制：** 不涉及 **取值范围：** - 0-否   - 1-是    **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                     |
| stream             | 否    | Boolean                                                              | **参数解释：** 流式输出标志。 **约束限制：** 不涉及 **取值范围：** - true： 开启流式输出   - false: 不开启流式输出    **默认取值：** false                                                                                                                                                                                                                                                                                                                                                               |
| filter_string      | 否    | String                                                               | **参数解释：** RAG搜索环节过滤。 带语法的查询字符串，使用具有严格语法的解析器，根据提供的查询字符串返回文档。 例如：*tags:(魔都 OR 首都) AND category:"城市(city)"* **约束限制：** 1. 支持布尔运算符 AND、OR 和 NOT（也写为 \&\&、\|\| 和 !），但请注意它们不遵守通常的优先级规则，因此只要一起使用多个运算符，就应使用括号。   2. [详细语法参考query_string语法](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax)。    **取值范围：** 不涉及 **默认取值：** 不涉及 |
| model              | 否    | String                                                               | **参数解释：** 模型名称。 **约束限制：** 不涉及 **取值范围：** 最大32 **默认取值：** 知识库配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| top_p              | 否    | Float                                                                | **参数解释：** 一种替代温度采样的方法，称为nucleus sampling，其中模型考虑具有top_p 概率质量的标记的结果。 **约束限制：** 不涉及 **取值范围：** 0.1-1 \*\*默认取值：知识库的配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| max_tokens         | 否    | Integer                                                              | **参数解释：** 生成文本的最大token数量。 输入的文本加上生成的文本总量不能超过模型所能处理的最大长度。 **约束限制：** 不涉及 **取值范围：** 1-262144 **默认取值：** 知识库配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| chat_temperature   | 否    | Float                                                                | **参数解释：** 非搜索增强模型生成多样性。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 知识库配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| search_temperature | 否    | Float                                                                | **参数解释：** 搜索增强模型生成多样性。 **约束限制：** 不涉及 **取值范围：** 0-1 **默认取值：** 知识库配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| presence_penalty   | 否    | Float                                                                | **参数解释：** 文本重复度。 **约束限制：** 不涉及 **取值范围：** -2 - 2 **默认取值：** 知识库配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表4ChatMessage 
| 参数      | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| role    | 否    | String | **参数解释：** 对话的角色，取值为system、user。 **约束限制：** 不涉及 **取值范围：** - system   - user    **默认取值：** 不涉及 |
| content | 是    | String | **参数解释：** 对话内容。 **约束限制：** 不涉及 **取值范围：** 长度不能超过4096个字符。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                       |
   
#### 响应参数
**状态码：200**
表5响应Body参数 
| 参数              | 参数类型                                                                              | 描述                                                                                                                                                                 |
|:---|:---|:---|
| chat_id         | String                                                                            | **参数解释：** 对话ID。 **取值范围：** 不涉及                                |
| chat_result     | [ChatResult] object                         | **参数解释：** 对话结果。 **取值范围：** 不涉及                                |
| references      | Array of [ChatReferenceInfo] objects | **参数解释：** 参考结果。 **取值范围：** 不涉及                                |
| reference_total | Integer                                                                           | **参数解释：** 参考来源总数。 **取值范围：** 不涉及                              |
| sub_queries     | Array of strings                                                                  | **参数解释：** 搜索使用的query，包括：原始query和改写后的query。 **取值范围：** 不涉及     |
| category        | String                                                                            | **参数解释：** 搜索规划返回的query类别。 **取值范围：** 不涉及                      |
| rac             | Map\<String,[RacResponse]\>                | **参数解释：** 图文信息，如图文开关开启。 **取值范围：** 不涉及                        |
| sql_info        | [SQLInfo] object                               | **参数解释：** tableRAG的过程数据，包括SQL、表格shema、SQL查询结果。 **取值范围：** 不涉及 |
   
 表6ChatResult 
| 参数          | 参数类型    | 描述                                                                                                                                  |
|:---|:---|:---|
| index       | Integer | **参数解释：** 序号。 **取值范围：** 不涉及   |
| message     | String  | **参数解释：** 文本内容。 **取值范围：** 不涉及 |
| question_id | String  | **参数解释：** 问答ID。 **取值范围：** 不涉及 |
   
 表7ChatReferenceInfo 
| 参数                | 参数类型                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| file_id           | String               | **参数解释：** 文件id（或FAQ id）。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| chunk_id          | String               | **参数解释：** 块ID。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| title             | String               | **参数解释：** 标题。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| subtitle          | String               | **参数解释：** 文档子标题。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| content           | String               | **参数解释：** 文本内容。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| big_content       | String               | **参数解释：** 内容上下文，比如未分片的原始表格。 注意： （1）搜索接口可能有值 （2）问答接口会将big_content替换到content，此字段清空。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                       |
| doc_type          | String               | **参数解释：** 文档类型（doc-文档，faq-问答）。 **取值范围：** - doc 文档   - faq 问答                                                                                                                                                                                              |
| file_path         | String               | **参数解释：** 文档归档路径。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| category          | String               | **参数解释：** 文档目录，单值，对应目录树中的叶子节点。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| tags              | Array of strings     | **参数解释：** 文档标签列表。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| update_date_time  | String               | **参数解释：** 更新时间。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| repo_id           | String               | **参数解释：** 知识库标识。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| page_num          | Long                 | **参数解释：** 页码。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| component_num     | Long                 | **参数解释：** 切片顺序数。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| score             | Float                | **参数解释：** ES打分。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| additional_fields | Map\<String,Object\> | **参数解释：** 用于存储未知字段的。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| elements          | Array of strings     | **参数解释：** html中的数据元素。 **取值范围：** 不涉及 **约束限制：** 此参数只有25.7.T1及之后版本支持。                                                                                                                                                                                                                                                                                                                                                                                                      |
| pdf_coordinate    | Object               | **参数解释：** 用于pdf解析文本定位的元数据。取值样例如下 \[ \[ 202, 687 \], \[ 1031, 687 \] \] **取值范围：** 不涉及 **约束限制：** 此参数只有25.7.T1及之后版本支持。 |
   
 表8RacResponse 
| 参数        | 参数类型                                                              | 描述                                                                                                                                                      |
|:---|:---|:---|
| index     | Array of integers                                                 | **参数解释：** answer关联的引用序号。 **取值范围：** 不涉及            |
| images    | Array of [ImageItem] objects | **参数解释：** 返回插入图片的信息，若没有图片插入，为空list。 **取值范围：** 不涉及 |
| ret       | Integer                                                           | **参数解释：** 响应码。 **取值范围：** 不涉及                      |
| data      | String                                                            | **参数解释：** 响应结果。 **取值范围：** 不涉及                     |
| rac_index | Integer                                                           | **参数解释：** 用来标识顺序。 **取值范围：** 不涉及                   |
   
 表9ImageItem 
| 参数         | 参数类型                                                              | 描述                                                                                                                                         |
|:---|:---|:---|
| id         | String                                                            | **参数解释：** 图片唯一id。 **取值范围：** 不涉及      |
| extra_info | [ImageExtraInfo] object | **参数解释：** 保存返回的图片数据信息。 **取值范围：** 不涉及 |
   
 表10ImageExtraInfo 
| 参数           | 参数类型    | 描述                                                                                                                                          |
|:---|:---|:---|
| image_height | Integer | **参数解释：** 图片的高。 **取值范围：** 不涉及         |
| image_width  | Integer | **参数解释：** 图片的宽。 **取值范围：** 不涉及         |
| image_base64 | String  | **参数解释：** 图片的base64编码。 **取值范围：** 不涉及  |
| doc_name     | String  | **参数解释：** 图片所属文档信息，可缺失。 **取值范围：** 不涉及 |
| title_name   | String  | **参数解释：** 图片名称。 **取值范围：** 不涉及         |
| title_no     | String  | **参数解释：** 图片编号。 **取值范围：** 不涉及         |
   
 表11SQLInfo 
| 参数          | 参数类型             | 描述                                                                                                                                                      |
|:---|:---|:---|
| sql         | String           | **参数解释：** 模型根据query和表格schema生成的SQL。 **取值范围：** 不涉及 |
| schemas     | String           | **参数解释：** 根据query检索到的相关表格的schema。 **取值范围：** 不涉及   |
| sql_results | String           | **参数解释：** 根据SQL查询数据库中表格数据，得到的结果。 **取值范围：** 不涉及    |
| table_ids   | Array of strings | **参数解释：** 参考文档中, 使用到的表格ID信息。 **取值范围：** 不涉及        |
   
#### 请求示例
上述是一个多轮对话的请求体示例。
注意：
1）、当"chat_id"为空时，"chat_create_flag"应为"1"，表示需要开启新的对话；当"chat_id"有值时，"chat_create_flag"可以为"0"，表示不需要开启新的对话。
2）、"messages"中的元素始终为奇数，单轮对话时为1，多轮对话时为3、5、7、...
如上述示例，message\[0\]\["content"\]是第一轮的query，message\[1\]\["content"\]是第一轮的answer，message\[2\]\["content"\]是第二轮的query
```
/v1/123/applications/1233453/uni-search/experience/chat
{
  "repo_id" : "9d261b1c-e9b6-464f-881a-687251504edd",
  "chat_create_flag" : "0",
  "chat_id" : "cc84be57-3fc1-4365-a54d-417f098e8a19",
  "messages" : [ {
    "role" : "user",
    "content" : "2023款本田雅阁的维修保养周期建议？"
  }, {
    "role" : "user",
    "content" : "对于2023款本田雅阁,我建议你可以注意以下几个方面的定期维护:定期更换机油和机油滤芯。根据厂家建议,大约每5,000-10,000公里更换一次。"
  }, {
    "role" : "user",
    "content" : "还有什么需要注意的？"
  } ],
  "refresh_flag" : "0"
}
```
#### 响应示例
**状态码：200**
模型生成结果响应体。
```
{
  "chat_id" : "cc84be57-3fc1-4365-a54d-417f098e8a19",
  "chat_result" : {
    "index" : 0,
    "message" : "在进行维修保养时，需要注意：检查轮胎状况,包括胎压、胎纹深度等。及时更换磨损严重的轮胎。检查制动系统,包括刹车片、制动液等。如有磨损需要及时维修更换。定期检查发动机冷却系统,更换冷却液和防冻液。检查蓄电池状态,确保电瓶能够正常工作。保持定期保养,比如四轮定位、空调保养等,延长车辆使用寿命。",
    "question_id" : "12453567446"
  },
  "references" : [ {
    "file_id" : "123",
    "title" : "汽车包养注意事项.pdf",
    "content" : "检查轮胎状况,包括胎压、胎纹深度等。及时更换磨损严重的轮胎。检查制动系统,包括刹车片、制动液等。",
    "update_date_time" : "1234554456",
    "doc_type" : "doc",
    "file_path" : "uni-search/v2/文档名称.doc"
  }, {
    "file_id" : "123",
    "title" : "汽车包养注意事项.pdf",
    "content" : "如有磨损需要及时维修更换。定期检查发动机冷却系统,更换冷却液和防冻液。",
    "update_date_time" : "1234554456",
    "doc_type" : "doc",
    "file_path" : "uni-search/v2/文档名称.doc"
  }, {
    "file_id" : "123",
    "title" : "汽车包养注意事项.pdf",
    "content" : "检查蓄电池状态,确保电瓶能够正常工作。保持定期保养,比如四轮定位、空调保养等,延长车辆使用寿命。",
    "update_date_time" : "1234554456",
    "doc_type" : "doc",
    "file_path" : "uni-search/v2/文档名称.doc"
  } ],
  "sql_info" : {
    "sql" : "",
    "schemas" : [ ],
    "sql_results" : "",
    "table_ids" : [ ]
  },
  "reference_total" : "3"
}
```
#### 状态码
| 状态码 | 描述         |
|:---|:---|
| 200 | 模型生成结果响应体。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-koosearch/ErrorCode.html)。
