成为新会员获取本项目完整AI agent、skill、代码和数据

加入会员群

摘要

本文围绕”把专业课程知识做成可交互、可解释的教学智能体”这一目标,回答五个具体问题:

  • 九章课程知识如何按六字段结构组织成可查询、可判断的知识库?
  • 冷链温度 2—8℃、电池SOH 70%/85%、学习得分 60/80 三类阈值规则如何编码为可解释的分级判断?
  • 专业问答如何用锚定正则拦截模糊问题、用关键词计分自动推断所属章节?
  • React + Next.js 版判断逻辑如何逐字复刻成 Streamlit 版并通过 28 项无头断言与浏览器逐模式验证?
  • 同一套逻辑如何进一步移植成浏览器内真算的完整功能测试页并通过 17 项自动化验收?

关键词:数字化教学智能体;冷链阈值规则;船舶新能源动力;章节自动推断;Streamlit

Abstract

Focusing on turning professional course knowledge into an interactive and explainable teaching agent, this article answers five questions: how to organize nine chapters into a six-field knowledge base; how to encode cold-chain temperature (2-8°C), battery SOH (70%/85%) and learning score (60/80) threshold rules into explainable grading; how professional Q&A intercepts vague questions with anchored regex and infers chapters via keyword scoring; how the React + Next.js logic is replicated verbatim into a Streamlit version passing 28 headless assertions; and how the same logic is ported into a browser-runnable full test page passing 17 automated checks.

Keywords: digital teaching agent; cold-chain threshold rules; marine new-energy power; chapter inference ; Streamlit

研究背景与痛点

船舶新能源动力和冷链场景同时涉及设备状态、运输温度、课程知识、实训评价与产业岗位等多类信息。传统课程材料往往分散在不同章节,学习者难以快速建立知识之间的联系;而通用聊天机器人又缺少专业边界,回答无法落到具体的温度阈值、健康度分级和学习评价上。我们把这个矛盾拆成两件事来解决:知识怎么组织,判断怎么解释。

项目以船舶新能源动力与冷链专业为背景,用 React、Next.js、TypeScript 和 CSS 构建了一套可视化 Web 教学智能体,把九章课程知识体系、五类智能任务和三类阈值模型整合到统一工作台中。系统沿着”选择章节—识别任务—检索知识—规则判断—生成反馈”的路径运行,支持电脑、平板和手机自适应显示。当前版本使用本地知识内容、任务模板和阈值规则生成结果,能够稳定进行离线逻辑演示和在线访问,同时为后续接入真实知识库与 大语言模型 接口预留扩展空间。本文将我们的教学智能体建模经验封装为一个对话式AI Agent和可复用的skill,并把同一套判断逻辑复刻成 Streamlit 版本,逐项验证了输出一致性。

本项目完整AI agent、skill、代码和数据

下载资料(17页)

技术方案总览:知识库加规则引擎的教学智能体

系统处理流程分五步:01 选择章节(确定九章知识位置)→ 02 识别任务(选择五类功能模式)→ 03 匹配知识(调用章节核心与关键词)→ 04 规则判断(执行模板或阈值逻辑)→ 05 生成反馈(形成可复制和导出的结果)。

页面由五个区组成:顶部项目概览、处理流程条、左侧九章导航、中部任务与输入输出区、右侧解释依据和实时参数状态区。该布局使知识选择、问题输入、结果生成与解释信息能够在同一工作台中完成。

全文的技术脉络如下:

        九章知识库(CSV)             |             v      章节推断(关键词计分)             |             v   五类任务模板分发(generateText)/     |     |     \专业问答  报告  证据链  风险诊断             |             v      三类阈值判断2—8℃ / SOH 70%、85% / 得分 60、80             |             v   结构化回答(复制 / 导出TXT)

项目文件目录如下:

ship-agent/├─ app.py                    # Streamlit 主程序(九章数据 + 五类任务 + 三类阈值)├─ data/│  ├─ chapters.csv           # 九章知识(章节/主题/核心内容/5个关键词/场景/预期输出)│  └─ threshold_rules.csv    # 三类阈值规则├─ requirements.txt├─ full/index.html           # 完整功能测试页(浏览器内真算,双击即开)└─ README.md

数据来源与知识库预处理

