基于 MaaS 结合开发者空间 Astro 低代码平台的就业问卷 AI 择业咨询方案
本案例以开发一个大学生就业问卷调查应用为例,详细展示了如何利用华为开发者空间的低代码平台进行应用设计、集成AI模型、构建界面、添加逻辑和测试功能,最终实现应用的快速开发和部署。通过实际操作,开发者可使用低代码平台的易用性和高效性,并利用其资源和工具,加速应用创新和交付过程。
一、概述
1. 案例介绍
开发者空间Astro低代码开发平台通过平台提供的界面、逻辑、对象等可视化编排工具,以“拖、拉、拽”的方式来快速构建应用,从而实现所见即所得的应用开发构建体验。
本案例开发一个大学生就业问卷调查应用,针对往届生和应届生设置问题,并根据问卷调查的结果,基于人工智能大模型DeepSeek智能输出就业择业建议。
通过实际操作,让大家深入了解如何利用Astro低代码平台开发应用。在这个过程中,大家将学习到从模型集成、界面操作、页面布置到逻辑实现以及应用打包一系列关键步骤,从而掌握Astro低代码平台的基本使用方法及于大模型的结合,体验其在应用开发中的优势。
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
2. 适用对象
- 企业
- 个人开发者
- 高校学生
3. 案例时间
本案例总时长预计90分钟。
4. 案例流程

说明:
- 领取华为开发者空间,登录华为开发者空间-低代码应用开发平台;
- 新建低代码应用,进入Astro轻应用服务控制台主页,开发应用;
5. 资源总览
本案例预计花费0元。
资源名称 | 规格 | 单价(元) | 时长(分钟) |
---|---|---|---|
MaaS 平台商用模型 | DeepSeek-R1 轻量体验包(¥7.00)/ DeepSeek-V3 轻量体验包(¥3.50) | 领券免费 | 90 |
华为开发者空间 - 低代码应用开发平台 | 系统标配 | 免费 | 90 |
体验完整案例请点这里👉️👉️👉️基于MaaS结合开发者空间Astro低代码平台完成求职咨询
二、华为开发者空间-低代码应用开发平台
1. 登录华为开发者空间-低代码应用开发平台
华为开发者空间-低代码应用开发平台是华为云推出的一款可视化应用开发平台,旨在通过"拖拽式"组件和模板化设计,降低开发门槛,提升企业数字化应用构建效率。平台主要特点包括:
- 可视化开发:通过图形化界面和预置组件,无需编写复杂代码即可快速搭建应用;
- 全场景支持:覆盖Web、移动端、大屏等多终端应用开发;
- 高效集成:内置连接器可快速对接华为云及其他主流企业系统;
- 智能辅助:提供AI辅助开发能力,如智能表单生成、流程自动化等;
- 企业级能力:具备权限管理、数据安全、高可用等企业所需特性。
Astro平台特别适合业务人员与开发者协同创新,能大幅缩短应用交付周期,典型适用于OA审批、数据看板、轻量级业务系统等场景。
登录华为开发者空间,在左侧菜单列表选择华为开发者空间 -> 开发平台 -> Astro 低代码开发,进入华为开发者空间-低代码应用开发平台。

2. 创建低代码应用
- 华为开发者空间-低代码应用开发平台页面点击新建低代码应用,在弹出的新建低代码应用对话框中,选择标准应用,点击确定按钮。


