
# 生成答案
#### 功能介绍
将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/koosearch/experience/chat
#### 请求参数
表1请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                           |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释：** 接口鉴权使用的Token，Token获取方式参考：3.2节 认证鉴权。 **约束限制：** 不涉及。 |
   
表2请求Body参数 
| 参数                 | 是否必选 | 参数类型                                                                   | 描述                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| repo_id            | 是    | String                                                                 | **参数解释：** 知识库ID。 获取方式： 账号登录KooSearch体验平台，在左侧导航栏选择："知识库管理" ，在此界面获取"知识库ID"字段的值，表示该知识库在向量数据库中存储的ID，具有唯一性。 **约束限制：** 不显示。                                                                                                                                                                                                                                            |
| extra_repo_ids     | 否    | Array of strings                                                       | **参数解释：** 引用知识库标识列表，用于支持多个知识库联合检索的场景。 **约束限制：** 不限制。                                                                                                                                                                                                                                                                                                             |
| chat_id            | 否    | String                                                                 | **参数解释：** 当前对话ID。 **约束显示：** 不涉及。                                                                                                                                                                                                                                                                                                                                 |
| messages           | 是    | Array of [ChatMessage] objects | 对话内容。                                                                                                                                                                                                                                                                                                                                                            |
| chat_create_flag   | 是    | String                                                                 | **参数解释：** 是否开启一轮新的对话（ 0-否，1-是）。 1：清空历史对话，开始一轮新的对话。 0：延续chat_id所在的对话上下文。 **约束限制：** 不涉及。                                                                                                                                                                                                                                                                           |
| refresh_flag       | 是    | String                                                                 | **参数解释：** 是否清空问答历史（0-否，1-是）。 1：清空历史对会话。 0：不清空历史会话。 **约束限制：** 不涉及。                                                                                                                                                                                                                                                                                                |
| max_tokens         | 否    | Integer                                                                | **参数解释：** 模型生成文本的最大token数量。 **约束限制：** 输入的文本加上生成的文本总量不能超过模型所能处理的最大长度。 最小值：1                                                                                                                                                                                                                                                                                       |
| stream             | 否    | Boolean                                                                | **参数解释：** 是否使用流式输出模式。 **约束限制：** 不涉及。                                                                                                                                                                                                                                                                                                                             |
| filter_string      | 否    | String                                                                 | **参数解释：** RAG搜索环节，指定过滤字段。 带语法的查询字符串，使用具有严格语法的解析器，根据提供的查询字符串返回文档。 例如：*tags:(教育 OR 金融) AND category:"行业知识"* 注意事项： 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) **约束限制：** 不涉及。 |
| top_p              | 否    | Float                                                                  | **参数解释：** 一种替代温度采样的方法，称为nucleus sampling，通过限制词汇的选择范围来控制生成文本的多样性。top_p值越高，候选单词越多，文本多样性越高。 **约束限制：** 通常建议更改top_p或temperature来调整生成文本的倾向性，但不要同时更改这两个参数。 **取值范围：** 0.1 \~ 1 **默认取值：** 0.1                                                                                                                                                                             |
| presence_penalty   | 否    | Float                                                                  | **参数解释：** 控制生成的文本中重复内容的程度。presence_penalty的目的是减少模型在生成文本时重复使用相同或类似的内容，以提高生成文本的多样性。即如果一个Token已经在之前的文本中出现过，那么模型在生成这个Token时会受到一定的惩罚。 presence_penalty越小，模型考虑之前生成的Token越少，可能导致文本中出现重复内容。 presence_penalty越大，模型会更倾向于生成新的、未出现过的Token，生成的文本会更加多样化。 **取值范围：** -2 \~ 2，具体的取值需要权衡，盘古NLP模型一般情况下可以取1.1。 **默认取值：** 0                                                           |
| search_temperature | 否    | Float                                                                  | **参数解释：** 搜索增强场景下，控制模型生成文本的多样性和创造力。 取值接近0表示最低的随机性，1表示最高的随机性。一般来说，temperature越低，适合完成确定性的任务。temperature越高，例如0.9，适合完成创造性的任务。 **约束限制：** 不涉及。 **取值范围：** 0 \~ 1，盘古NLP模型一般设置为0.2/0.3。 **默认取值：** 0.3                                                                                                                                                                     |
| chat_temperature   | 否    | Float                                                                  | **参数解释：** 非搜索增强场景下，用于控制模型生成文本的多样性和创造力。 取值接近0表示最低的随机性，1表示最高的随机性。一般来说，temperature越低，适合完成确定性的任务。temperature越高，例如0.9，适合完成创造性的任务。 **约束限制：** 不涉及。 **取值范围：** 0 \~ 1。                                                                                                                                                                                                    |
   
 表3ChatMessage 
