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

在搭建低代码智能体或配置低代码工作流中的大模型节点时，首要步骤就是编写提示词，明确设定智能体和大模型节点的身份和目标。大语言模型会根据对提示词的理解，来响应用户问题。
## 编写建议 {#4eb7c1e9}
清晰明确的提示词可以有效提高大模型的输出质量，降低错误率，并满足特定场景的需求。建议你在编写提示词前，先了解提示词的编写技巧。

* **明确目标和任务**：在编写提示词之前，首先要明确智能体或大模型节点的目标和任务，这涉及到对智能体预期行为的深入理解。
* **简洁而具体：​**提示词应该简洁而具体，直接指向智能体或大模型节点需要执行的任务。
* **使用上下文：​**在提示词中包含相关的上下文信息，可以帮助智能体或大模型节点更好地理解任务的背景和需求。
* **避免歧义**：确保提示词中的语言清晰无歧义，模糊的指令可能导致智能体或大模型节点产生错误的理解，从而影响其性能。
* **反馈和迭代**：编写提示词是一个迭代的过程，根据智能体或大模型节点的反馈不断调整和优化提示词，以提高其效果。
* **利用示例**：提供示例输入和预期输出，可以帮助智能体或大模型节点学习如何正确响应。
* **考虑多样性**：在编写提示词时，需要考虑不同用户的表达方式，智能体或大模型节点应该能够处理多种不同的输入方式。
* **测试和验证**：在发布智能体或工作流之前，进行充分的测试和验证，以确保提示词在各种情况下都能正常工作，包括测试对异常输入的处理能力。
* **遵守伦理和法律标准**：在编写提示词时，确保智能体或大模型节点的行为符合伦理和法律标准，包括保护用户隐私、避免歧视性语言和行为。

以下是一个提示词示例，包含**人物设定**、**功能和流程**、**约束与限制**和**回复格式**。
<!-- @cols-width: 110,415,100 -->
| | | | \
|**内容模块** |**说明** |**示例** |
|---|---|---|
| | | | \
|人物设定 |描述所扮演的角色、职责和回复风格。  |\
| |  |\
| | |```Markdown |\
| | |## 人设 |\
| | |你是一个新闻播报员，可以用非常生动的风格讲解科技新闻。 |\
| | |``` |\
| | | |
| | | | \
|功能和流程  |描述智能体的功能和工作流程，约定智能体在不同的场景下如何回答用户问题。  |\
| |尽管智能体会根据提示内容自动选择工具。但仍建议通过自然语言强调在何种场景下、调用哪个工具来提升对智能体的约束力，选择更符合预期的工具以保证回复的准确性。  |\
| |如果智能体设置了变量并开启了**提示词访问**，你也可以在人设与提示词中，指定变量的具体使用场景，例如称呼你的用户为{{name}}。  |```Markdown |\
| | |## 技能 |\
| | |当用户询问最新的科技新闻时，先调用“getToutiaoNews” 搜索最新科技新闻，再调用“LinkReaderPlugin”访问新闻地址，最终整理最重要的 3 条新闻回复用户。 |\
| | |``` |\
| | | |
| | | | \
|约束与限制  |如果你想限制回复范围，请直接告诉智能体什么应该回答、什么不应该回答。  |```Markdown |\
| | |## 限制 |\
| | |拒绝回答与新闻无关的话题；如果并没有搜索到新闻结果，请告诉用户你没有查到新闻，而不应该编造内容。 |\
| | |``` |\
| | | |
| | | | \
|回复格式  |你也可以为智能体提供回复格式的示例。智能体会模仿提供的回复格式回复用户。  |```Markdown |\
| | |  请参考如下格式回复： |\
| | |  **新闻标题** |\
| | |  - 新闻摘要：30 个字左右的新闻摘要 |\
| | |  - 新闻时间：yyyy-mm-dd |\
| | |``` |\
| | | |

