感谢L站,高中生拿下广东省粤港澳学生科创大赛智能体冠军
跟着站内佬友学了很多agent编排的干货
这下真的是 学AI 上L站了
[wxcamera1780113637533]
还剪了一个两分多钟的冠军速通第一视角vlog,发在视频号了 ^-^
补充
很多佬友想要赛题,我周一回学校整理一下发出来给大家。
其实题目场景并不难,但是组委会限定用qwen3.5 2B Q4量化…
很多佬想要题目,今天整理了一下打包给到大家
其实场景并不是很难,毕竟是省教育厅面向小学到高中的比赛,需要兼顾各个年龄段
这个应该是全国范围内教育局最早推出的智能体比赛,大家都在摸索中
但是比赛现场要求全程离线,没办法vibe coding,只能自己手搓
而且限定智能体使用qwen3.5:2b q4量化作为基座,这种小模型上下文一场就会崩,逻辑能力几乎等于零,格式输出也经常炸
而且限时250min完成比赛,还有一些答辩的环节,平摊下来给到一题的时间就40~50min,在当时120多只队伍的现场确实还挺紧张的
这里是完整题包,包含测试程序,相信佬们可以轻轻松松满分复现
最终的产物需要搭建一个本地服务调用智能体,详见下文
2026 年广东省学生信息科技创新大赛-智能体设计与应用项目.zip (21.8 KB)
压缩包里有最终测试的裁判机程序,每题有十个检查点,每点10分
题目描述
赛项:2026 年广东省学生信息科技创新大赛——智能体设计与应用项目
场景:家用电器说明书阅读智能体\
数据:基于真实电磁炉说明书(型号 HI1995G 等)
场景
本次任务围绕“家用电器说明书阅读智能体”展开。裁判机下发一份家用电器的说明书(JSON 格式),智能体需要阅读说明书内容并回答用户问题。
重要要求:智能体必须调用大语言模型,赛后将对参赛队伍提交的程序进行核验;若未调用大模型(纯规则/纯程序解),将按违规处理并不得分。
API 接口格式
裁判机 POST → 智能体 ip:端口/solve
请求体:{
"task_id": "T1",
"input": {
"说明书": { ... },
"问题": "...",
"选项": { ... }
}
}
响应体:{"answer": 答案}
答案类型必须严格遵守各题要求,裁判机用 == 直接比对,不能有任何额外文字或格式错误。若该轮题目无法唯一确定答案或数据不足,返回 {"answer": "不确定"}。
计时规则:5 秒为软超时起点,超过 5 秒开始按秒扣分(超出部分按秒向上取整,每轮最多扣 10 分);超过 15 秒(5+10)则该轮 0 分。
输入数据中(10组测试数据中一部分)的 说明书 可能包含较长的说明文字:注意事项、故障排查、售后条款等字段。
任务零(T0):握手测试
任务零(T0):握手测试
答案类型:字符串
用于确认智能体服务是否可访问、能正常返回 JSON 格式。
规则:
示例
{
"task_id": "T0",
"input": {
"消息": "你好,智能体。"
}
}
期望: {“answer”: “你好,世界!”}
任务一(T1):信息提取
任务一(T1):信息提取
答案类型:字符串(含单位)
从说明书字段中提取一个指定的信息。答案必须带上单位(如 “12cm”),仅输出数字会被判错。
说明:问题会随机询问说明书中的某一个参数(例如最小锅径/额定功率/烹饪区数量/加热功率/烧烤功率/自动程序等),智能体需要理解问题并在说明书中定位对应字段,答案需按说明书原样返回(含单位或量词)。
示例一
{
"task_id": "T1",
"input": {
"说明书": {
"额定功率": "5.5kW",
"功率级别": "12级加快速加热",
"烹饪区数量": "4个",
"最小锅径": "12cm"
},
"问题": "最小锅径是多少?"
}
}
期望: {“answer”: “12cm”}
示例二
{
"task_id": "T1",
"input": {
"说明书": {
"产品名称": "XX电磁炉",
"功率级别": "12级"
},
"问题": "这款电磁炉的童锁支持吗?"
}
}
期望: {“answer”: “不确定”}
任务二(T2):条件判断
任务二(T2):条件判断
答案类型:布尔值(true / false)或 “不确定”
根据说明书内容判断一个命题的真假。答案只允许 true、false 或 “不确定” 三种。
输入中的 说明书.适用锅具 / 不适用锅具 / 功能 等字段为裁判机下发的结构化信息。
锅具判断:若锅具名称不在 适用锅具 与 不适用锅具 中(包括名称相近但并非完全一致),应返回 "不确定",不要强行归类。
功能判断:若说明书给出 功能 列表,则“是否有某功能”的问题只需判断该功能名是否在列表中:在→true,不在→false。
示例一
{
"task_id": "T2",
"input": {
"说明书": {
"适用锅具": ["特种不锈钢平底锅", "电磁级", "耐磨搪瓷平底锅", "搪瓷铸铁平底锅"],
"不适用锅具": ["陶器", "不锈钢", "瓷器", "铜制", "塑料制", "铝制"]
},
"问题": "用户有一个搪瓷铸铁平底锅,这个电磁炉能用吗?"
}
}
期望: {“answer”: true}
示例二
{
"task_id": "T2",
"input": {
"说明书": {
"适用锅具": ["特种不锈钢平底锅", "电磁级", "耐磨搪瓷平底锅", "搪瓷铸铁平底锅"],
"不适用锅具": ["陶器", "不锈钢", "瓷器", "铜制", "塑料制", "铝制"]
},
"问题": "用户有一个铝合金锅,这个电磁炉能用吗?"
}
}
期望: {“answer”: “不确定”}
注:用户输入的铝合金锅不在两表中,说明书未明确说明,不要自作主张归类
示例三
{
"task_id": "T2",
"input": {
"说明书": {
"功能": ["加热", "解冻", "烧烤"]
},
"问题": "这款电磁炉有蒸煮功能吗?"
}
}
期望: {“answer”: false}
任务三(T3):排序
任务三(T3):排序
答案类型:JSON 数组(字符串列表)
说明书中会给出一张“名称 → 数值(带单位字符串)”的表格。你需要对该表格中的所有条目按数值大小排序,并返回名称列表。
输入字段:
说明书:字典,其中 说明书[表名] 是"名称":"数值字符串"的键值对(如 “黄油”: “177°C”)
表名:要使用哪张表(如 "油品发烟点"、"功能功率")
条件:可选字段 最小值(整数)、排序(“升序”/“降序”)、最多返回(整数)
规则:
示例一
{
"task_id": "T3",
"input": {
"说明书": {
"油品发烟点": {
"黄油": "177°C",
"葵花籽油": "227°C",
"橄榄油": "242°C",
"米糠油": "255°C"
}
},
"表名": "油品发烟点",
"条件": {"排序": "升序"},
"问题": "我想知道发烟点从低到高分别是什么?请按从低到高列出油品名称。"
}
}
期望: {“answer”: [“黄油”, “葵花籽油”, “橄榄油”, “米糠油”]}
示例二
{
"task_id": "T3",
"input": {
"说明书": {
"功能功率": {
"保温": "300W",
"煮汤": "600W",
"加热": "800W",
"烧烤": "1000W",
"爆炒": "1500W",
"大火": "2000W"
}
},
"表名": "功能功率",
"条件": {"最小值": 800, "排序": "降序", "最多返回": 3},
"问题": "我只关心功率不低于800W的功能,请按功率从高到低只给我前3个名称。"
}
}
期望: {“answer”: [“大火”, “爆炒”, “烧烤”]}
任务四(T4):判断推理
任务四(T4):判断推理
答案类型:单选题字母(A/B/C/D)
综合说明书信息进行推理,从 4 个选项中选出最合理的结论。
示例一
{
"task_id": "T4",
"input": {
"说明书": {
"锅具要求": "锅底直径必须至少12cm,否则烹饪区无法工作"
},
"问题": "用户用直径8cm的小奶锅,显示屏闪烁不加热。最可能的原因?",
"选项": {
"A": "电磁炉坏了",
"B": "锅径小于12cm无法检测",
"C": "功率太高",
"D": "没插电源"
}
}
}
期望: {“answer”: “B”}
示例二
{
"task_id": "T4",
"input": {
"说明书": {
"操作步骤": ["1.放锅", "2.解除童锁", "3.按开关键"],
"不适用锅具": ["铝制", "铜制"]
},
"问题": "用户用铜制锅具,放上去了但没按童锁,直接按开关键没反应。最可能的原因?",
"选项": {
"A": "锅具类型不对(铜制不适用)",
"B": "没有解除童锁",
"C": "两个原因都可能有",
"D": "电磁炉坏了"
}
}
}
期望: {“answer”: “C”}
注:铜制锅具在不适用列表中,且没解除童锁,两个原因都会导致不加热。
任务五(T5):综合应用
任务五(T5):综合应用
答案类型:字符串(推荐产品名称)或 “不确定”
综合 3 个产品的说明书和用户问题,从问题文本中提取用户明确给出的条件进行筛选;当候选不唯一时,只有在用户明确给出“偏好顺序”时才允许继续比较并做出唯一推荐,否则返回不确定。
输出规则:
从问题文本中尽可能提取用户明确给出的硬性条件(例如预算、童锁、额定功率下限、烹饪区数量下限等),对说明书A/B/C进行筛选。
若筛选后候选恰好只有 1 个,直接输出该产品的 名称 原样。
若筛选后候选为 0 个,输出 “不推荐”。
若筛选后候选 ≥2:
仅当问题中明确给出“偏好顺序”时,才按偏好从高到低依次比较并缩小候选范围;
比较规则:自动程序/保修/烹饪区/额定功率 越大越好;价格 越低越好;
任一偏好项比较后仍无法唯一确定(并列)→ "不确定";
若问题未给出偏好顺序 → "不确定"。
问题中未给出的条件与偏好不要自行补充或推断;因此某些轮次可能会因为条件不足而无法唯一确定,返回 "不确定" 属正常情况。
问题字段约定:
条件示例:预算不超过2000元;必须有童锁;烹饪区至少3个;额定功率不低于5.5kW。
偏好顺序示例:偏好顺序:自动程序>价格>保修>烹饪区。
注意:不同轮次中,分隔符与书写形式可能变化(例如 预算≤2000元、预算在2000元以内),但语义不变。
示例一
{
"task_id": "T5",
"input": {
"说明书A": {
"名称": "A型电磁炉",
"烹饪区": "3个",
"自动程序": "6种",
"童锁": "有",
"保修": "1年",
"额定功率": "5.5kW",
"价格": "1899元"
},
"说明书B": {
"名称": "B型电磁炉",
"烹饪区": "3个",
"自动程序": "8种",
"童锁": "有",
"保修": "1年",
"额定功率": "5.5kW",
"价格": "1999元"
},
"说明书C": {
"名称": "C型电磁炉",
"烹饪区": "4个",
"自动程序": "8种",
"童锁": "无",
"保修": "2年",
"额定功率": "7.0kW",
"价格": "1599元"
},
"问题": "我预算不超过2000元,必须有童锁,额定功率不低于5.5kW。偏好顺序:自动程序>价格。"
}
}
期望: {“answer”: “B型电磁炉”}
示例二
{
"task_id": "T5",
"input": {
"说明书A": {
"名称": "A型电磁炉",
"烹饪区": "4个",
"自动程序": "6种",
"童锁": "有",
"保修": "2年",
"额定功率": "5.5kW",
"价格": "1999元"
},
"说明书B": {
"名称": "B型电磁炉",
"烹饪区": "3个",
"自动程序": "7种",
"童锁": "有",
"保修": "2年",
"额定功率": "5.5kW",
"价格": "1899元"
},
"说明书C": {
"名称": "C型电磁炉",
"烹饪区": "4个",
"自动程序": "8种",
"童锁": "无",
"保修": "3年",
"额定功率": "7.0kW",
"价格": "1699元"
},
"问题": "我预算不超过2000元,额定功率不低于5.5kW。"
}
}
期望: {“answer”: “不确定”}
示例三
{
"task_id": "T5",
"input": {
"说明书A": {
"名称": "A型电磁炉",
"烹饪区": "3个",
"自动程序": "8种",
"童锁": "有",
"保修": "2年",
"额定功率": "5.5kW",
"价格": "1999元"
},
"说明书B": {
"名称": "B型电磁炉",
"烹饪区": "3个",
"自动程序": "8种",
"童锁": "有",
"保修": "2年",
"额定功率": "5.5kW",
"价格": "1999元"
},
"说明书C": {
"名称": "C型电磁炉",
"烹饪区": "4个",
"自动程序": "6种",
"童锁": "无",
"保修": "3年",
"额定功率": "7.0kW",
"价格": "1599元"
},
"问题": "我预算不超过2200元,必须有童锁,额定功率不低于5.5kW。偏好顺序:自动程序>价格>保修。"
}
}
期望: {“answer”: “不确定”}