#
提示
当您向 AI 发送消息时,您编写的文本会与其他文本结合,形成发送给 AI 的单个请求。这个组合文本称为"提示"或有时称为"请求"或"上下文"。
提示可以包括多种不同类型的文本,包括:
主要指令 关于如何生成响应- AI 应该扮演的角色的定义
- 您正在扮演的角色的定义
- AI 正在与之交互的"世界"信息
- 来自数据银行的相关文档或信息
- 过去对话的摘要
- 网络搜索或其他外部数据源的结果
- 对话中的先前消息
- 您给 AI 的消息
- 关于如何生成响应的 AI
最终指令
这可能需要管理很多东西!为了帮助您理解如何构建和修改发送给 AI 的请求,SillyTavern 识别了您可能希望在提示中包含的不同元素。然后,您可以构建提示以包含适合您与 AI 交互方式的内容。
其中许多元素在您将更改它们的部分中进行了解释。例如,要描述您希望 AI 扮演的角色,您可以使用角色设计中的描述字段。
#
查看提示
阅读发送给 AI 的最终提示对于理解 AI 被告知了什么以及为什么它生成了这样的响应非常有帮助。您可以通过几种方式查看提示:
- 使用 AI 回复消息上的提示项目化图标
- 使用提示检查器扩展
- 检查您运行 SillyTavern 的终端窗口中的日志
- 检查浏览器开发者工具中的控制台
#
更改提示的构建方式
以正确的方式向 AI 呈现提示的所有部分对于获得最佳响应至关重要。您可以控制提示的构建方式。
使用高级格式化面板自定义文本补全 API 的提示构建。
使用提示管理器自定义聊天补全 API 的提示构建。
#
主要提示(系统提示)
主要提示(或系统提示)定义了模型要遵循的一般指令。它设置了对话的基调和上下文。例如,它告诉模型扮演 AI 助手、写作伙伴或虚构角色。
主要提示是提示管理器中的默认提示之一。它通常是模型接收的上下文中的第一条消息,归属于("发送者")系统角色。
默认的主要提示是:
在 {{char}} 和 {{user}} 之间的虚构聊天中编写 {{char}} 的下一条回复。
{{char}} 和 {{user}} 占位符将替换为您在对话中定义的角色和身份的名称。
您可以在主要提示中使用任何受支持的{{宏}}标签,以包含可能在对话之间变化或随着对话进展而变化的信息。
#
调整主要提示
默认的主要提示帮助模型理解它应该如何处理后面的角色和身份信息,如何解释过去的对话,以及生成什么样的响应。它是一个灵活的通用提示,在许多情况下都有效,因为它确立了 AI 正在作为与您的身份对话的角色进行写作。
但是,您可以调整主要提示以更好地满足您的需求。以下是一些调整主要提示的常见原因:
- 提供额外的指令:例如,您希望 AI 解释其推理,遵循特定规则或避免某些主题
- 澄清 AI 的角色:例如,您希望 AI 充当叙述者、说书人或向导
- 更改对话的上下文:例如,您希望 AI 响应,就像它是 AI 助手、文本冒险游戏或写作伙伴一样
尝试并看看什么最适合您
本指南中的所有示例都为其他用户提供了良好的效果,但适合您需求和您使用的模型的提示可能会有所不同。尝试不同的指令和提示风格,看看什么最适合您。如果您不确定要尝试什么,您总是可以在 SillyTavern Discord 中寻求帮助。
在主要提示中为 AI 提供额外的指令可以帮助它理解您从对话中想要什么。
只写一条回复。写至少一段,最多四段。
已启用 Markdown。使用它来格式化您的响应。将代码片段包含在三重反引号中。
用引号编写角色对话。用括号编写 {{char}} 的想法。
您是一个为 13 至 17 岁用户提供动漫角色扮演生成模型的 AI。您始终生成有趣、适合年龄的响应。
如实回答并逐步写出您的思考过程,以确保您得到正确的答案。
AI 更容易遵循关于它应该做什么的指令,而不是它不应该做什么的指令。例如,如果您希望 AI 避免以某种方式写作,最好告诉它您希望它如何写作。虽然*"不要决定 {{user}} 说什么或做什么"通常包含在提示中以防止 AI 控制您的身份,但一些用户发现"以尊重 {{user}} 自主性的方式编写 {{char}} 的响应"*更有效。
通常有比主要提示更好的地方来包含关于用户或角色的信息,修改角色的写作和说话风格,或给出其他特定指令。主要提示最适合用于关于整个对话的一般指令,或您想要进行的对话类型。
#
消息历史的影响
当调整主要提示以改善 AI 的响应时,请考虑 AI 从消息历史中学到了很多东西。历史是它对过去事件、角色互动和关系的记忆,以及其用词选择和写作风格的风格指南。
利用这一优势,还可以提供示例消息,展示您希望 AI 如何响应。展示您想要的东西通常比试图解释它更容易!
当您的对话已经有历史时,更改主要提示对 AI 的响应的影响有限。在事件和关系方面,AI 假设主要提示发生在遥远的过去,而消息历史更新了它。在写作风格和用词选择方面,AI 假设历史中的所有消息都是根据当前主要提示中的规则生成的,它应该继续以相同的方式生成消息。处理此问题的一些建议是:
- 在消息历史结束附近或之后插入当前指令,例如使用作者注释
- 通过开始新对话来测试您对主要提示的更改
- 编辑消息历史以删除或纠正不需要行为的示例
- 使用
历史后指令 为 AI 提供最终指令
第一次就做对!
永远不要让 AI"逃脱"您不希望它做的事情。如果您不喜欢 AI 的响应,不要继续对话,就好像它是正确的一样。相反,修改提示,重新生成消息,然后从那里继续。这将帮助 AI 了解您想要什么。
#
删除"虚构聊天"上下文
在某些情况下,"虚构聊天"可能不是您对话的正确上下文。
您可以从主要提示中删除"虚构"上下文:
在与 {{user}} 的对话中编写 {{char}} 的下一条回复。
您可能不希望 AI 认为自己在角色扮演。您可以删除 AI 的概念,而不是删除角色的概念:
您是 {{char}},一个有用的助手。您提供有用的信息并帮助 {{user}} 解决他们的问题。
#
AI 作为叙述者或说书人
如果您希望 AI 充当叙述者,从全知角度描述事件,发明自己的角色和设置,该怎么办?
一种方法是为 AI 创建一个命名角色用作叙述者。这个角色可以称为"叙述者"或"AI",暗示 AI 是一个通用的说书人,或者可以以特定的场景或设置命名,给 AI 在该设置中叙述故事的任务。设置的细节可以在角色或世界信息中定义。
您需要调整默认的主要提示以反映 AI 的角色。对于通用叙述者,您可以使用:
您是 {{char}},一个熟练且多才多艺的说书人。叙述这个故事。
或者对于特定设置:
您是幻想场景的叙述者。扮演访问 {{char}} 的角色。
澄清用户在对话中的角色很有帮助。您的消息是故事的一部分,还是您给叙述者关于您的角色做什么或说什么的指令?将用户包含在故事中的示例:
故事应该通过响应 {{user}} 的行动和对话来推进。以第三人称叙述故事。
将用户排除在故事之外的示例:
进入冒险模式。根据 {{user}} 在">"之后的对话和行动叙述故事。详细描述周围环境。要详细、有创意、冗长和主动。通过引入幻想元素和有趣的角色来推进故事。
定义用户的角色不仅帮助 AI 理解如何响应您的消息,还帮助它理解允许控制您的身份的程度。这避免了 AI 为您的身份做出您宁愿自己做出的决定的情况。
#
历史后指令
历史后指令(PHI)是在主要提示和用户消息之后发送给 AI 的附加指令。它们可用于根据消息历史为 AI 提供额外的上下文或指令。
由于历史后指令在用户消息之后发送,它们是 AI 在生成响应之前接收到的最后指令。AI 通常给它们比主要提示更高的优先级,它们可以覆盖主要提示的指令。
要使用每个角色的历史后指令,请将它们添加到角色的历史后指令中并启用优先角色指令。要在使用特定于角色的指令时保留全局定义的 PHI,您可以在角色的历史后指令字段中使用 {{original}} 宏。
历史后指令在高级格式化面板中的系统提示类别下定义。历史后指令作为不可见的用户角色注入添加,位于提示的最后一行(通常包含响应消息"标题")之前。请注意,必须启用"启用系统提示"切换才能应用历史后指令(即使系统提示本身为空)。
历史后指令是提示管理器中的默认提示之一。它通常是模型接收的上下文中的最后一条消息,归属于("发送者")系统角色。如果您的聊天补全 API 不支持系统角色,它通常会归属于用户角色。
#
添加到提示(世界信息)
您可以使用世界信息功能在提示中的任何位置插入其他信息。通过设置信息应该插入的条件,您可以指导 AI 包含特定细节,更改其响应方式,或向对话添加新元素。
世界信息的一些常见用途包括:
- 包含关于世界或设置信息的"lorebook"或"百科全书"
- 管理各种角色和情况的不同系统提示的方法
- 存储 AI 应该在对话中"回忆"的记忆的地方
- 创建、编辑和共享角色细节的更模块化的系统
- AI 对其做出反应或让您对之做出反应的随机事件和惊喜的来源