-
在右侧弹出的新建空白应用配置页签中,配置应用名称和标签均为Job。
-
点击右下角确认按钮,平台会自动打开一个新的页面:Astro轻应用服务控制台。
注:在点击确认后,在Astro轻应用管理页会同时新增一条刚才创建的名称为Astro_Test__Job的应用,点击编辑同样可以进入Astro轻应用服务控制台。
3. 添加调查表记录对象和全局结构体
-
创建调查表记录对象:进入问卷调查项目应用设计器界面,在左侧导航栏中,选择“数据”;单击对象后的“新建对象”图标,进入创建新对象页面;设置对象基本信息:填写对象名称为“智能就业建议报告”,唯一标识为“suggestion”,单击“确定”按钮。
-
创建字段
2.1 单击对象中的编辑图标,进入对象详情页:
2.2 点击“添加”,添加字段:显示名称“受访者姓名”,唯一标识:“Label”,点击字段类型,选择“文本”类型,点击“确定”:
2.3 相同的操作,添加显示名称“智能就业建议”,唯一标识“suggestion”,类型“文本区”:
2.4 批量创建。剩下的字段使用批量创建的方式,单击批量创建后的向下箭头图标,选择“下载模板”,将模板下载到本地:
2.5 编辑“import-fields-template .xlsm”模版,设置字段信息:
2.6 返回对象详情页面,在字段页签,选择“批量创建” - “批量导入字段”:- 选择已创建的字段模板,单击“确定”:
- 导入完成后,在字段列表中,可查看到导入的数据:
- 选择已创建的字段模板,单击“确定”:
-
创建全局结构体:
3.1 点击左侧菜单栏数据,选择结构体新增,输入名称和唯一标识(可自定义,这里选择message为例):
创建结构体:
创建完成后点击结构,选择结构体编辑按钮,新增role和content,保存:
添加的字段:
4. 开发调查问卷页面
-
创建调查问卷页面:在新版应用设计器的“界面”中,单击页面后的添加图标,设置页面标签为“调查问卷”、名称为“questionnaires”,单击“添加”,即可创建一个标准页面:
-
添加表单:从左侧“组件”区域,将“表单”组件拖拽到页面中间,元数据表单配置向导点击“取消”:
-
设置表单属性:如设置布局为宽“800px”和高“1024px”、居中对齐,设置字体大小为“16px”、行高为“23”等。(可自定义)
-
设置数据绑定
4.1 点击数据绑定后的“设置”图标,点击“新增模型”:
4.2 设置模型名称为“formData”,来源选择“对象”,单击“下一步”
4.3 “选择对象”下拉框选择“智能就业建议报告 (xxx__suggestion__CST)”,“选择字段”勾选全部字段,单击“下一步”:
单击“确定”:
4.4 勾选“formData”,单击“确定”:
注:在弹出框中,选择“只绑定模型” -
添加大标题。
5.1 从左侧“组件”区域,将“标题”组件拖拽到表单中间:
在配置使用组件前,可以将光标放在每个组件上,单击组件右上角的问号图标,可查看组件的详细介绍:
5.2 设置标题属性:点击标题,在右侧菜单栏点击基本属性,设置标题内容为“调查问卷应用”:
点击下方字体,如设置字体颜色为“#147AEC”、字体大小为“28px”、上下间距为“50”、位置为“center”。(可自定义)
当前配置会生成对应的css样式,可以查看高级设置(无具体操作,供查看学习使用)。 -
添加图片
6.1 从左侧“组件”区域,将“图片”组件拖拽到标题下方:
6.2 设置图片属性:单击“图片地址”后的“选择图片”图标,在选择图片界面,选中一张图片,单击“确定”,或者单击“上传图片”按钮,从本地电脑中选择一张图片上传即可:
6.3 设置图片宽度为“100%”
注:选择或上传图片,支持上传JPG、JPEG、PNG和GIF格式的图片,图片大小不超过1MB -
参考步骤5,设置小标题,设置标题内容为“为了研究大学生就业形势,探讨如何完善各项指导,特做此次调查,希望您能把真实想法告诉我们!”(可自定义),标题类型为“Hending2”;
-
添加问题1:
8.1在标准页面设计界面,从“基本组件 > 表单”中,拖拽“输入框”组件至表单工作区域:
8.2设置输入框属性:点击输入框,点击右侧菜单栏“数据绑定”中的“设置”图标,勾选“xxx__Label__CST”,单击“确定”:
8.3点击基本属性,设置标签内容输入“1,您的姓名是?”,在表单校验中,打开必填开关,设置必填错误信息为“请您输入姓名”: -
添加问题2:
9.1 在标准页面设计界面,从“基本组件 - 表单”中,拖拽“单选按钮”组件至表单工作区域。
9.2 设置单选按钮属性。设置标签为“2,您的性别是?”,选项为“男 - 男”和“女 - 女”,在表单校验中,打开必填开关,设置必填错误信息为“请您选择性别”。
9.3 点击数据绑定中的设置图标,勾选“xxx__questionCode1__CST”,单击“确定”。 -
添加问题3:仿照前面步骤,进行问题3设置:
10.1 在标准页面设计界面,从“基本组件 - 表单”中,拖拽“下拉框”组件至表单工作区域(问题2下方)。
10.2 设置下拉框属性:设置标签为“3、您的专业类型是?”,配置选项“机械类、电子信息类、计算机类、土木类、其他”,表单校验打开“必填”,设置必填错误信息为“请选择您的专业”。
10.3 单击“数据绑定”后的“设置”图标,勾选“xxx__questionCode2__CST”,单击“确定”。 -
添加问题4:仿照前面步骤,进行问题4设置:
11.1 在标准页面设计界面,从“基本组件 - 表单”中,拖拽“单选按钮”组件至页面工作区域(问题3下方)。
11.2 设置单选按钮属性。设置排列方式为“横排”,标签为“4、你进入毕业时期的去向?”,选项为“求职、考研、出国、创业、其他”,在表单校验中,打开必填开关,设置必填错误信息为“请选择毕业时期的去向”。
11.3 点击数据绑定中的设置图标,勾选“xxx__questionCode3__CST”,单击“确定”。 -
添加问题5:仿照前面步骤,进行问题5设置:
12.1 在标准页面设计界面,从“基本组件 - 表单”中,拖拽“复选按钮”组件至表单工作区域(问题4下方)。
12.2 设置复选按钮属性。设置排列方式为“横排”,标签为“5、就业时,下列哪些因素对你有影响?”,选项为“薪酬、保险福利、工作氛围环境、晋升空间、其他”,在表单校验中,打开必填开关,设置必填错误信息为“请选择就业因素影响”。
12.3 点击数据绑定中的设置图标,勾选“xxx__questionCode4__CST”,单击“确定”。 -
添加问题6:仿照前面步骤,进行问题6设置:
13.1 在标准页面设计界面,从“基本组件 > 表单”中,拖拽“评分”组件至页面工作区域(问题5下方)。
13.2 设置评分属性:设置标签为“6、您的专业对您找工作的帮助评分?”,星星总数输入“10”
13.3 点击数据绑定中的设置图标,勾选“xxx__questionCode5__CST”,单击“确定”。 -
添加问题7:仿照前面步骤,进行问题7设置:
14.1 在标准页面设计界面,从“基本组件 - 表单”中,拖拽“多行输入框”组件至表单工作区域(问题6下方)。
14.2 设置多行输入框属性:设置标签为“7、在日常实习,工作,生活中希望提升哪些方面的能力?”,打开“自适应高度”开关,设置最小行数为“2”、最大行数为“10”以及最大字符长度为“500”。
14.3 点击数据绑定中的设置图标,勾选“xxx__questionCode6__CST”,单击“确定”。
(说明:可以根据实际需求修改、增加就业相关问题,让问卷内容更加丰富、实际,也可以让最后输出的就业报告更加有针对性)
-
添加容器:在标准页面设计界面,从“基本组件 > 布局”中,拖拽“容器”组件至表单工作区域(问题7下方)。
-
添加提交按钮:在标准页面设计界面,从“基本组件 > 基本”中,拖拽“按钮”组件至容器区域:
16.1 设置按钮属性:设置显示名称为“提交”,大小选择“默认”。
16.2设置按钮事件:
首先切换到“事件”标签,单击加号,在“添加动作 > 自定义动作(名称可自定义) > 动作名称”代码区域中,输入代码,单击“保存”。
代码部分如下:
其中代码中“formData”表示表单的对象模型名称,Astro_Test__ds是绑定的MaaS大模型的实例连接器在后面会进行配置,Astro_Test__xxx_xxx的字段名前面的部分需要更改为用户自己的命名空间。
// 表单校验
var _form = context.$component.form;
var validFlag = _form.formValidateUnPromise();
if (!validFlag) return false;
// 序列化表单数据
var model = context.$model.ref("formData").getData();
var modelCopy = JSON.parse(JSON.stringify(model));
// 处理非字符串字段
Object.keys(modelCopy).forEach(item => {
if (modelCopy[item] && typeof modelCopy[item] !== "string") {
modelCopy[item] = JSON.stringify(modelCopy[item]);
}
});
// 提取问题字段值
var questionCodes = [];
for (var i = 1; i <= 6; i++) {
var fieldName = "Astro_Test__questionCode" + i + "__CST";
questionCodes.push(modelCopy[fieldName] || "");
}
// 构建提示文本
var suggestionText = `该学生性别为 ${questionCodes[0]},专业是 ${questionCodes[1]},毕业时期去向为 ${questionCodes[2]},就业时主要受到以下因素影响:${questionCodes[3]},其专业对于找工作时的自我评分为 ${questionCodes[4]} 分,日常实习工作中希望得到以下方面的提升:${questionCodes[5]}。请根据以上信息给出该学生的职业规划建议,200字以内。`.replace(/"/g, "'");
modelCopy.Astro_Test__questionCode7__CST = suggestionText;
// 初始化Flow
var _flow = context.flow("Astro_Test__ds");
// 调用AI服务获取建议
try {
// 提示信息
context.$message.info("信息分析中,正在生成建议。。。。。。");
const resp = await _flow.run({ input: suggestionText });
const reader = resp.body.getReader();
const decoder = new TextDecoder();
let buffer = '';
let msg = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value);
const lines = buffer.split('\n');
// 保留最后一行(可能不完整)
buffer = lines.pop() || '';
for (const line of lines) {
if (!line.trim()) continue;
try {
const jsonStr = line.startsWith('data: ') ? line.substring(6) : line;
if (jsonStr.trim() === '[DONE]') continue;
const obj = JSON.parse(jsonStr);
const newMsg = obj?.choices[0]?.delta?.content || '';
if (newMsg) msg += newMsg;
} catch (err) {
console.warn('解析JSON失败,保留到下一轮处理:', err.message);
buffer = line + '\n' + buffer;
}
}
}
// 最终保存结果
modelCopy.Astro_Test__suggestion__CST = msg;
context.$model.ref("formData").setData(modelCopy);
// 提交数据
const saveResult = await context.$model.ref("formData").save();
if (saveResult.resCode == 0) {
const recordId = saveResult.result[0]?.id;
if (recordId) {
context.$page.loadStdPage('Astro_Test__suggestion', "recordId=" + recordId);
// 成功消息
context.$message.success('生成成功');
}
}
} catch (error) {
console.error("AI服务调用失败:", error);
// 可以添加错误处理逻辑,如显示错误信息
}
效果如下:
16.3 大模型领取:
切换到开发者空间首页,参与活动“百万商用服务tokens免费领!”活动,按照使用说明进行服务开通:
活动页面:
16.4 开通完成后,进行大模型的接入:
模型部署页:部署页面,点击调用按钮,进入调用页面,这里我们提前保存好Api地址和模型名称,点击API调用指南:
这里尤其要注意创建apikey,用于后续调用deepseek服务。
注意!!创建好API Key之后,点击后面的复制按钮,妥善保存,若未复制保存,后续无法重新复制获取。
在这里我们可以看到通过接口调用deepseek的请求消息结构,以及各个参数的作用(截图仅展示请求参数,返回参数在操作中下拉即可阅读)。根据业务需求,此处我们仅需要messages(请求内容,后续自定义)
16.5 将外部接口集成zero并编写编排流程:
在调查问卷应用中,点击左侧集成 - 连接器实例 - 大模型 - MaaS云平台:
点击右上角加号,创建自定义连接器,输入标“标签”(这里为ds,可自定义)、“名称”(这里填入MaaS,可自定义)、“模型名称”(前步保存的模型名称)和“APIKey”(前步保存的apiKey);点击保存:
添加结果:
测试连通性,点击“测试”,在弹出框中输入测试内容后,点击测试等待返回结果,正常返回说明添加成功:
16.6 添加逻辑:点击左侧逻辑 - 编排 - 新建编排,名称填ds,模板类型默认,点击添加:
添加所需变量:
点击右侧“全局上下文”,新增变量:
创建变量 - input,类型为文本:
创建变量 - output,类型为任意:
创建对象变量 - messages,使用步骤3中创建的全局结构体,选择数组:
添加所需图元:
点击画布上的开始图元,点击参数,将刚才创建的变量分别拖进入参和出参:
选择左侧赋值图元,拖入界面,并将开始图元与赋值图元连接:
选择赋值图元,点击赋值按钮,将变量赋值,第一行为刚才的全局结构体变量名称“messages[0].role”,我们将值设置为"user"(要用英文双引号),第二行为全局结构体变量名称“messages[0].content”,变量值可直接将变量中的input拖入:
左侧选择连接器 - 自定义连接器,选择前面步骤我们创建的连接器。将其拖拽进页面,并将赋值图元与连接图元连接:
点击连接器图元,点击基本信息,选中步骤16.4中创建的大模型连接器:
选择连接器按钮,将连接器的入参message为对象变量message拖拽入,输出参数result为变量output拖拽:
点击保存,启用,运行测试:
输入参数{“input”:“介绍一下南京100字以内”},测试看是否成功,参数内容可以自定义,最好简单一些防止运行时间过久:
5. 开发规划建议页面
-
点击导航栏界面,选择+号新建页面:
-
输入标签"规划建议"和名称"suggestion",点击添加:
-
仿照调查问卷格式,进行页面设置,从左侧组件栏将表单组件拖拽至页面,元数据表单配置向导点击取消,属性设置布局:宽800px,高1024px,居中。(设置可根据自己需要自定义):
-
点击属性 - 数据绑定 - 新增模型:
按前述步骤设置模型名称为"form0",选择来源为对象:
点击下一步,选择"智能就业报告"并勾选所有字段:
点击下一步,点击确定:
选择刚创建好的模型,点击确定,选择只绑定模型: -
参考章节4中的第6小节,添加图片;
-
参考章节4中的第14小节,添加多行输入框:
标签 - 根据您提供的信息,有如下建议;
高度 - 自适应高度,其余参考下图;
数据绑定 - form0.XXX__suggestion__CST(XXX为个人设置的命名空间) -
点击页面,创建自定义脚本,写入以下代码,其中“Astro_Test_xx_xx”类的字段需更换为自身的命名空间:
// json化方法
function parseJSON(str) {
var flag = false;
try {
JSON.parse(str);
flag = true
} catch (err) {
flag = false;
}
return flag;
}
var recordId = context.$page.params.recordId;
if (!recordId) return;
try {
// 获取Object对象
var _object = context.object('Astro_Test__suggestion__CST');
// 查询满足条件数据
var _condition = {
conjunction: 'AND',
conditions: [{
field: 'id',
operator: 'eq',
value: recordId
}]
};
const res = await _object.query(_condition);
if (res.resCode !== '0' || !res.result || res.result.length === 0) return;
const data = res.result[0];
// 解析JSON字符串字段
Object.keys(data).forEach(item => {
if (data[item] && parseJSON(data[item])) {
try {
const parsed = JSON.parse(data[item]);
data[item] = parsed;
} catch (e) {
// 不是有效JSON,保持原值
}
}
});
$model.ref("form0").setData(data);
} catch (err) {
console.error("数据查询或处理失败:", err);
}

6. 页面效果测试
- 预览填报界面,进行功能调试、测试验证:点击页面左上角的预览图标,然后填写调查问卷应用必填参数;
- 单击“提交”按钮;
- 如果对象中保存了调查问卷的数据,则测试提交功能成功;
- 第二步提交完成时会跳转建议页面;
如果建议正确返回展示,说明页面联调成功。
7. 打包部署应用
因打包部署xuyao开通专业版,这里就不再演示;有兴趣可参考官方指导文档:https://support.huaweicloud.com/usermanual-astrozero/astrozero_05_9012.html
三、释放资源
1. 大模型Token消耗
在调用模型推理服务的过程中,输入内容首先会被分词(tokenize),转换为模型可识别的Token。在调用MaaS预置服务时,将根据实际使用的Tokens数量进行计费,且暂不支持关闭商用服务,开发和使用中请注意资源消耗。
更多推荐
所有评论(0)