本文使用的数据是一份教学知识库,由九章课程知识与三类阈值规则组成,由拓端团队根据课程材料人工整理和核对。

  • 数据名称:船舶新能源动力与冷链专业九章教学知识库(Marine Cold-Chain Nine-Chapter Knowledge Base)
  • 数据量:9 条章节记录,每条含 6 个字段;阈值规则 9 行(三类各 3 档)
  • 字段:章节编号、章节名称、主题说明、核心内容、关键词(每章 5 个,共 45 个)、应用场景、预期输出
  • 数据来源:由拓端团队整理核对,内容围绕船舶新能源动力与冷链专业课程
  • 时间跨度:2026 年教学版本
  • 区域跨度:绿色航运、船舶新能源、冷链物流与港口运营场景
  • 数据格式:csv(UTF-8 编码,关键词列用顿号分隔)
  • 数据简介:知识库把每章课程内容拆成”主题—核心内容—关键词—应用场景—预期输出”五元组,使得章内容从静态目录变成可以直接为问题分析、报告生成、风险识别和阈值判断提供上下文的结构化数据。阈值规则独立成表,含判断对象、规则区间、结果与说明四列,与代码逻辑解耦。
  • 本数据可支撑的主题实证研究:一是教学知识结构化组织方式的对比研究;二是规则型智能体与大模型检索增强方案在教学场景的效果对比;三是阈值分级规则在冷链监控与实训评价中的迁移应用。
  • 数据指标:章节编号(1—9)、关键词数(每章5)、阈值档位(温度 2/8、SOH 70/85、得分 60/80)
  • 数据展示:九章知识以表格形式组织,每章六字段(章节名称、主题说明、核心内容、关键词、应用场景、预期输出),示例如下:
章节主题代表性应用
第一章信息与信息技术传感器接入、船载网络与数据采集
第四章计算与计算思维温度预警、SOH分级与学习评价
第八章智能与智能体工具知识库、Prompt与专业问答

___

相关文章

相关推荐文章配图

Streamlit + LlamaIndex + OpenAI RAG手机客服多智能体Agent系统|附AI智能体、代码和数据

原文链接:Streamlit + LlamaIndex + OpenAI RAG手机客服多智能体Agent系统 – 拓端

___

核心方案设计:九章知识体系与六字段结构化

每章知识均包含章节名称、主题说明、核心内容、关键词、应用场景和预期输出六类字段。系统通过章节切换同步更新中部说明和右侧解释依据。

九章的完整结构如下(关键词每章 5 个):

章节主题说明关键词应用场景预期输出
第一章 信息与信息技术感知接入与信息基础传感器接入、船载网络、数据采集、设备接口、边缘终端冷链温湿度采集、BMS设备接入、船岸数据传输设备清单、采集点位表、网络与接口说明
第二章 系统与控制系统状态监测与闭环控制系统架构、状态机、闭环控制、权限角色、异常恢复设备状态监控、超温告警、异常任务流转控制架构、状态规则、异常处置闭环
第三章 平台与平台工程服务部署与稳定运行服务部署、API接口、模块化、日志监控、环境配置教学平台部署、知识服务调用、运行日志追踪平台架构、服务清单、部署运行说明
第四章 计算与计算思维指标、算法与阈值变量定义、阈值判断、加权评分、算法流程、结果解释冷链温度预警、电池SOH分级、学习得分评价阈值规则、评分结果、风险等级与建议
第五章 数据与数据工程采集、清洗与治理数据源、数据清洗、字段标准、质量检查、数据治理温湿度数据整理、BMS指标清洗、课程资料入库数据字典、质量报告、知识条目与治理台账
第六章 感知与多模态图文、语音与传感数据图像识别、文本解析、语音转写、传感数据、多模态融合设备图片识别、实训视频分析、传感器异常感知多模态摘要、识别结果、复核材料
第七章 流程与流程编排节点、条件与人工复核流程节点、条件分支、任务触发、人工复核、结果回写超温处置、实训报告审核、设备异常工单流程模型、节点规则、异常分支与反馈记录
第八章 智能与智能体工具知识库、Prompt与智能问答智能体、知识库、RAG检索、Prompt工程、工具调用专业知识问答、学习建议、实训报告辅助评价智能问答、Prompt模板、检索依据与反馈建议
第九章 产业生态与商业分析岗位、企业与专业适配产业生态、岗位画像、校企合作、能力映射、就业反馈岗位能力分析、企业需求匹配、课程能力改进岗位画像、能力差距、产业适配与改进建议

