高考填报志愿智能体
视频地址:https://www.bilibili.com/video/BV1NqgCzVEqU/?vd_source=10b5d5fb63fa21ca27df0b1e394b632e
此智能体制作于2025年高考成绩出来之后,我们根据《四川省招生考试报》上面提供的高考招生计划,在两天时间内加紧时间制作完成,目的是尝试为高考学子提供一些帮助的同时检验智能体能否给出严谨准确的分析,完成后使用的结果,经过验证是较为可信的。
一、准备资料
这里的资料首先需要扫描为图片,这一步我们略过,只展示使用智能体识别图片的工作流
扫描的图片(每一张都是报纸尺寸(8张A4),扫描比较费劲,总共344页)
使用大模型识别图片内容
测试识别的精度还是比较高的,但也有问题,就是由于上传的图片的内容太多了,普通图片一般就一张A4,报纸版面是8张A4,所以有时候识别的内容会不完整,这一点希望大家在以后使用AI识别时注意。
二、编写工作流
这个工作流的设计已经算是较为复杂了,我们大家在设计工作流时需要充分考虑业务流程,然后先设计清楚整个流程后,再开始搭建工作流,可以节约很多时间,也避免搭建失败的情况,所以这个案例让大家动手自己做可能稍有难度,但是可以看看我们设计流程的思路
- 开始节点:创建了五个变量
- area:要报考的目标地区(可以多选)
- sbject:首选考试科目(物理历史二选一)
- requirements:自选其他考试科目(思想政治、地理、化学、生物学 4 门再选科目中任选 2 门参加考试)
- score:高考分数
- extra:其他偏好或要求
- 自选其他选科不能多于2个
- 创建其他选科处理节点,如果自选其他选科多余两个提示用户重新选择
- 输入数据均符合要求后整理数据库查询语句(数据由于都整理成数据表形式,所以使用sql语句查询效率更高)
下方为处理输入数据生成SQL查询语句的代码
export default async function main(args) { // 构建输出对象,出参中的key需与配置的出参保持一致 // 从入参中获取学科要求数组 let srs = args.subject_requirements; // 初始化SQL条件字符串 let sqlCondition = ""; // 当学科要求数组存在且不为空时构建SQL条件 if (srs && srs.length > 0) { // 构建单个学科的精确匹配条件,例如:subject_requirements = '物理' const subjectConditions = srs.map(item => `subject_requirements = '${item[0]}'`); // 当存在多个学科要求时,构建学科组合条件 // 例如:物理和化学、物理和化学和生物 if (srs.length >= 2) { // 将多个学科名用"和"连接,形成组合条件 const combinedSubject = srs.map(item => item[0]).join('和'); subjectConditions.push(`subject_requirements = '${combinedSubject}'`); } // 将所有条件用OR连接,并添加外层括号和AND前缀 // 最终形成类似:AND (subject_requirements = '物理' OR subject_requirements = '化学' OR subject_requirements = '物理和化学') sqlCondition = subjectConditions.join(" OR "); sqlCondition = 'AND (' + sqlCondition + ')'; }
- 根据输入的高考分数和首选考试专业在成绩分段表中选择匹配分数段位次
- 根据是否从数据表中查询到数据来进行不同的处理(录取线在150分,最高分为750分,不在这个区间都可以认为是分数填写错误,如果根据分数没有查到数据也说明填写的分数不正确)
- 分数填写错误提示用户填写正确分数
- 返回数据正常就提取排名具体的段位名次
- 下面也就是最核心的业务,就是根据用户的分数和位次来分别计算筛选出冲、稳、保的专业,并且计算出成功的概率,以保一保的专业推荐为例:
下方是sql示例,根据要求使用下面的sql语句去查询相关的专业计划
SELECT * FROM custom_table WHERE minimum_rank_group_2024 BETWEEN ${{rank}} * 1.1 AND ${{rank}} * 1.5 AND subject_category = {{subject}} ${{province_sql}} {{subject_requirements_sql}} order by minimum_rank_group_2024 ASC LIMIT 200
- 判断是否通过sql语句在专业计划数据表中匹配到了相关专业
- 没有匹配到数据说明没有查找到符合条件的数据,提示用户没有找到数据
- 没有匹配到数据说明没有查找到符合条件的数据,提示用户没有找到数据
- 把返回的匹配到的专业交给大模型进行分析整理
系统提示词
用户提示词(这里主要是暂时给用户时的样式,这里使用简洁的方式显示)# Role: - 高考保底院校智能推荐专家 ## Background: - 考生已经完成院校层次划分,现需从"保一保"院校中精选10个录取把握最大且最匹配考生需求的院校专业组合 ## Attention: - 保底院校推荐关乎考生最低录取保障,需要确保100%的稳妥性 ## Profile: - Language: 中文 - Description: 专精于高考保底院校筛选的智能系统,提供绝对稳妥的录取方案 ### Skills: - 精准识别历年录取位次稳定院校 - 计算超保险系数(录取概率≥98%) - 筛选就业稳定的基础性专业 - 规避大小年波动风险 - 提供保底方案应急评估 - 按照表格形式输出,表头只包括排名,院校名称,专业名称,录取概率,2024最低分,2024最低排名,近3年最低位次趋势,专业就业率/深造率,匹配度 ## Goals: - 确保10个推荐全部达到"保一保"标准 - 专业选择侧重基础性和实用性 - 包含不同地域的保底选择 - 提供录取概率的置信区间 - 标注院校最低录取保障年限 ## Constrains: - 仅从考生提供的"保一保"院校池筛选 - 每个推荐必须连续3年录取位次低于考生位次 - 专业选择避开热门竞争方向 - 必须包含2所偏远地区双非院校 - 标注院校招生计划稳定性 - 按照表格形式输出的数据中,`录取概率`必须是百分数 - 按照表格形式输出的数据中,`匹配度`必须是`★★★★★`形式,★★★★★表示最优,★★★★☆表示次优,以此类推 ## Workflow: 1. 验证考生提供的保底院校池合规性 2. 加载考生绝对位次数据 3. 计算各院校专业超录系数 4. 筛选基础性保障专业 5. 构建地域分布矩阵 6. 生成保底方案风险评估 ## OutputFormat: - 分级显示推荐保障度(S/A/B级) - 每项包含:院校名称、保底专业、超录系数、最低录取年限 - 标注专业基础性指数 - 提供招生计划波动预警 ## Suggestions: - 建立保底院校动态监测机制 - 增加录取概率置信区间计算 - 设置专业适配度调节参数 - 提供院校调剂政策分析 - 准备备选保底方案库 ## Initialization 作为高考保底院校智能推荐专家,你必须遵守绝对稳妥原则,使用中文与用户交流,现在请提供考生具体位次信息和院校列表以便开始保底方案制定。
## 已筛选出来的院校数据 {{outputList}} ## 用户今年高考排名 {{rank}} ## 用户今年高考分数 {{score}}
- 数据展示时首先会分别展示冲、稳、保的筛选出的专业列表,然后会将所有数据通过大模型综合分析整理后给出用户一个最终专业推荐结果
- 数据导出合并节点
节点中的字符串拼接详细内容
## 冲一冲专业院校建议 {{output1}}{{output11}} ## 稳一稳专业院校建议 {{output2}}{{output22}} ## 保一保专业院校建议 {{output3}}{{output33}}
- 分别输出的冲、稳、保
- 数据导出合并节点
- HTML导出节点的目的就生成网页展示形式,方便浏览和转发
- 最后再整理下数据样式就可以将结果输出给外层智能体大模型来统一整理输出了
到这里工作流的步骤就是先完成了,整个流程的搭建虽然看起来并不复杂,但是在搭建的过程中,实际反反复复经过了几十次的调整和修改,最终才达到了一个我们较为满意的结果
三、创建智能体
这里的提示词大部分都是系统自动生成,少量做了调整,最关键的是下方使用了绑定变量的方式
系统提示词
# Role: - 四川高考志愿助手 ## Background: - 四川地区高考志愿填报竞争激烈,考生和家长往往面临信息不对称、选择困难等问题。作为专业的高考志愿指导专家,需要帮助考生在分数范围内做出最优选择。 ## Attention: - 高考志愿填报关乎考生未来发展,必须谨慎对待每一个建议 - 四川地区高校录取分数线波动较大,需要特别关注近三年数据 - 专业选择要考虑就业前景和个人兴趣的平衡 ## Profile: - Language: 中文 - Description: 专注于四川地区高考志愿填报指导的智能助手,提供基于数据分析的专业院校推荐服务 ### Skills: - 掌握四川地区高校近三年录取分数线数据 - 了解各高校专业特色和就业情况 - 能够根据考生分数精准定位可报考院校范围 - 擅长分析考生兴趣特长与专业匹配度 - 熟悉四川高考录取政策和志愿填报规则 ## Goals: - 为考生提供个性化的院校专业推荐 - 帮助考生规避志愿填报风险 - 优化考生志愿填报策略 - 提高考生录取满意度 - 降低滑档和调剂风险 ## Constrains: - 必须基于真实可靠的录取数据进行分析 - 每次推荐必须提供数据依据 - 不能做出超出考生分数范围的承诺 - 必须考虑考生的个人偏好 - 需要详细说明推荐理由 ## Workflow: 1. 收集考生信息:分数、排名、地域偏好、专业意向 2. 分析近三年四川高校录取数据 3. 初步筛选符合考生条件的院校专业组合 4. 评估各组合的录取概率和风险 5. 结合考生偏好进行个性化推荐 6. 详细说明每个推荐的理由和依据 7. 提供备选方案和风险提示 ## OutputFormat: - 采用分步骤说明的方式呈现 - 每个推荐必须包含:院校名称、专业名称、录取概率、推荐理由 - 提供数据支持,如近三年录取分数线 - 使用表格对比不同选项 - 最后给出综合建议 ## Suggestions: - 建议考生提供更详细的兴趣特长信息 - 建议关注新兴专业的就业前景 - 建议合理设置冲稳保志愿梯度 - 建议考虑院校地域分布多样性 - 建议咨询在校学长学姐获取第一手信息 ## Initialization 作为四川高考志愿助手,你必须遵守上述约束条件,使用中文与考生交流,提供专业可靠的高考志愿填报建议。请先收集考生的基本信息:高考分数、全省排名、感兴趣的专业方向、地域偏好等。 ## 当前考生数据 地域偏好:{{area}} 专业偏好:{{major}} 科目方向:{{subject}} 院校科目要求偏向:{{requirements}} 考试分数:{{score}}
创建变量
变量的作用是精准收集工作流需要的数据,这里创建了五个变量
这里创建变量的同时还可以添加输入方式,常用的控件形式基本都有提供,可以让交互更加丰富
- area:要报考的目标地区(可以多选)
- sbject:首选考试科目(物理历史二选一)
- requirements:自选其他考试科目(思想政治、地理、化学、生物学 4 门再选科目中任选 2 门参加考试)
- score:高考分数
- extra:其他偏好或要求
设置完所有的变量后就只需要设置一个开场白预置问题,方便用户填写完数据后提交给智能体
发布智能体到系统广场(如果允许别人复制你的智能体,可以勾选允许复制,如果要发布到系统广场,需要管理员审核通过)