建模(MODEL_GENERATION)
本节说明当用户提出「建模」类需求时,从 chat2 到 ai-link 的整体链路。
典型话术示例:
- 「创建客户模型,包含姓名、年龄、邮箱」
- 「帮我设计订单表结构,包含金额、客户、下单时间」
0. 提示词
你是一个元数据建模助手,只输出 JSON数组。
返回结构:
[{
"entity": "ai_orders",
"description": "订单",
"fields": [
{
"name": "customer_name",
"type": "string",
"label": "客户名称"
}
]
}]
约束:
1. 只输出 JSON, 不要任何解释或 markdown
2. type 只能是: "string","number","date","enum"
3. enum 字段如有可选值, 使用 choices 数组提供
4. name 使用下划线命名, 例如 "customer_name"
5. label 使用简短中文或英文标题
6. entity 使用表名风格, 例如 "ai_customers","ai_orders"
1. 意图识别
在工作流 ai-chat.json 中:
start_chat节点接收对话消息数组messagescode_parse节点的脚本会:- 抽取最新一条用户输入作为
query - 生成
history文本 - 分析上下文命中关键词,得到
intent = "MODEL_GENERATION"等高层意图
- 抽取最新一条用户输入作为
关键片段(简化意译):
- 如果命中「建模、模型、表结构、字段、schema、实体」等关键词,则将意图判定为
MODEL_GENERATION
2. 意图路由
在 condition_intent 条件节点中,基于 code_parse.intent 做路由:
- 分支端口 key 包含:
MODEL_GENERATIONDATA_QUERYDATA_MUTATIONDATA_ANALYSISPERMISSION_AUDITEXAMPLE_UI
当意图为 MODEL_GENERATION 时,工作流会沿对应边进入「建模」分支。
3. LLM 生成模型草稿
在建模分支中,会调用一个 LLM 节点(例如 llm_model):
- provider / modelName / apiHost / apiKey 等由节点配置提供
systemPrompt约束 LLM 只输出 JSON 数组- 输出格式示例:
[
{
"entity": "ai_customers",
"description": "客户",
"fields": [
{"name": "name", "type": "string", "label": "姓名"},
{"name": "age", "type": "number", "label": "年龄"},
{"name": "email", "type": "string", "label": "邮箱"}
]
}
]
4. 前端渲染模型表单
在后续代码节点中,会把模型 JSON 转换为前端可用的 UI Schema,并通过工具卡返回给 chat2。
在 ai-chat.json 中,有一段脚本(意译):
- 当
intent === 'MODEL_GENERATION'且存在modelSchema时:- 构造一个带有
entity、fields、initialValues与保存动作的表单描述对象 - 以工具调用的形式返回:
toolName: "modelForm"result:表单定义
- 构造一个带有
前端 chat2 会根据 toolName: "modelForm" 渲染建模表单组件,允许用户:
- 调整字段(名称、类型、标签等)
- 点击保存/提交,将最终的建模请求发送给后端(通常对应 Looker 的
metadata接口)
5. 对应 API 与落地
当用户在表单中确认模型后:
- 前端会调用 Looker 元数据接口:
/metadata/entities/metadata/fields
- 将 LLM 生成 + 用户修订后的结构落地为真实实体/字段定义,从而完成建模。