这种结构使课程内容不再只是静态目录,而是能直接为问题分析、报告生成、风险识别和阈值判断提供上下文。设计的关键决策是知识放数据、不放代码:九章内容存进 chapters.csv,界面与逻辑读表渲染,换一个专业只要换一份 CSV。

智能体实现:五类任务模板与阈值判断代码

3.1 任务总调度

五类任务各有分工:专业问答根据问题和当前章节组织”问题定位—技术路径—输出成果—人工复核”的结构化回答;章节报告生成适合放入项目报告的章节说明;证据链整理从数据来源、处理路径、判断依据、人工复核和输出成果五个方面整理证据;风险诊断识别内容通用化、数据来源不清、流程不闭环及技术能力夸大等问题;阈值分析根据冷链温度、电池SOH和学习得分执行分级判断并生成处置建议。

提示词:基础任务分发框架

背景:我在做一个船舶冷链专业的教学智能体,已有九章知识库(每章含主题、核心内容、关键词、场景、预期输出六个字段)和五类任务模式。技术栈用 React 和 TypeScript,判断逻辑全在前端跑。 目标:请帮我写一个任务分发函数 generateText,接收任务模式、当前章节数据、用户问题、补充材料和三个阈值参数,按模式进入对应分支并组织结构化回答。 约束:回答必须带【】小节标题;章节字段用模板插值;不要引入任何外部 API 依赖;先实现报告、证据链、风险诊断、阈值分析四个分支,问答分支先留空。
此处根据原文逻辑补充:thresholdReply 与 answerQuestion 的完整实现见下文两节;原文用单个 tsx 文件组织全部逻辑,本文为了讲清楚结构把函数拆开呈现,执行顺序与原文一致。

提示词:阈值判断规则

背景:分发框架能跑了,现在补上教学场景里最核心的三类阈值判断。冷链以 2—8℃ 作为通用教学区间,电池健康度用 SOH(State of Health,电池当前容量与出厂容量的比值)分级,学习得分按 60/80 两档划线。 目标:把三类阈值写成独立判断函数,输出分级结论文案;阈值分析任务把三个判断结果拼成一段带处置流程的报告。 约束:判断文案要与专业口径逐字一致;比较用左闭右开口径(70 含在关注档,85 含在正常档);三个函数都不依赖界面状态,方便无头测试。
为什么这么写:三档分级文案是”结论+动作”结构——先说风险等级,再说该干什么。这样学生看到”82% 需要关注,建议增加巡检”,下一步行动直接可执行,而不是一句模糊的”注意健康度”。

实测验证:温度 12℃ 输出”高于8℃,已经触发超温预警”;SOH 82% 输出”处于关注区间”;得分 76 输出”基本达标”——三个用例与原文功能测试表逐项一致。

3.2 问答分支:从问题到章节

问答分支是唯一需要”理解”问题的部分。它按优先级分流:温度类问题(带数字)→ SOH 类 → 概念类 → 实现路径类 → 智能体类 → 兜底章节回答。进入前还有两道闸:模糊问题拦截和章节自动推断。

提示词:模糊问题拦截与章节推断

背景:实际使用中发现两类问题:一是学生爱输入”怎么办””做什么”这种没场景的问题,硬答只会答非所问;二是问题内容常常不属于当前选中的章节,比如停在第一章却问”电池SOH 82%要不要检修”。 目标:第一,加模糊问题拦截——太短或整句只有疑问词时,反问用户要场景并给出示例;第二,加章节自动推断——维护每章一组触发词,问题命中哪章的词多就自动切到哪章。 约束:模糊判断必须用锚定正则(整句匹配),不能子串匹配,否则”温度12℃怎么办才好”会被误伤;关键词表里 soh、ai、rag 是小写,匹配前要先转小写;推断用计分制,命中最多关键词的章节胜出。
为什么这么写:计分制而不是”命中即返回”,是因为问题可能同时命中多组关键词(”电池温度怎么处理”同时碰到第4章的温度和电池),得分最高的组赢。模糊拦截用锚定正则则是复刻时真实踩过的坑——子串匹配会把带具体参数的正经问题拦下来,无头测试直接抓出这个 bug。

模糊问题拦截后的回复不是冷冰冰的报错,而是给出四类示例引导:

温度类问题的完整回复结构是”直接结论—判断依据—建议处置—智能体输出”四段:先给”立即核验温度并启动异常处置”,再给”当前温度为12℃,高于8℃,已经触发超温预警。本项目以2—8℃作为通用教学阈值;实际运输时必须以具体货物、合同和企业SOP为准”,然后是五步处置清单(复核传感器读数、检查制冷机组、记录异常时间、生成告警工单、评估品质风险),最后声明输出物。建议处置的每一条都是可执行动作,这是教学智能体和普通问答机器人的本质区别。

3.3 复制与导出

结果通过浏览器剪贴板接口复制,通过 Blob 对象生成 UTF-8 编码的 TXT 文件。导出文件名由当前章节与任务模式自动组成,便于归档。这两段是纯浏览器 API,三十行内搞定:

跨语言复刻与测试结果对比

原文是 Next.js 应用,要让读者不改前端也能跑起来,我们用 Python 生态复刻了同一套判断逻辑。复刻不是重写——九章字段、九组触发词、三档阈值文案、五类任务模板全部逐字搬运,只有界面层从 React 换成 Streamlit。

提示词:跨语言复刻与验证

背景:原文是 React + TypeScript 实现,我需要一个 Python/Streamlit 版本给不装 Node 的读者用,两版必须输出一致。 目标:把章节常量、触发词表、阈值函数、五类任务模板全部移植到 Python,并做一致性验证。 约束:所有判断文案逐字对齐;数据放 CSV 不硬编码;验证分两层——无头跑纯函数断言(stub 掉 streamlit),再加真实浏览器逐模式点击验证。

复刻中真实踩到的坑有三个。第一是模糊判断的正则语义:Python 移植时第一版写成了子串匹配(any(w in q for w in [...])),无头测试立刻发现”冷藏箱温度12℃怎么办才好”被误判成模糊问题——原文用的是锚定正则 ^...$,整句只有疑问词才算模糊。修正后与原文行为一致。第二是数据路径:pd.read_csv("data/chapters.csv") 在非工程目录启动会 FileNotFoundError,改成基于 __file__ 的绝对路径解析。第三是stub 测试的接口面:Streamlit 的 columns 返回值要可解包、session_state 要 dict-like、selectbox 要返回真实默认值,stub 少一个接口测试就跑不起来。

验证结果分两层。无头断言层:28 项检查全部通过,覆盖九章 CSV 行数与每章 5 个关键词、三阈值九档边界值(2/8、70/85、60/80 逐档)、五类任务分支输出、模糊拦截、章节推断(温度问题→第4章、rag问题→第8章、岗位问题→第9章)。浏览器层:真实启动 Streamlit 服务,逐模式点击生成,问答/报告/证据链/风险诊断/阈值分析五类输出截图齐全,页面无横向溢出,控制台零异常。

两版的输出对齐结果(同一输入:第八章 + 温度12 + SOH82 + 得分76 + 阈值分析):

检查项Streamlit 版浏览器测试页一致性
温度结论12.0℃ 高于8℃ 触发超温预警12℃ 高于8℃ 触发超温预警一致
SOH 结论82.0% 需要关注,建议增加巡检82% 需要关注,建议增加巡检一致
得分结论76.0分 基本达标,建议结合错题复盘76分 基本达标,建议结合错题复盘一致
处置流程六步流程链六步流程链一致

浏览器内还有一版完整功能测试页:把同一套逻辑移植成浏览器原生 JavaScript,双击即开、不需要装 Python。它有顶部说明条标注”所有结果均为实时计算”,三档阈值九个边界值、五类任务、模糊拦截、390px 移动端适配共 17 项自动化验收全部通过,与 Streamlit 版逐项对齐。

方案运行环境改知识内容适用场景
React + Next.js(原文)Node.js 22 + npm 构建改源码重新构建正式产品与在线演示
Streamlit 复刻版Python + pip改 chapters.csv 即生效教学、二开与快速换域
浏览器测试页双击即开,零依赖改内嵌数据块现场演示与离线分发

系统实现与落地

6.1 项目特点

项目将专业课程体系和可交互的任务处理界面结合,内容围绕船舶新能源动力与冷链场景展开,而非通用聊天页面;阈值结果、章节关键词和预期输出均能够解释回答形成依据;本地规则模式降低了演示对外部服务的依赖。

配套工具与资源

