MaxKB 使用 form_rander 动态生成表单


飞致云 发布于 2025-09-17 / 5 阅读 / 0 评论 /
适用场景 在 MaxKB 的高级编排中,可以通过「表单收集」组件以一次性或分轮追问的方式完整采集用户输入。采集到的信息会在后续工作流中作为变量传递,为精准回复提供持续支撑。 当流程涉及 MCP 调用时,表单可直接收集工具所需的入参,显著提高调用成功率。若 AI 对话节点需同时调用多个 MCP,或单个

适用场景

在 MaxKB 的高级编排中,可以通过「表单收集」组件以一次性或分轮追问的方式完整采集用户输入。采集到的信息会在后续工作流中作为变量传递,为精准回复提供持续支撑。

当流程涉及 MCP 调用时,表单可直接收集工具所需的入参,显著提高调用成功率。若 AI 对话节点需同时调用多个 MCP,或单个 MCP 内含多组工具,需要动态拼装差异化参数时,只需嵌入 <form_rander> 标签,即可根据用户问题动态渲染表单,无需手动配置。

使用示例

可在编排中添加「指定回复」「AI 对话」「表单收集」等节点,构建动态参数收集与调用链路。工作流参考:

1.指定回复:提供表单参数 JSON 示例

在工作流中添加「指定回复」节点,输入表单收集的 JSON 元数据。例如:

#数据来源于接口抓包:先在表单收集中添加常用的参数类型,然后从应用详情接口中获取 node_data 字段值
{
                            "is_result": true,
                            "form_field_list": [
                                {
                                    "attrs": {
                                        "maxlength": 200,
                                        "minlength": 1,
                                        "show-word-limit": true
                                    },
                                    "field": "name",
                                    "label": {
                                        "attrs": {
                                            "tooltip": "\u8bf7\u8f93\u5165\u59d3\u540d"
                                        },
                                        "label": "\u59d3\u540d",
                                        "input_type": "TooltipLabel",
                                        "props_info": {

                                        }
                                    },
                                    "required": false,
                                    "input_type": "TextInput",
                                    "props_info": {
                                        "rules": [
                                            {
                                                "max": 200,
                                                "min": 1,
                                                "message": "\u59d3\u540d\u957f\u5ea6\u5728 1 \u5230 200 \u4e2a\u5b57\u7b26",
                                                "trigger": "blur"
                                            }
                                        ]
                                    },
                                    "default_value": "test",
                                    "show_default_value": true
                                },
                                {
                                    "attrs": {
                                        "type": "password",
                                        "maxlength": 200,
                                        "minlength": 1,
                                        "show-password": true,
                                        "show-word-limit": true
                                    },
                                    "field": "password",
                                    "label": {
                                        "attrs": {
                                            "tooltip": "\u8bf7\u8f93\u5165\u5bc6\u7801"
                                        },
                                        "label": "\u5bc6\u7801",
                                        "input_type": "TooltipLabel",
                                        "props_info": {

                                        }
                                    },
                                    "required": false,
                                    "input_type": "PasswordInput",
                                    "props_info": {
                                        "rules": [
                                            {
                                                "max": 200,
                                                "min": 1,
                                                "message": "\u5bc6\u7801\u957f\u5ea6\u5728 1 \u5230 200 \u4e2a\u5b57\u7b26",
                                                "trigger": "blur"
                                            }
                                        ]
                                    },
                                    "default_value": "password123",
                                    "show_default_value": true
                                },
                                {
                                    "attrs": {

                                    },
                                    "field": "switch",
                                    "label": "\u5f00\u5173",
                                    "required": false,
                                    "input_type": "SwitchInput",
                                    "default_value": false,
                                    "show_default_value": true
                                },
                                {
                                    "attrs": {
                                        "type": "datetime",
                                        "format": "YYYY-MM-DD HH:mm:ss",
                                        "value-format": "YYYY-MM-DD HH:mm:ss"
                                    },
                                    "field": "date",
                                    "label": {
                                        "attrs": {
                                            "tooltip": "\u8bf7\u9009\u62e9\u65e5\u671f"
                                        },
                                        "label": "\u65e5\u671f",
                                        "input_type": "TooltipLabel",
                                        "props_info": {

                                        }
                                    },
                                    "required": false,
                                    "input_type": "DatePicker",
                                    "default_value": "",
                                    "show_default_value": true
                                },
                                {
                                    "attrs": {
                                        "limit": 3,
                                        "accept": ".jpg,.docx,.pdf,.md"
                                    },
                                    "field": "files",
                                    "label": {
                                        "attrs": {
                                            "tooltip": "\u8bf7\u4e0a\u4f20\u6587\u4ef6"
                                        },
                                        "label": "\u6587\u4ef6",
                                        "input_type": "TooltipLabel",
                                        "props_info": {

                                        }
                                    },
                                    "required": false,
                                    "input_type": "UploadInput",
                                    "default_value": [

                                    ],
                                    "max_file_size": 100,
                                    "show_default_value": true
                                },
                                {
                                    "attrs": {
                                        "autosize": {
                                            "maxRows": 3,
                                            "minRows": 3
                                        },
                                        "maxlength": 1000,
                                        "minlength": 1,
                                        "show-word-limit": true
                                    },
                                    "field": "multipleText",
                                    "label": "\u591a\u884c\u6587\u672c\u6846",
                                    "required": false,
                                    "input_type": "TextareaInput",
                                    "props_info": {
                                        "rules": [
                                            {
                                                "max": 1000,
                                                "min": 1,
                                                "message": "\u591a\u884c\u6587\u672c\u6846\u957f\u5ea6\u5728 1 \u5230 1000 \u4e2a\u5b57\u7b26",
                                                "trigger": "blur"
                                            }
                                        ]
                                    },
                                    "default_value": "",
                                    "show_default_value": true
                                }
                            ],
                            "form_content_format": "\u4f60\u597d\uff0c\u8bf7\u5148\u586b\u5199\u4e0b\u9762\u8868\u5355\u5185\u5bb9\uff1a\n{{form}}\n\u586b\u5199\u540e\u8bf7\u70b9\u51fb\u3010\u63d0\u4ea4\u3011\u6309\u94ae\u8fdb\u884c\u63d0\u4ea4\u3002"
                        }

