跳转至

交互

简介

MarkdownFlow 提供简洁而强大的语法来创建交互元素,用于收集用户输入。这些交互元素会暂停内容展示,等待用户响应后,再根据输入继续展示个性化内容。

对于单个 MarkdownFlow 文档,交互控件不需要变量。直接编写控件,然后在后续提示词中自然引用用户的回答即可。只有当交互答案需要跨不同 MarkdownFlow 文档共享时,才使用变量。

完整语法

交互元素的日常语法是:

?[按钮1//id1 | 按钮2//id2 | ...输入提示]

或者用于选项(多选):

?[选项1//id1 || 选项2//id2 || ...输入提示]

每个组件都是可选的,您可以灵活组合创建所需的交互形式。变量前缀 %{{变量名}} 是进阶可选组件,不是必需项。

核心组件

框架:?[]

每个交互元素都以 ?[ 开始,以 ] 结束。这些括号是必需的,标记了交互元素的边界:

?[...内容放在这里...]

按钮(单选)

按钮用于让用户从多个选项中进行单一选择。使用单竖线(|)分隔各个选项。

基本语法

?[按钮1 | 按钮2 | 按钮3]

后续提示词可以直接引用用户的回答:

询问用户想学习哪条路径。
?[核心概念 | 示例 | 集成]

根据用户刚才选择的学习路径,推荐下一节内容。

使用 %{{变量名}} 命名存储(进阶)

只有当答案需要跨文档共享时,才使用 %{{变量名}}% 前缀会把交互结果写入该变量:

?[%{{共享选择}} 是 | 否]

当用户点击“是”时,值“是”会被存储到 {{共享选择}} 中,并可被接收同一共享变量上下文的其他 MarkdownFlow 文档使用。

不带 % 时,控件内的变量会作为普通占位符读取:

?[{{用户姓名}}, 点击这里继续]

如果 {{用户姓名}} 是“张三”,按钮显示:"张三, 点击这里继续"

使用 //id 的按钮 ID

您可以为按钮分配 ID,以将显示文本与稳定值分离:

?[小//S | 中//M | 大//L]
  • 显示:"小","中","大"
  • 稳定值:"S","M","L"

这在以下情况很有用:

  • 无论语言如何都需要一致的后端值
  • 需要更短的处理值
  • 用户友好的显示与技术值

选项(多选)

选项用于让用户选择多个项目。使用双竖线(||)分隔各个选项。

基本语法

?[选项1 || 选项2 || 选项3]

返回值格式

与返回单个值的按钮不同,当使用命名变量时,选项返回所选值的逗号分隔字符串

  • 按钮:{{共享颜色}} = "红色"
  • 选项:{{共享技能}} = "Python, JavaScript, Go"

变量和 ID 用法

变量和 ID 的工作方式与按钮相同:

  • 只有需要跨文档共享时,才用 %{{变量名}} 存储选择项
  • //id 将显示与值分离
  • 不带 %,使用变量值进行显示

输入框(文本录入)

输入框允许用户输入自定义文本。它们使用 ... 后跟提示。

基本语法

?[...在此输入文本]

变量用法

变量的工作方式如上所述。只有当输入必须在当前 MarkdownFlow 文档之外共享时,才使用 %{{变量名}}

?[%{{共享姓名}}...输入您的姓名]

组合元素

您可以将按钮/选项与输入字段组合,以提供预设选择和自定义输入。

带按钮的输入框

示例:

我们该如何称呼您?

?[先生 | 女士 | 博士 | 教授 | ...其他(请说明)]

在下一句问候中使用用户选择的称呼。

带选项的输入框

示例:

选择您的技能或添加新技能:

?[Python || JavaScript || Go || Rust || ...输入其他技能]

根据用户选择的选项和自定义输入,总结他们的技能组。

提示和最佳实践

文本适应和 ID

LLM 可能会根据上下文调整按钮/选项文本和输入提示(如翻译或重新措辞)。当需要固定值时,请使用 ID:

不带 ID - 适应的值:

  • 英语:"Continue" → 存储 "Continue"
  • 中文:"继续" → 存储 "继续"

带 ID - 固定值:

  • 英语:"Continue//continue" → 存储 "continue"
  • 中文:"继续//continue" → 存储 "continue"

最佳实践

  1. 使用按钮当用户只能选择一个选项时(难度、账户类型)
  2. 使用选项当用户可以选择多个项目时(技能、偏好)
  3. 使用输入框当您需要自定义文本时(姓名、反馈、数量)
  4. 使用 ID当您需要跨语言的一致后端值时
  5. 使用变量仅当答案需要跨 MarkdownFlow 文档共享时
  6. 组合元素以提供便利性和灵活性