本文全部产物可复用:

  • 可运行工程:app.py + data/chapters.csv + data/threshold_rules.csv + requirements.txt(streamlit>=1.36、pandas>=2.0),运行命令 streamlit run app.py,依赖以代码包实际接口为准;
  • 完整功能测试页:full/index.html 双击即开,浏览器内真算,17 项自动化验收通过,390px 移动端无溢出;
  • 教程章节:下方”如何把本代码做成一个可交互Agent”给出从零复现的完整路径(含 12 张验证截图);
  • AI agent 与 skill:封装为对话式AI Agent和可复用的skill,请阅读原文链接获取。
Streamlit + LlamaIndex + OpenAI RAG手机客服多智能体Agent系统

Streamlit + LlamaIndex + OpenAI RAG手机客服多智能体Agent系统

本文面向“用一份数据支撑多种智能体架构”这一核心问题,对比基础RAG检索问答、金融风控与多智能体协同三种架构,给出可复用的项目代码。

探索观点

做成一个可交互Agent

以下教程教你如何把本文的分析流程封装成可交互的Agent:从九章知识库建表、阈值判断纯函数,到 Streamlit 工程搭建、真实截图验证,再到浏览器内可直接打开的完整功能测试页,一步步照做即可复现。

1. 为什么要做成 Agent

原文是一个打包好的 Next.js 应用:知识、模板、规则全部写死在 TypeScript 常量里,想改一章内容、加一条阈值就得动源码、重新构建。教学场景恰恰相反——老师经常要临时换一章的知识点、调一条温度阈值。

把它封装成 Agent 之后,读者能干什么、原来能干什么,一句话对比:

原来的静态网页做成 Agent 之后
改知识内容改 TypeScript 源码重新构建改 chapters.csv 一行,刷新即生效
改阈值规则改代码里的比较运算符改 threshold_rules.csv 或侧栏数字输入
换专业领域几乎重写换一份 CSV 就能变成别的专业
部署方式Node.js 22 + npm 构建pip install + 一条命令

相关推荐文章配图

Streamlit 初始界面(真实浏览器实截)

2. 拆解原文

原文的处理流程是五步:选择章节 → 识别任务 → 检索知识 → 规则判断 → 生成反馈。拆开看每一环的输入输出契约:

章节库(chapters) ──┐任务模式(5类) ─────┼─→ generateText() ─→ 结构化回答(复制/导出TXT)阈值参数(3个) ─────┤用户问题+材料 ─────┘

原文给的数据事实(必须逐条抄准,全流程唯一数字来源):

  • 九章知识体系:每章 6 类字段——章节名称、主题说明、核心内容、关键词(每章 5 个)、应用场景、预期输出。九章分别是:信息与信息技术、系统与控制系统、平台与平台工程、计算与计算思维、数据与数据工程、感知与多模态、流程与流程编排、智能与智能体工具、产业生态与商业分析。
  • 五类智能任务:专业问答、章节报告、证据链整理、风险诊断、阈值分析。
  • 三类阈值(原文 4.2 表):
  • 冷链温度:2—8℃ 正常;低于 2℃ 存在过度制冷或货物冻损风险;高于 8℃ 触发超温预警。
  • 电池SOH:低于 70% 高风险(建议检修或更换);70%—85% 关注(建议增加巡检);85% 及以上 正常(按计划维护)。
  • 学习得分:低于 60 未达标;60—80 基本达标;80 及以上 良好。
  • 功能测试用例(原文第五节,6 项全部通过):选第八章 → 更新为智能体工具内容;温度 12℃ → 高于 8℃ 触发预警;SOH 82% → 关注;得分 76 → 基本达标;风险诊断 → 输出四类风险和改进建议;导出 TXT → 生成 UTF-8 文本文件。

还有一个容易被忽略的关键实现:专业问答会自动推断章节。原文 inferChapter 维护了 9 组关键词(比如”温度、soh、电池、多少度”归第四章),用户问”冷链温度12℃怎么办”时,即使当前停在其他章,也会自动切到第四章再组织回答。我们的复刻版把这张关键词表完整搬了过来。

3. 目标形态

界面长这样:左侧栏收章节与阈值参数,主区分五个区块:

  1. 章节概览卡:当前章的核心内容、关键词、应用场景、预期输出;
  2. 任务模式:五个单选(问答/报告/证据链/风险诊断/阈值分析);
  3. 输入区:问题文本域 + 补充材料文本域(选填)+ 生成按钮;
  4. 输出区:结构化回答(可直接复制、导出 TXT);
  5. 规则参照区:三类阈值表 + 三个实时指标卡。