## 提示词语法 {#13a05c34}
扣子编程支持 Jinja 和 Markdown 语法编写提示词，通过使用模板和标记语言，你可以更灵活和高效的编写提示词。
### 使用 Jinja 编写提示词 {#046c501f}
Jinja 是一种模板引擎，允许开发者使用简单的标记语言来插入动态内容到静态模板中。以下提供几个 Jinja 的使用示例供你参考，更多用法请参考 [jinja 官网](https://jinja.palletsprojects.com/en/stable/)。
<!-- @cols-width: 100,265,479 -->
| | | | \
|**语法** |**说明** |**示例** |
|---|---|---|
| | | | \
|变量 |通过变量将动态数据嵌入到提示词中，使提示词可以根据不同的输入进行动态调整，以生成个性化的内容。 |\
| | |* 编写提示词：`The question is {{question_variable}}. Please answer it carefully.` |\
| | |* 实际输入：假设`question_variable`为`What is the capital of France?`，则生成的 Prompt 为`The question is What is the capital of France?. Please answer it carefully.` |
| | | | \
|过滤器 |过滤器可以对变量的值进行特定处理和转换，使得提示词更加符合预期的格式和样式。 |\
| |例如，使用`title`过滤器将问题标题转换为标题格式，或者使用`striptags`过滤器去除可能存在的 HTML 标签等。 |* 编写提示词：`The title is {{title_variable|title}}. Please discuss it.` |\
| | |* 实际输入：假设`title_variable`为`a simple question`，则生成的 Prompt 为`The title is A Simple Question. Please discuss it.` |
| | | | \
|条件判断 |根据变量的值或逻辑表达式的结果来控制输出流程，根据条件动态生成不同的提示词。 |* 编写提示词：`{% if include_hint %}Here is a hint: {{hint_variable}}.{% endif %} The main question is {{question_variable}}.` |\
| | |* 实际输入：假设`include_hint`为`True`，`hint_variable`为`Think about European countries.`，`question_variable`为`What is the capital of France?`，则生成的 Prompt 为`Here is a hint: Think about European countries. The main question is What is the capital of France?.` |
| | | | \
|循环 |通过循环处理多个相关问题或元素，生成重复的内容。 |\
| |例如，如果有多个相关的子问题需要在提示词中逐一提及，可以使用循环来生成这部分内容。 |* 编写提示词：`{% for option in options %}Option {{loop.index}}: {{option}}{% endfor %} Which option do you think is the best?` |\
| | |* 实际输入：假设`options`为`['Option A', 'Option B', 'Option C']`，则生成的 Prompt 为`Option 1: Option A Option 2: Option B Option 3: Option C Which option do you think is the best?` |

### 使用 Markdown 编写提示词 {#dd14e4bb}
Markdown 是一种轻量级的标记语言，对于功能相对复杂的场景，推荐使用结构化格式来编写提示词，结构化提示使用 Markdown 语法，可读性更强、更便于迭代。 
:::tip 说明
扣子编程支持将智能体的提示词自动优化成结构化的内容，你可以直接使用结构化内容，也可以基于优化后的内容进行修改。 
:::
下面是一个使用 Markdown 语法编写的提示词示例。 
```Markdown
# 角色
你是一位资深且专业的数据分析专家，能够熟练运用 analyze 工具进行全面的数据处理与分析，以清晰易懂的方式向用户阐释数据特性及复杂的分析结果，无论是简单的数据还是复杂的数据集，都能高效应对。

## 技能
### 技能 1: 提取数据
1. 当用户提供一个数据源时，首先尝试使用 analyze 工具的 extract 数据功能进行提取。
2. 若数据源无法直接提取，判断是否需要使用特定编程语言写脚本提取数据。若需要，详细解释所使用的逻辑和方法，不能仅仅给出代码。
===回复示例===
数据源情况：<描述数据源的特点及问题>。提取方法：<说明使用的工具或编程语言以及具体的提取逻辑>。
===示例结束===

### 技能 2: 处理数据
1. 使用 analyze 工具的 data cleaning 功能进行数据清洗，包括妥善处理缺失值、异常值和重复值等。
2. 通过数据转换、数据规范化等方式对数据进行预处理，确保数据适合进一步的分析，并说明处理的理由和方法。
===回复示例===
数据问题：<列举数据中存在的问题>。处理方法：<说明具体的数据处理步骤和使用的工具或技术>。
===示例结束===

### 技能 3: 分析数据
1. 根据用户需求，使用 analyze 工具进行描述性统计分析、关联性分析或预测性分析等。
2. 通过数据可视化方法，如柱状图、散点图、箱线图等，辅助展示分析结果，并详细解释分析结果的含义，不能仅仅给出数字或图表。
===回复示例===
分析需求：<描述用户的分析需求>。分析结果：<展示分析结果的图表或数字，并详细解释其含义>。
===示例结束===

## 限制:
- 只讨论与数据分析有关的内容，拒绝回答与数据分析无关的话题。
- 所输出的内容必须按照给定的格式进行组织，不能偏离框架要求。
- 对于分析结果，需要详细解释其含义，不能仅仅给出数字或图表。
- 在使用特定编程语言提取数据时，必须解释所使用的逻辑和方法，不能仅仅给出代码。
```

## 其他编写能力 {#f63a2754}
### 提示词编辑块 {#6470f25f}
支持在编写提示词时添加编辑块，设置预设文本和空白引导，以便于企业成员引用提示词时可以根据提示文案，定制化修改提示词。
#### **方式一：通过选中文本添加编辑块** {#7cc51e08}

1. 在智能体的**编排**页面，单击**提示词库**图标。
   ![Image=468x56](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/079fce8c200a4726a01d60358c552e77~tplv-goo7wpa0wc-image.image)
2. 在页面右上角，单击**新建提示库**。
3. 在提示词的编辑框中，输入提示词，并选中要添加编辑块的文本，然后单击**编辑块**图标。
   ![Image=346x276](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/1b23d563a9224200b6a6c9c528d638c4~tplv-goo7wpa0wc-image.image)
4. 设置空白引导和预设文本。
   * **空白引导**：必填，编辑块内容为空时的提示文案。
   * **预设文本**：非必填，提示词中实际显示的文本内容。
   ![Image=356x281](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/05f098e8d8da43229f634dc08f12a536~tplv-goo7wpa0wc-image.image)

#### **方式二：通过按钮添加编辑块** {#b06491cf}

1. 在智能体的**编排**页面，单击**提示词库**图标。
   ![Image=468x56](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/079fce8c200a4726a01d60358c552e77~tplv-goo7wpa0wc-image.image)
2. 在页面右上角，单击**新建提示库**。
3. 在提示词的编辑框中，输入提示词，并将光标定位在需插入编辑块的位置，然后单击**编辑块**。
   ![Image=311x349](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/a45fe89d6f82425a923ce1712344d7c1~tplv-goo7wpa0wc-image.image)
4. 设置空白引导和预设文本。
   * **空白引导**：编辑块内容为空时的提示文案。
   * **预设文本**：在提示词中实际设置的文本内容。
   ![Image=316x254](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/c388e0f7ee5748538c472947e49733d4~tplv-goo7wpa0wc-image.image)

### 快捷插入技能 {#35dba1a7}
在提示词的编辑框中输入`{}`，可以引用已经配置到智能体或工作流的技能，例如插件工具、工作流、图像流以及知识库，实现提示词的高效编写。
:::tip 说明
在智能体或工作流大模型节点编写提示词时，支持通过输入`{}`来引用已经配置到智能体或工作流的技能，而在资源库中编写提示词时没有此功能。
:::

1. 在提示词的编辑框中，输入`{}`。
2. 在弹出的的资源列表中，找到目标技能，然后单击**添加**。
   ![Image=337x338](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/5257be733f8a449883e316a576b9dacd~tplv-goo7wpa0wc-image.image)

添加成功后，技能会显示在提示词中。
![Image=416x146](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/baa876d70cd2421ca6794dfe64c3a7b6~tplv-goo7wpa0wc-image.image)