| 参数      | 是否必选 | 参数类型   | 描述                                                                        |
|:---|:---|:---|:---|
| role    | 否    | String | **参数解释：** \~\~对话的角色，取值为system、user。\~\~ 待删除字段，无需使用。 **约束限制：** 待删除字段，无需使用。 |
| content | 是    | String | **参数解释：** 用户输入的对话内容。 **约束限制：** 不涉及。                                       |
   
#### 响应参数
**状态码：200**
表4响应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类别。 **约束限制：** 不涉及。                      |
   
 表5ChatResult 
| 参数          | 参数类型    | 描述                                    |
|:---|:---|:---|
| index       | Integer | **参数解释：** 消息结果的序号。 **约束限制：** 不涉及。     |
| message     | String  | **参数解释：** 返回消息的文本内容。 **约束限制：** 不涉及。   |
| question_id | String  | **参数解释：** 返回消息对应的问题ID。 **约束限制：** 不涉及。 |
   
 表6ChatReferenceInfo 
| 参数               | 参数类型             | 描述                                                                                                    |
|:---|:---|:---|
| file_id          | String           | **参数解释：** 参考文档片段来源的文档ID（或FAQ ID）。 **约束限制：** 不涉及。                                                      |
| title            | String           | **参数解释：** 参考文档片段来源的文档标题。 **约束限制：** 不涉及。                                                               |
| content          | String           | **参数解释：** 参考文档片段内容。 **约束限制：** 不涉及。                                                                    |
| big_content      | String           | **参数解释：** 参考文档内容上下文，比如未分片的原始表格。 注意： （1）搜索接口可能有值。 （2）问答接口会将big_content替换到content，此字段清空。 **约束限制：** 不涉及。 |
| update_date_time | String           | **参数解释：** 参考文档分片的更新时间。 **约束限制：** 不涉及。                                                                 |
| doc_type         | String           | **参数解释：** 参考分片来源文档的类型（doc-文档，faq-问答）。 **约束限制：** 不涉及。                                                  |
| file_path        | String           | **参数解释：** 参考分片来源文档的归档路径。 **约束限制：** 不涉及。                                                               |
| category         | String           | **参数解释：** 文档目录，单值，对应目录树中的叶子节点。 **约束限制：** 不涉及。                                                         |
| tags             | Array of strings | **参数解释：** 文档标签列表。 **约束限制：** 不涉及。                                                                      |
| score            | Float            | **参数解释：** query和当前参考分片的相关度打分，分值越高代表越相关。 **约束限制：** 不涉及。                                                |
| subtitle         | String           | **参数解释：** 当前参考分片在原文中的子标题。 **约束限制：** 不涉及。                                                              |
| repo_id          | String           | **参数解释：** 当前知识库ID。 **约束限制：** 不涉及。                                                                     |
| chunk_id         | String           | **参数解释：** 当前参考文档分片的ID。 **约束限制：** 不涉及。                                                                 |
| page_num         | Integer          | **参数解释：** 当前参考分片位于文档内的第几页。 **约束限制：** 不涉及。                                                             |
| component_num    | Integer          | **参数解释：** 当前参考分片位于文档内的第几个分片。 **约束限制：** 不涉及。                                                           |
   