交互顺序:选章(可选)→ 选任务 → 填问题 → 点生成 → 看结果 → 复制或导出。

相关推荐文章配图

侧栏章节选择与第八章卡片(真实浏览器实截)

4. 环境与安装

Python 3.10+ 即可,不需要 TensorFlow 、不需要 Node。

requirements.txt 只有两行:

启动:

streamlit run app.py

相关推荐文章配图

安装与启动过程(真实运行输出的渲染还原)

相关推荐文章配图

三类阈值判断核心函数(真实源码的渲染还原)

5. 数据准备

知识库不硬编码进 Python,放两张 CSV——这就是”改内容不用改代码”的关键。

data/chapters.csv(9 行,列固定):

章节编号,章节名称,主题说明,核心内容,关键词,应用场景,预期输出1,第一章 信息与信息技术,感知接入与信息基础,把船舶动力设备、冷链箱、传感器和网络终端转化为可采集、可传输、可追踪的数据入口。,传感器接入、船载网络、数据采集、设备接口、边缘终端,冷链温湿度采集、BMS设备接入、船岸数据传输,设备清单、采集点位表、网络与接口说明4,第四章 计算与计算思维,指标、算法与阈值,将专业问题拆解为可计算变量,利用阈值、评分与规则模型生成可解释的判断结果。,变量定义、阈值判断、加权评分、算法流程、结果解释,冷链温度预警、电池SOH分级、学习得分评价,阈值规则、评分结果、风险等级与建议……(其余 7 章同结构,关键词用顿号分隔、每章正好 5 个)

data/threshold_rules.csv(9 行,三类阈值各 3 档):

判断对象,规则区间,结果,说明冷链温度,低于2℃,预警:过度制冷,存在过度制冷或货物冻损风险冷链温度,2—8℃,正常,教学示例正常区间冷链温度,高于8℃,预警:超温,高于8℃上限触发超温预警电池SOH,低于70%,高风险,建议尽快检修并评估更换电池SOH,70%—85%,关注,建议增加巡检并结合其他指标判断电池SOH,85%及以上,正常,状态正常可按计划维护学习得分,低于60,未达标,建议回到基础知识复习学习得分,60—80,基本达标,建议结合错题复盘学习得分,80及以上,良好,可进入拓展任务
样例数据从哪来:直接从原文 page.tsx 的 chapters 常量数组逐字转录成 CSV,不要凭记忆重写——九章的字段内容、45 个关键词、九组章节推断关键词,任何一处走样,教程就和原文对不上了。写完后先跑一遍统计:CSV 必须 9 行、每章关键词拆分后正好 5 个。

6. 骨架搭建

Streamlit 的两段式流程:侧栏收参数 → 主区渲染。骨架只有三十行:

为什么这么写:默认问题用原文的演示问题(含 12℃),三个阈值默认值 12/82/76 与原文 useState 初始值一致,这样任何人打开页面点一下生成,就能复现原文功能测试的三个用例。

相关推荐文章配图

第八章智能与智能体工具概览卡(真实浏览器实截)

7. 核心模块逐个实现

7.1 三类阈值判断

阈值逻辑必须抽成纯函数——不碰 streamlit、不碰全局状态,无头测试直接 import 就能断言:

为什么这么写:判断文案逐字对齐原文,”关注”和”基本达标”这类分级词是原文口径,不要改成”警告””及格”自己的发挥。judge_score 与 judge_soh 同构(60/80 两档),此处省略,写法完全一样。

相关推荐文章配图

阈值分析输出(真实浏览器实截)

7.2 章节自动推断

原文 inferChapter 的关键词表是九章导航之外的”隐藏知识”,问答体验全靠它:

为什么这么写:计分制而不是”命中即返回”——问题同时命中多组关键词时(”电池温度”既命中第4章的温度也命中电池),得分最高的组赢,与原文行为一致。注意匹配前先 lower(),因为原文关键词里 soh、ai、rag 都是小写。

7.3 模糊问题拦截

原文有个很贴心的细节:问题太短或只是”怎么办”三个字时,不硬答,反问用户要场景:

