> ## Documentation Index
> Fetch the complete documentation index at: https://platform.kimi.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Prompt 最佳实践

> System Prompt最佳实践：system prompt（系统提示）指的是模型在生成文本或响应之前所接收的初始输入或指令，这个提示对于模型的运作至关[重要](https://kimi.moonshot.cn/share/col3fn2lnl95v16j0g2g)

## 编写清晰的说明

* 为什么需要向模型输出清晰的说明？

> 模型无法读懂你的想法，如果输出内容太长，可要求模型简短回复。如果输出内容太简单，可要求模型进行专家级写作。如果你不喜欢输出的格式，请向模型展示你希望看到的格式。模型越少猜测你的需求，你越有可能得到满意的结果。

### 在请求中包含更多细节，可以获得更相关的回答

> 为了获得高度相关的输出，请保证在输入请求中提供所有重要细节和背景。

| 一般的请求          | 更好的请求                                                   |
| -------------- | ------------------------------------------------------- |
| 如何在Excel中增加数字？ | 我如何在Excel表对一行数字求和？我想自动为整张表的每一行进行求和，并将所有总计放在名为"总数"的最右列中。 |
| 工作汇报总结         | 将2023年工作记录总结为500字以内的段落。以序列形式列出每个月的工作亮点，并做出2023年全年工作总结。  |

### 在请求中要求模型扮演一个角色，可以获得更准确的输出

> 在 API 请求的'messages' 字段中增加指定模型在回复中使用的角色。

```json theme={null}
{
  "messages": [
    {"role": "system", "content": "你是 Kimi，由 Moonshot AI 提供的人工智能助手，你更擅长中文和英文的对话。你会为用户提供安全，有帮助，准确的回答。同时，你会拒绝一切涉及恐怖主义，种族歧视，黄色暴力等问题的回答。Moonshot AI 为专有名词，不可翻译成其他语言。"},
    {"role": "user", "content": "你好，我叫李雷，1+1等于多少？"}
  ]
}
```

### 在请求中使用分隔符来明确指出输入的不同部分

> 例如使用三重引号/XML标签/章节标题等定界符可以帮助区分需要不同处理的文本部分。

```json theme={null}
{
  "messages": [
    {"role": "system", "content": "你将收到两篇相同类别的文章，文章用XML标签分割。首先概括每篇文章的论点，然后指出哪篇文章提出了更好的论点，并解释原因。"},
    {"role": "user", "content": "<article>在这里插入文章</article><article>在这里插入文章</article>"}
  ]
}
```

```json theme={null}
{
  "messages": [
    {"role": "system", "content": "你将收到一篇论文的摘要和论文的题目。论文的题目应该让读者对论文主题有清晰的概念，同时也应该引人注目。如果你收到的标题不符合这些标准，请提出5个可选的替代方案"},
    {"role": "user", "content": "摘要:在这里插入摘要。\n\n标题:在这里插入标题"}
  ]
}
```

### 明确完成任务所需的步骤

> 任务建议明确一系列步骤。明确写出这些步骤可以使模型更容易遵循并获得更好的输出。

```json theme={null}
{
  "messages": [
    {"role": "system", "content": "使用以下步骤来回应用户输入。\n步骤一：用户将用三重引号提供文本。用前缀"摘要："将这段文本概括成一句话。\n步骤二：将第一步的摘要翻译成英语，并加上前缀 \"Translation: \"。"},
    {"role": "user", "content": "\"\"\"在此处插入文本\"\"\""}
  ]
}
```

### 向模型提供输出示例

> 向模型提供一般指导的示例描述，通常比展示任务的所有排列让模型的输出更加高效。例如，如果你打算让模型复制一种难以明确描述的风格，来回应用户查询。这被称为"few-shot"提示。

```json theme={null}
{
  "messages": [
    {"role": "system", "content": "以一致的风格回答"},
    {"role": "user", "content": "在此处插入文本"}
  ]
}
```

### 指定期望模型输出的长度

> 你可以要求模型生成特定目标长度的输出。目标输出长度可以用文数、句子数、段落数、项目符号等来指定。但请注意，指示模型生成特定数量的文字并不具有高精度。模型更擅长生成特定数量的段落或项目符号的输出。

```json theme={null}
{
  "messages": [
    {"role": "user", "content": "用两句话概括三引号内的文本，50字以内。\"\"\"在此处插入文本\"\"\""}
  ]
}
```

## 提供参考文本

### 指导模型使用参考文本来回答问题

> 如果您可以提供一个包含与当前查询相关的可信信息的模型，那么就可以指导模型使用所提供的信息来回答问题

```json theme={null}
{
  "messages": [
    {"role": "system", "content": "使用提供的文章（用三引号分隔）回答问题。如果答案在文章中找不到，请写"我找不到答案。" "},
    {"role": "user", "content": "<请插入文章，每篇文章用三引号分隔>"}
  ]
}
```

## 拆分复杂的任务

### 通过分类来识别用户查询相关的指令

> 对于需要大量独立指令集来处理不同情况的任务来说，对查询类型进行分类，并使用该分类来明确需要哪些指令可能会帮助输出。

```json theme={null}
# 根据客户查询的分类，可以提供一组更具体的指示给模型，以便它处理后续步骤。例如，假设客户需要"故障排除"方面的帮助。
{
  "messages": [
    {"role": "system", "content": "你将收到需要技术支持的用户服务咨询。可以通过以下方式帮助用户：\n\n-请他们检查***是否配置完成。\n如果所有***都配置完成，但问题依然存在，请询问他们使用的设备型号\n-现在你需要告诉他们如何重启设备：\n=设备型号是A，请操作***。\n-如果设备型号是B，建议他们操作***。"}
  ]
}
```

### 对于轮次较长的对话应用程序，总结或过滤之前的对话

> 由于模型有固定的上下文长度显示，所以用户与模型助手之间的对话不能无限期地继续。

针对这个问题，一种解决方案是总结对话中的前几个回合。一旦输入的大小达到预定的阈值，就会触发一个查询来总结先前的对话部分，先前对话的摘要同样可以作为系统消息的一部分包含在内。或者，整个对话过程中的先前对话可以被异步总结。

### 分块概括长文档，并递归构建完整摘要

> 要总结一本书的内容，我们可以使用一系列的查询来总结文档的每个章节。部分摘要可以汇总并总结，产生摘要的摘要。这个过程可以递归进行，直到整本书都被总结完毕。如果需要使用前面的章节来理解后面的部分，那么可以在总结书中给定点的内容时，包括对给定点之前的章节的摘要。
