交互
简介
MarkdownFlow 提供简洁而强大的语法来创建交互元素,用于收集用户输入。这些交互元素会暂停内容展示,等待用户响应后,再根据输入继续展示个性化内容。
对于单个 MarkdownFlow 文档,交互控件不需要变量。直接编写控件,然后在后续提示词中自然引用用户的回答即可。只有当交互答案需要跨不同 MarkdownFlow 文档共享时,才使用变量。
完整语法
交互元素的日常语法是:
或者用于选项(多选):
每个组件都是可选的,您可以灵活组合创建所需的交互形式。变量前缀 %{{变量名}} 是进阶可选组件,不是必需项。
核心组件
框架:?[ 和 ]
每个交互元素都以 ?[ 开始,以 ] 结束。这些括号是必需的,标记了交互元素的边界:
按钮(单选)
按钮用于让用户从多个选项中进行单一选择。使用单竖线(|)分隔各个选项。
基本语法
后续提示词可以直接引用用户的回答:
使用 %{{变量名}} 命名存储(进阶)
只有当答案需要跨文档共享时,才使用 %{{变量名}}。% 前缀会把交互结果写入该变量:
当用户点击“是”时,值“是”会被存储到 {{共享选择}} 中,并可被接收同一共享变量上下文的其他 MarkdownFlow 文档使用。
不带 % 时,控件内的变量会作为普通占位符读取:
如果 {{用户姓名}} 是“张三”,按钮显示:"张三, 点击这里继续"
使用 //id 的按钮 ID
您可以为按钮分配 ID,以将显示文本与稳定值分离:
- 显示:"小","中","大"
- 稳定值:"S","M","L"
这在以下情况很有用:
- 无论语言如何都需要一致的后端值
- 需要更短的处理值
- 用户友好的显示与技术值
选项(多选)
选项用于让用户选择多个项目。使用双竖线(||)分隔各个选项。
基本语法
返回值格式
与返回单个值的按钮不同,当使用命名变量时,选项返回所选值的逗号分隔字符串:
- 按钮:
{{共享颜色}} = "红色" - 选项:
{{共享技能}} = "Python, JavaScript, Go"
变量和 ID 用法
变量和 ID 的工作方式与按钮相同:
- 只有需要跨文档共享时,才用
%{{变量名}}存储选择项 //id将显示与值分离- 不带
%,使用变量值进行显示
输入框(文本录入)
输入框允许用户输入自定义文本。它们使用 ... 后跟提示。
基本语法
变量用法
变量的工作方式如上所述。只有当输入必须在当前 MarkdownFlow 文档之外共享时,才使用 %{{变量名}}:
组合元素
您可以将按钮/选项与输入字段组合,以提供预设选择和自定义输入。
带按钮的输入框
示例:
带选项的输入框
示例:
提示和最佳实践
文本适应和 ID
LLM 可能会根据上下文调整按钮/选项文本和输入提示(如翻译或重新措辞)。当需要固定值时,请使用 ID:
不带 ID - 适应的值:
- 英语:"Continue" → 存储 "Continue"
- 中文:"继续" → 存储 "继续"
带 ID - 固定值:
- 英语:"Continue//continue" → 存储 "continue"
- 中文:"继续//continue" → 存储 "continue"
最佳实践
- 使用按钮当用户只能选择一个选项时(难度、账户类型)
- 使用选项当用户可以选择多个项目时(技能、偏好)
- 使用输入框当您需要自定义文本时(姓名、反馈、数量)
- 使用 ID当您需要跨语言的一致后端值时
- 使用变量仅当答案需要跨 MarkdownFlow 文档共享时
- 组合元素以提供便利性和灵活性