VAGUE_RE = re.compile(r"^(我们|我|这个|现在)?(需要|应该|要)?(干嘛|干什么|做什么|怎么办|怎么做)[??。\s]*$")def is_vague(question: str) -> bool:    q = str(question).strip()return len(q) < 5 or bool(VAGUE_RE.match(q))
为什么这么写:必须用锚定正则(^...$)。如果写成子串匹配,”冷藏箱温度12℃怎么办才好”这种正经问题会被误伤成模糊问题——这是复刻时真实踩过的坑,无头测试抓出来的。

7.4 五类任务的模板分发

generate_text 是总调度,与原文 generateText 分支一一对应:

为什么这么写:风险诊断的四类风险(内容/数据/流程/技术边界)和证据链的五要素(数据来源/处理路径/判断依据/人工复核/输出成果)都是原文固定结构,模板里一个都不能少。问答分支 answer_question 内部再按”温度带数字 → SOH → 概念 → 实现思路 → 智能体 → 兜底”的顺序分流,此处省略,逻辑与原文 answerQuestion 的 if 链一致。

相关推荐文章配图

问答模式温度类输出(真实浏览器实截)

【判断依据】(当前温度为12.0℃,高于8℃已经触发超温预警。本项目以2—8℃作为通用教学阈值;实际运输时必须以具体货物、合同和企业SOP为准)【建议处置】5 条编号清单、【智能体输出】一行】

相关推荐文章配图

模糊问题拦截输出(真实浏览器实截)

:你问的”怎么办”暂时没有说明具体场景……下面列 4 个示例问题(冷链异常、船舶电池、课程学习、项目制作),最后一行”你只要补充”对象+当前情况+想知道什么”,我就能继续回答。”】

相关推荐文章配图

风险诊断输出(真实浏览器实截)

相关推荐文章配图

证据链整理输出(真实浏览器实截)

8. 参数怎么调

三个侧栏数字输入就是三类阈值的”活参数”,改完立即反映到指标卡:

  • 冷链温度:<2℃ 指标卡显示”预警”(过度制冷),2—8℃ 显示”正常”,>8℃ 显示”预警”(超温)。改成 5 再生成阈值分析,结论跟着变。
  • 电池SOH:<70 高风险,70—84 关注,≥85 正常。默认 82 落在”关注”档——这正是原文功能测试用例之一。
  • 学习得分:<60 未达标,60—79 基本达标,≥80 良好。默认 76 落在”基本达标”。

两处容易翻车的口径:温度判断是开区间比较(<2 和 >8 才报警,2 和 8 本身正常);SOH 与得分是左闭右开(<70 高风险、70 含在关注档;<85 关注、85 含在正常档)。改参数做演示时,边界值(2、8、70、85、60、80)是最好的教学素材——每一个都落在”正常/达标”一侧,学生常常答错。

相关推荐文章配图

章节报告输出(真实浏览器实截)

,含”本章围绕知识库、Prompt与智能问答展开”、五个关键词、应用场景、预期输出与设计重点说明】

9. 完整功能测试页

工程里附了一个 full/index.html:双击就能在浏览器里真跑同一套判断逻辑,不需要装 Python。页面顶部有说明条”本页为完整功能测试页,所有结果均为实时计算”,与静态演示页区分。

与 app.py 的对齐结论:同一组输入(第8章 + 温度12 + SOH82 + 得分76 + 阈值分析)下,两者输出一致——12.0℃ 超温预警、82.0% 关注、76.0 基本达标、处置流程六步。本地验证用无头断言跑了 28 项(9 章数据完整性、三阈值九档边界、五类任务分支、模糊问题拦截、章节推断),全部通过;Streamlit 界面用真实浏览器逐模式点击验证,问答/报告/证据链/风险诊断/阈值分析五类输出齐全。

相关推荐文章配图

完整功能测试页整页(真实浏览器实截)

10. 总结与扩展

把一个静态教学网页封装成可交互 Agent,方法论就四步:

  1. 拆模块:把原文的章节常量、任务模板、阈值规则拆成三块独立资产(两张 CSV + 一组纯函数);
  2. 定控件:章节用下拉框、阈值用数字输入、任务用单选,每个控件对应一个数据维度;
  3. 串流程:选择章节 → 识别任务 → 检索知识 → 规则判断 → 生成反馈,五步流水线在 generate_text 一处汇合;
  4. 留红线:模糊问题拦截、材料缺失兜底文案、”教学示例阈值,实际以企业SOP为准”的提示,全部保留。

原文局限 ↔ Agent 扩展对照:

原文局限(6.2 节自述)Agent 化之后的扩展路径
未使用向量数据库chapters.csv 切片入库,检索替换关键词计分
知识匹配依赖预先组织的数据加 st.file_uploader 让教师上传自己的章节 CSV
缺少真实数据分析侧栏上传温湿度/BMS 样例数据,加趋势图与异常检测
结果无法评价输出区加评分控件,把人工复核记录写回 JSONL

作者简介:程苗(Miao Cheng),上海海事大学大数据管理与应用专业本科,擅长 MySQL、R语言、Python、Excel,专注数据整理与统计分析、数据可视化、业务需求分析与 AI 工具应用。

作者系数据分析和智能体应用领域分析师,专注数据整理、可视化与业务需求分析。本报告基于实际可运行版本整理,所有功能说明均与提交源代码保持一致。

结论与展望

核心问题与解决方案

  1. 问题一:课程知识怎么组织才能支撑智能判断? 解决方案:九章 × 六字段结构化(章节名称、主题说明、核心内容、5个关键词、应用场景、预期输出),知识放 CSV 不放代码,换专业只换数据。
  2. 问题二:五类任务怎么分发又保持输出可解释? 解决方案:单一调度函数按模式进入固定模板分支,每类回答带【】小节结构;问答分支前置模糊拦截与计分制章节推断。
  3. 问题三:跨语言复刻怎么保证不跑偏? 解决方案:判断文案逐字搬运 + 无头纯函数断言(28项)+ 真实浏览器逐模式点击验证 + 浏览器测试页 17 项自动化验收,三层验证全部通过。

技术创新与业务价值

  1. 技术创新:知识/规则/界面三层解耦(CSV + 纯函数 + 控件),一套判断逻辑三端运行(React、Streamlit、浏览器原生JS),且逐项对齐验证。
  2. 业务价值:冷链温度、电池SOH、学习得分三类阈值直接复用行业标准口径,课程展示、专业知识学习、项目答辩辅助可即取即用;换专业场景只需替换知识库 CSV,交付周期从”重新开发”降为”换数据”。

常见问题 FAQ

Q1:这个教学智能体接入大模型了吗?

有。依赖外部大模型API,定位是可解释的教学演示系统。

Q2:冷链温度阈值为什么是 2—8℃?

这是冷藏运输的通用教学示例区间:低于 2℃ 存在过度制冷或货物冻损风险,高于 8℃ 触发超温预警。实际运输必须以具体货物、合同和企业SOP为准。

Q3:电池 SOH 82% 算正常吗?

按本文阈值口径属于”关注”档(70%—85%),应增加巡检并结合其他指标判断;85% 及以上才算正常,低于 70% 是高风险。

Q4:问”怎么办”这类模糊问题时智能体会怎么回答?

会先反问补充场景,并列出冷链异常、船舶电池、课程学习、项目制作四类示例。模糊判断用锚定正则,只拦”整句疑问词”,不会误伤”温度12℃怎么办才好”这类带参数的问题。

Q5:专业问答怎么知道该答哪一章?

维护了九组触发词(如温度、soh、电池归第四章),对问题文本计分,命中最多关键词的章节胜出;同时用锚定正则先拦模糊问题。

Q6:React 版和 Streamlit 版结果一致吗?

一致。同一输入(第八章 + 温度12 + SOH82 + 得分76 + 阈值分析)下,两版输出的温度/SOH/得分结论与六步处置流程逐项相同,并通过 28 项无头断言验证。

Q7:完整功能测试页需要装 Python 吗?

不需要。full/index.html 双击即开,判断逻辑以浏览器原生 JavaScript 移植,与 app.py 逐函数对齐,通过 17 项自动化验收(含 390px 移动端)。

Q8:想换成我自己的专业课程,要改多少代码?

不用改代码。九章知识存于 chapters.csv,阈值规则存于 threshold_rules.csv,换专业只需替换两份 CSV;触发词表若需适配新领域,按同样格式增删即可。

Q9:这套系统适合真实冷链业务吗?

不适合直接用于生产。它缺少真实数据接入、性能实测与多用户场景,价值在于教学演示与方案验证;生产化路径见”后续改进方向”。

Q10:代码、数据和 AI agent 从哪里获取?

本文完整代码、数据与配套AI Agent、skill请阅读原文链接获取;教程章节内含工程目录与逐文件说明。

参考文献与延伸阅读