2.AI 对话:表单数据生成

在工作流中添加「AI 对话」节点,配置系统角色和提示词。提示词可以根据实际需要自行调整。

你是一个智能体小助手,需要根据用户问题判断接下来要收集哪些参数
给定表单元数据:
{{表单参数JSON示例.answer}}
(已含文本框、多行文本、密码、开关、日期、文件六种控件,字段名可改)

任务:
仅根据问题「{{开始.question}}」一次性推断出最少且必要的用户输入参数。
用上述控件组合生成一份可直接渲染的表单 JSON,字段命名贴合任务语义。

输出要求:
纯文本,合法 JSON,无 Markdown、无注释、无多余空格。
仅返回该 JSON,任何额外文字(包括“```json”包裹)均不出现。

示例:
- 例如发送邮件需要收集邮件主题、邮件内容、收件人、抄送人(默认不要上传附件)
- 查询路线规划需要收集起点和终点
- 查询天气需要收集城市

3.表单收集:动态渲染表单

添加「表单收集」节点,使用 <form_rander> 标签动态生成表单收集参数。

你好,请先填写下面表单内容:
<form_rander>
{{表单数据生成.answer}}
</form_rander>
填写后请点击【提交】按钮进行提交。

4.AI 对话:根据参数调用 MCP

添加「AI 对话」节点,在 节点中配置提示词、MCP 及相关工具,传入已收集的参数。

已知信息:
{{动态渲染表单.form_data}}
问题:
{{开始.question}}

5.测试效果

完成上述配置后,输入相关问题即可动态生成与问题关联的表单收集参数并传递给后续节点。



是否对你有帮助?