#### 请求示例
上述是一个多轮对话的请求体示例。
注意：
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
3）、接口支持流式/非流式返回，通过"stream"参数控制。
```
POST https://{endpoint}/v1/koosearch/experience/chat
{
  "repo_id" : "acd90739-2e22-4870-b2db-35018699b623",
  "extra_repo_ids" : [ ],
  "chat_id" : "f939c01e-8042-49bb-b207-6575f98bbaeb",
  "messages" : [ {
    "role" : "system",
    "content" : "发动机故障有哪些？"
  }, {
    "role" : "system",
    "content" : "发动机故障包括以下几种情况：\n\n1. 启动困难：发动机无法顺利启动，可能因为电池电量不足、火花塞问题或燃油系统堵塞等原因。\n\n2. 怠速不稳：发动机在怠速状态下运行不稳定，可能导致熄火或者抖动严重。可能是由于空气进气系统、燃油系统或点火系统的问题。\n\n3. 动力减弱：发动机加速性能下降，爬坡能力降低，可能是由于燃油系统、点火系统或排气系统等问题导致的。\n\n4. 油耗增加：发动机燃油消耗异常增加，可能是由于燃油系统、点火系统或传感器等问题引起的。\n\n5. 异响：发动机运行过程中出现异常噪音，可能是由于机械部件磨损、润滑系统问题或皮带松动等原因造成的。\n\n6. 过热：发动机温度过高，可能导致过热保护开关启动，使发动机停止运行。可能是由于冷却系统故障、水泵故障或散热器堵塞等原因造成的。\n\n7. 漏油：发动机内部或外部出现燃油、机油或其他液体泄漏现象，可能是由于密封件老化、紧固件松动或油路堵塞等原因造成的。\n\n8. 烧机油：发动机机油消耗过多，可能是由于活塞环磨损、气门油封损坏或曲轴箱通风系统故障等原因造成的。\n\n9. 排放超标：发动机尾气排放超过国家标准，可能是由于燃油系统、点火系统或排气系统等问题引起的。\n\n10. 传感器故障：发动机控制系统中的一些传感器出现故障，可能导致发动机运行不稳定、性能下降或报警灯亮起等现象。\n\n11. 发动机启动失败：这可能是因为发动机清洗过程中水分渗入了分电器、点火模块、火花塞或高压线等关键部件；损坏的火花塞同样可能阻止发动机启动；蓄电池电量匮乏也是一个不可忽视的原因；此外，惯性开关的断开亦可能引发启动难题。"
  }, {
    "role" : "system",
    "content" : "还有其他的吗？"
  } ],
  "chat_create_flag" : 0,
  "refresh_flag" : 0,
  "stream" : "false",
  "top_p" : 0.1,
  "max_tokens" : 2048,
  "chat_temperature" : 0.8,
  "search_temperature" : 0.3,
  "presence_penalty" : 0
}
```
#### 响应示例
**状态码：200**
模型生成结果响应体。
```
{
  "chat_id" : "f939c01e-8042-49bb-b207-6575f98bbaeb",
  "category" : "通用知识类",
  "chat_result" : {
    "index" : 0,
    "message" : "当然，除了上述提到的发动机故障外，还有一些其他常见的问题和现象：\n\n11. 喷油嘴堵塞：喷油嘴是将燃油雾化并喷射到燃烧室的关键部件，如果喷油嘴堵塞，会导致燃油供给不足，影响发动机的动力输出和油耗。\n\n12. 点火正时错误：点火正时是指点火时刻相对于曲轴位置的关系，如果点火正时错误，会导致发动机动力输出不稳定、油耗增加甚至爆震等问题。\n\n13. 曲轴轴承磨损：曲轴轴承负责支撑曲轴并减少摩擦，如果曲轴轴承磨损严重，会导致发动机震动加剧、油耗增加以及动力下降等问题。\n\n14. 活塞环磨损：活塞环负责密封燃烧室并与缸壁接触，如果活塞环磨损严重，会导致漏气、烧机油等问题。\n\n15. 冷却液泄露：冷却液用于带走发动机产生的热量，如果冷却液泄露，会导致发动机过热、水温表指示异常等问题。\n\n16. 空气滤清器堵塞：空气滤清器负责过滤进入发动机的空气中的杂质，如果空气滤清器堵塞，会影响发动机的进气量，导致动力下降和油耗增加。\n\n17. 火花塞积碳：火花塞上的积碳会阻碍电火花的产生，导致点火不良，进而影响发动机的工作。\n\n18. 燃油泵故障：燃油泵负责将燃油从油箱输送到发动机，如果燃油泵故障，会导致供油不足，影响发动机的工作。\n\n19. 高压线老化断裂：高压线负责传递点火信号，如果高压线老化断裂，会导致点火不良，影响发动机的工作。\n\n20. 电子控制单元（ECU）故障：ECU负责接收各种传感器信号并对发动机进行控制，如果ECU故障，会导致发动机运行不稳定、性能下降或报警灯亮起等问题。\n\n这些只是发动机故障的一部分，具体情况还需要根据实际问题进行诊断和维修。",
    "question_id" : "312be669-84fc-4d5b-9a66-58a0f3075a5f"
  },
  "sub_queries" : [ "除了上述提到的发动机故障外，发动机还可能出现哪些故障", "还有其他的吗？" ],
  "references" : [ {
    "file_id" : "22b179b9de0ad941215cc7f052ab10f8",
    "chunk_id" : "483faffeeb284d20a23378a7d18e9ff1",
    "title" : "发动机故障有哪些问题和现象.txt",
    "subtitle" : "发动机故障有哪些问题和现象",
    "content" : "1. 启动困难：发动机无法顺利启动，可能因为电池电量不足、火花塞问题或燃油系统堵塞等原因。\n2. 怠速不稳：发动机在怠速状态下运行不稳定，可能导致熄火或者抖动严重。可能是由于空气进气系统、燃油系统或点火系统的问题。\n3. 动力减弱：发动机加速性能下降，爬坡能力降低，可能是由于燃油系统、点火系统或排气系统等问题导致的。\n4. 油耗增加：发动机燃油消耗异常增加，可能是由于燃油系统、点火系统或传感器等问题引起的。\n5. 异响：发动机运行过程中出现异常噪音，可能是由于机械部件磨损、润滑系统问题或皮带松动等原因造成的。\n6. 过热：发动机温度过高，可能导致过热保护开关启动，使发动机停止运行。可能是由于冷却系统故障、水泵故障或散热器堵塞等原因造成的。\n7. 漏油：发动机内部或外部出现燃油、机油或其他液体泄漏现象，可能是由于密封件老化、紧固件松动或油路堵塞等原因造成的。\n8. 烧机油：发动机机油消耗过多，可能是由于活塞环磨损、气门油封损坏或曲轴箱通风系统故障等原因造成的。\n9. 排放超标：发动机尾气排放超过国家标准，可能是由于燃油系统、点火系统或排气系统等问题引起的。",
    "file_path" : "uni-search/files/b25446daeb1a41a7953c5deba2b2677a/fb9731ab-7085-474f-b6c7-64473586f0f3/acd90739-2e22-4870-b2db-35018699b623/22b179b9de0ad941215cc7f052ab10f8/发动机故障有哪些问题和现象.txt",
    "category" : "",
    "update_date_time" : "1731049431328",
    "repo_id" : "acd90739-2e22-4870-b2db-35018699b623",
    "page_num" : 1,
    "component_num" : 1,
    "score" : 0.9049869
  }, {
    "file_id" : "22b179b9de0ad941215cc7f052ab10f8",
    "chunk_id" : "389497084e3f44e589b635f9a1ef4f2f",
    "title" : "发动机故障有哪些问题和现象.txt",
    "subtitle" : "发动机故障有哪些问题和现象",
    "content" : "10. 传感器故障：发动机控制系统中的一些传感器出现故障，可能导致发动机运行不稳定、性能下降或报警灯亮起等现象。",
    "file_path" : "uni-search/files/b25446daeb1a41a7953c5deba2b2677a/fb9731ab-7085-474f-b6c7-64473586f0f3/acd90739-2e22-4870-b2db-35018699b623/22b179b9de0ad941215cc7f052ab10f8/发动机故障有哪些问题和现象.txt",
    "category" : "",
    "update_date_time" : "1731049431328",
    "repo_id" : "acd90739-2e22-4870-b2db-35018699b623",
    "page_num" : 1,
    "component_num" : 2,
    "score" : 0.79597545
  }, {
    "file_id" : "b7947c56436d29bf7671844d7f57371e",
    "chunk_id" : "0512b8fe109941208de99b4470ab2de3",
    "title" : "发动机异常.txt",
    "subtitle" : "发动机异常\n1. 发动机启动失败：",
    "content" : "这可能是因为发动机清洗过程中水分渗入了分电器、点火模块、火花塞或高压线等关键部件。\n损坏的火花塞同样可能阻止发动机启动。\n蓄电池电量匮乏也是一个不可忽视的原因。\n此外，惯性开关的断开亦可能引发启动难题。",
    "file_path" : "uni-search/files/b25446daeb1a41a7953c5deba2b2677a/fb9731ab-7085-474f-b6c7-64473586f0f3/acd90739-2e22-4870-b2db-35018699b623/b7947c56436d29bf7671844d7f57371e/发动机异常.txt",
    "category" : "",
    "update_date_time" : "1731049431522",
    "repo_id" : "acd90739-2e22-4870-b2db-35018699b623",
    "page_num" : 1,
    "component_num" : 2,
    "score" : 0.29695997
  } ],
  "rac" : null,
  "reference_total" : 3
}
```
#### 状态码
| 状态码 | 描述         |
|:---|:---|
| 200 | 模型生成结果响应体。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-koosearch/ErrorCode.html)。
