# 上下文模板

!!! 适用于：文本补全 API
对于聊天补全 API 中的等效设置，请使用[提示词管理器](prompt-manager.md)。
!!!

通常，AI 模型需要您以某种特定方式提供角色数据。SillyTavern 包含了一系列针对不同模型的预制转换规则，但您可以根据需要自定义它们。

在"[高级格式设置](advancedformatting.md)"面板中编辑这些设置。

## 故事字符串

此字段是聊天前角色数据的模板（在内部称为故事字符串）。
这是为文本补全和指令模型格式化角色卡片的主要方式。

模板支持 Handlebars 语法和任何自定义文本注入或格式化。请参阅此处的语言参考：<https://handlebarsjs.com/guide/>

我们为 Handlebars 模版引擎提供以下参数（用双大括号包裹它们）：

1. `description` - 角色的描述
2. `scenario` - 角色的场景
3. `personality` - 角色的个性
4. `system` - [系统提示词](advancedformatting.md#系统提示词) 或角色的主提示词覆盖（如果存在且在用户设置中启用了"优先使用角色提示词"）
5. `persona` - 选定的个性描述
6. `char` - 角色名称
7. `user` - 选定的个性名称
8. `wiBefore` 或 `loreBefore` - 位置设置为"角色定义之前"的已激活世界信息条目的组合
9. `wiAfter` 或 `loreAfter` - 位置设置为"角色定义之后"的已激活世界信息条目的组合
10. `mesExamples` - （可选）角色的示例对话，使用分隔符进行指令格式化。将"示例消息行为"设置为"永不包含示例"以避免重复。

支持特殊的 \{\{trim\}\} 宏来移除其周围的任何换行符。如果您希望某些文本部分与前一行之间**不**用换行符分隔，请使用它（_空格**不会**被修剪_）。

**警告**：如果故事字符串模板中缺少上述某些参数，它们将完全不会被发送到提示词中。

## 示例分隔符

用作示例对话块的块头和分隔符。示例对话中的任何 `<START>` 标签实例都将被此字段的内容替换。

## 聊天开始

在渲染的故事字符串之后和示例对话块之后，但在上下文中的第一条消息之前插入作为分隔符。

## 将分隔符作为停止字符串

将"示例分隔符"和"聊天开始"添加到停止字符串列表中。

如果模型倾向于产生幻觉或泄露由分隔符前导的整个示例对话块，这很有帮助。

## 将名称作为停止字符串

将角色和用户个性名称添加到停止字符串列表中。

建议保持开启以防止模型冒充。

## 允许历史后指令

在提示词末尾包含历史后指令，格式化为最后一条用户消息。

历史后指令提示词应该在角色卡片中定义，并且应该启用"优先使用角色指令"设置。

应谨慎使用，因为在上下文中较低位置放置指令可能会导致较小模型的输出质量下降。

## 始终在提示词中添加角色名称

将角色名称附加到提示词以强制模型以角色身份完成消息：

```txt
** 其他上下文在此 **
角色：
```
