交互
简介
MarkdownFlow 提供简洁而强大的语法来创建交互元素,用于收集用户输入。这些交互元素会暂停内容展示,等待用户响应后,再根据输入继续展示个性化内容。
在同一 MarkdownFlow 文档中,可以在后续提示词中自然引用用户的回答。如果需要将回答保存为记忆,供后续使用,可在控件开头添加问题。记忆的可用范围由平台决定。
完整语法
交互元素的日常语法是:
或者用于选项(多选):
方括号内的每个组件都是可选的,您可以灵活组合创建所需的交互形式。开头的记忆问题 {{问题}} 也是可选项。
核心组件
框架:?[ 和 ]
每个交互元素都以 ?[ 开始,以 ] 结束。这些括号是必需的,标记了交互元素的边界:
可选的前置 {{ 问题 }} 作为一个完整 token 读取。问题文本遵循记忆问题规则;问题内部的 ] 是普通文本,不会结束控件。
按钮(单选)
按钮用于让用户从多个选项中进行单一选择。使用单竖线(|)分隔各个选项。
基本语法
后续提示词可以直接引用用户的回答:
将回答保存为记忆
需要保存回答时,将问题写在交互开头的 {{...}} 中,位于按钮或输入提示之前:
当用户点击“是”时,可以将这个回答保存在“您希望获得详细讲解吗?”这个问题下。后续提示词可以引用同一个问题。哪些文档可以使用这条记忆,由平台决定。
使用 //id 的按钮 ID
您可以为按钮分配 ID,以将显示文本与稳定值分离:
- 显示:"小","中","大"
- 稳定值:"S","M","L"
这在以下情况很有用:
- 无论语言如何都需要一致的后端值
- 需要更短的处理值
- 用户友好的显示与技术值
选项(多选)
选项用于让用户选择多个项目。使用双竖线(||)分隔各个选项。
基本语法
返回值格式
与返回单个值的按钮不同,将回答保存为记忆时,选项返回所选值的逗号分隔字符串:
- 按钮:问题“您偏好哪种颜色?”,回答“红色”
- 选项:问题“您使用哪些编程语言?”,回答“Python, JavaScript, Go”
记忆问题和 ID 用法
记忆问题和 ID 的工作方式与按钮相同:
- 交互开头的
{{问题}}将选择的回答与该问题关联 //id分离显示文本和保存的回答
输入框(文本录入)
输入框允许用户输入自定义文本。它们使用 ... 后跟提示。
基本语法
将文本回答保存为记忆
需要保存文本回答时,将问题放在输入提示之前:
与按钮相同,记忆的保存范围和复用范围由平台决定。
组合元素
您可以将按钮/选项与输入字段组合,以提供预设选择和自定义输入。
带按钮的输入框
示例:
带选项的输入框
示例:
提示和最佳实践
作者文本、翻译和 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"
最佳实践
- 使用按钮当用户只能选择一个选项时(难度、账户类型)
- 使用选项当用户可以选择多个项目时(技能、偏好)
- 使用输入框当您需要自定义文本时(姓名、反馈、数量)
- 使用 ID当您需要跨语言的一致后端值时
- 添加记忆问题,用于保存需要在后续使用的回答
- 组合元素以提供便利性和灵活性