自动批改的难点,不只是判断答案是否包含关键词。主观题往往涉及得分点、论证完整度和部分正确答案的给分尺度。要判断批改是否可靠,应让教师与模型依据同一份量表独立评分,再比较差异。先建立评分基准为每道题记录题目、作答、满分、评分量表、教师评分与扣分依据。教师应在看不到模型结果的情况下完成首次评分;存在争议的题目由第二位教师复核,保留原始评分与仲裁理由。{…
评估 RAG,可以先沿着一条清晰的链路展开:问题分类、查询改写、混合检索、重排序、上下文组装,最后生成答案。链路越长,越需要把“证据有没有找对”和“答案有没有答对”分开测量。本文给出一套围绕检索召回与回答正确率的评估方案。所有数字均为计算示例,不是线上实测成绩。构建可复查的标准数据集每个样本至少保存问题、标准答案、支持答案的证据片段,以及问题类型。…
一个 Agent 能跑通,只能说明某条执行路径没有中断。它是否回答准确、评分合理、流程可靠,以及运行成本是否可控,需要另一套有明确样本、指标和判定规则的评估体系。本文以知识问答、试卷批改、简历评审和模拟面试四类任务为例,梳理从单个 Agent 到整个系统的评估方法。文中的数据规模和阈值均属于方案示例,不代表已完成的实验结果。先区分三类问题功能测试检…
讲清楚"模型训完之后"那段最容易在被追问时露怯的工程路,保存成什么格式、怎么用 ONNX 走到目标平台、怎么用 Flask + 客户端把它变成可被调用的服务,以及换格式 + 降精度究竟能换回多少延迟。 一、这份材料解决什么问题 绝大多数课程教到 model.eval() 就结束了,好像模型一训完就自动"上线"了。这份材料补的是中间那段空档: 环境不…
一张"DeepSeek 对话补全接口到底返回了什么"的字段字典,搞不懂这张表,就没法写出健壮的大模型调用代码,也算不清成本和缓存收益。 图注:原图是三列对照表,字段 / 示例 / 说明,逐行列出了 DeepSeek chat.completion 返回体里的 14 个字段。下面所有内容都是对这张表逐行展开。注意示例里 model 是 deepsee…
程序出了问题时,一句“执行失败”通常不够。我们还需要知道何时发生、来自哪个模块、严重程度如何,以及对应的异常。日志格式的作用,就是把这些上下文稳定地放在同一条记录里。 一个清晰的起点 import logging logging.basicConfig( level=logging.INFO, format="%(asctime)s | …
读懂参数解析之后,可以再向前一步:让参数确实控制输入、输出与校验,而不是只打印“正在处理”。下面实现一个文本行数统计工具。 先约定命令行接口 python count_lines.py notes.txt --output result.json --min-length 5 --verbose 这个命令读取 notes.txt,统计去掉首尾空白后…
下面这段代码常出现在 RAG 项目的入口:不带开关时运行查询流程,带上 --data-processing 时运行资料处理流程。 import argparse parser = argparse.ArgumentParser(description="EduRAG 程序入口") parser.add_argument(&quo…
把一个 Python 字典传给 Redis,并不等于把原生对象搬进另一块内存。应用需要先决定如何编码、选择什么 Redis 数据结构,以及读取后如何还原类型。 理解这三层关系,比记住“Redis 能存哪些 Python 类型”更有用。 Key 是字节串,Value 有数据结构 Redis 的 key 是二进制安全的字符串,可以包含任意字节。它并不要…
同一份文档被多次上传时,系统怎样判断内容是否重复?一种常见办法是先对内容计算哈希,再用摘要定位已有记录。 哈希值可以类比为数据的数字指纹,但这个比喻有边界:它不是数学上绝对唯一的身份证,也不会自动完成去重或权限控制。 从输入字节到摘要 对固定算法而言,相同字节输入会得到相同摘要。以 SHA-256 为例,输出为 256 bit,也就是 32 字节;…