跳转至

交互

简介

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

在同一 MarkdownFlow 文档中,可以在后续提示词中自然引用用户的回答。如果需要将回答保存为记忆,供后续使用,可在控件开头添加问题。记忆的可用范围由平台决定。

完整语法

交互元素的日常语法是:

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

或者用于选项(多选):

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

方括号内的每个组件都是可选的,您可以灵活组合创建所需的交互形式。开头的记忆问题 {{问题}} 也是可选项。

核心组件

框架:?[ 和 ]

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

可选的前置 {{ 问题 }} 作为一个完整 token 读取。问题文本遵循记忆问题规则;问题内部的 ] 是普通文本,不会结束控件。

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

按钮(单选)

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

基本语法

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

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

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

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

将回答保存为记忆

需要保存回答时,将问题写在交互开头的 {{...}} 中,位于按钮或输入提示之前:

询问用户是否希望获得详细讲解。
?[{{您希望获得详细讲解吗?}} 是 | 否]

根据 {{您希望获得详细讲解吗?}} 决定讲解的详细程度。

当用户点击“是”时,可以将这个回答保存在“您希望获得详细讲解吗?”这个问题下。后续提示词可以引用同一个问题。哪些文档可以使用这条记忆,由平台决定。

使用 //id 的按钮 ID

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

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

这在以下情况很有用:

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

选项(多选)

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

基本语法

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

返回值格式

与返回单个值的按钮不同,将回答保存为记忆时,选项返回所选值的逗号分隔字符串:

  • 按钮:问题“您偏好哪种颜色?”,回答“红色”
  • 选项:问题“您使用哪些编程语言?”,回答“Python, JavaScript, Go”

记忆问题和 ID 用法

记忆问题和 ID 的工作方式与按钮相同:

  • 交互开头的 {{问题}} 将选择的回答与该问题关联
  • //id 分离显示文本和保存的回答

输入框(文本录入)

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

基本语法

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

将文本回答保存为记忆

需要保存文本回答时,将问题放在输入提示之前:

询问用户希望如何被称呼。
?[{{您希望我如何称呼您?}} ...请输入您的姓名]

与按钮相同,记忆的保存范围和复用范围由平台决定。

组合元素

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

带按钮的输入框

示例:

询问用户希望如何被称呼。

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

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

带选项的输入框

示例:

请用户选择已有技能或添加新技能:

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

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

提示和最佳实践

作者文本、翻译和 ID

默认使用作者编写的按钮、选项和输入提示。是否翻译取决于宿主平台:AI 师傅的原生引擎要求模型保留作者编写的控件;独立 Python SDK markdown-flow-agent-py(PyPI 包 markdown-flow 0.4.16) 则可在配置 set_output_language(...) 或 set_prompt("output_language", ...) 后翻译这些显示文本。未配置输出语言时,SDK 会跳过交互翻译。翻译时,SDK 保留回答值,必要时自动添加 //原始值。

以下示例展示作者分别编写的语言版本。如果需要保持保存的回答一致,请使用相同的 //id:

不带 ID - 保存的回答不同:

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

带 ID - 保存的回答一致:

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

最佳实践

  1. 使用按钮当用户只能选择一个选项时(难度、账户类型)
  2. 使用选项当用户可以选择多个项目时(技能、偏好)
  3. 使用输入框当您需要自定义文本时(姓名、反馈、数量)
  4. 使用 ID当您需要跨语言的一致后端值时
  5. 添加记忆问题,用于保存需要在后续使用的回答
  6. 组合元素以提供便利性和灵活性