欢迎光临
我们一直在努力

基于 Prompt 工程 + ChatGLM-6B 的校园智能问答系统

核心基础信息

  • 适配专业:计算机 / 软件工程 / 人工智能 / 数据科学
  • 核心技术:Prompt 工程(Few-shot / 指令模板)、ChatGLM-6B(INT4 量化版)、中文文本预处理、轻量知识库构建
  • 硬件要求:普通游戏本(16G 内存 + GTX1660 及以上)即可运行,无需高端 GPU
  • 毕设亮点:场景贴合校园(教务 / 图书馆 / 生活 / 社团)、有可视化交互系统、可落地演示、创新点易设计

一、详细技术路线图(按毕设流程分 8 步,可直接写进开题报告)

步骤 1:需求分析与系统定位
  • 功能需求:校园常见问题智能答疑、问题联想推荐、答案精准匹配、历史对话记录
  • 非功能需求:响应速度<3s、问答准确率≥85%、界面简洁易操作、支持文本输入 / 关键词检索
  • 适用场景:在校学生查询教务通知、图书馆借阅、校园卡充值、社团报名、宿舍管理等问题
步骤 2:数据准备(公开数据集 + 自建校园数据集,易采集、易标注)
  • 数据类型:校园领域问答对(Q&A)、通用日常问答对(补充)
  • 标注要求:按场景分类(教务类 / 图书馆类 / 生活类 / 社团类 / 其他类),无需复杂标注
  • 数据量:总数据 1000-1500 条即可(毕设足够,无需海量数据)
  • 采集与清洗:去重、去无意义问题、统一答案表述格式、标注错误修正
步骤 3:核心技术选型与环境搭建
  • 开发语言:Python 3.9/3.10(兼容性最好)
  • 核心框架 / 库:Hugging Face Transformers、PyTorch、LangChain(轻量知识库)、Jieba(中文分词)、Streamlit/PyQt(前端界面)
  • 模型:ChatGLM-6B INT4 量化版(显存占用<10G,普通电脑可运行)
  • 运行环境:Anaconda(虚拟环境)、Windows/Linux(推荐 Linux,稳定性更高)
步骤 4:校园轻量知识库构建
  • 知识库结构:分类式结构化存储(以 JSON/Excel 为载体,字段:问题 ID、问题文本、标准答案、场景分类、关键词)
  • 知识库优化:添加问题同义词 / 相似表述(如 “图书馆几点关门”/“图书馆闭馆时间”),提升匹配效率
  • 检索方式:关键词匹配 + 语义相似度匹配(轻量版,无需复杂向量数据库)
步骤 5:Prompt 工程设计与调试(系统核心,毕设创新点核心载体)
  • 基础 Prompt 框架设计:指令 + 场景限定 + 示例 + 用户问题(Few-shot 范式,适配小样本校园数据)
  • 分场景 Prompt 模板定制:为教务 / 图书馆等 5 大场景分别设计专属 Prompt,提升领域适配性
  • Prompt 调优:调整示例数量(1-3 个最佳)、指令描述方式、关键词权重,提升问答准确率
步骤 6:系统架构设计与功能模块实现
  • 整体架构:前端交互层→文本预处理层→知识库检索层→Prompt 生成层→ChatGLM-6B 推理层→结果返回层
  • 核心功能模块实现:
  • 文本预处理模块:去空格 / 特殊符号、分词、关键词提取
  • 知识库检索模块:根据用户问题匹配相似问题,调取标准答案
  • Prompt 生成模块:根据场景和检索结果,自动生成适配的 Prompt
  • 模型推理模块:将 Prompt 输入 ChatGLM-6B,得到推理结果
  • 前端交互模块:实现问题输入、答案展示、历史对话、场景选择
步骤 7:模型与系统调优 + 性能评估
  • 调优方向:Prompt 模板优化、知识库相似问题补充、模型推理参数调整(温度系数 / 最大生成长度)
  • 评估指标:准确率(核心)、响应速度、鲁棒性(测试无意义问题 / 模糊问题的处理能力)
  • 测试集划分:将自建数据集按 7:2:1 划分为训练集(Prompt 调试)、验证集(调优)、测试集(最终评估)
  • 评估结果:生成量化评估报告(如整体准确率 88%,图书馆类问题准确率 92%)+ 典型案例分析
步骤 8:系统部署与演示 + 论文撰写
  • 轻量部署:本地部署(毕设演示足够),生成可执行文件,实现 “双击运行”
  • 演示准备:设计典型测试用例(覆盖 5 大场景),展示系统功能和问答效果
  • 论文撰写:按 “绪论→需求分析→技术基础→系统设计→实现→测试→总结与展望” 结构,重点突出 Prompt 工程设计和校园知识库构建

二、数据集推荐(公开 + 自建,毕设专属,易采集、易标注)

1. 公开通用问答数据集(补充数据,无需标注,直接用)
数据集名称数据量适用场景获取方式
中文通用问答数据集 QASys 5000 + 条 日常通用问题 Kaggle、百度飞桨数据集库
高校校园通用问答数据集 800 + 条 校园基础问题 Hugging Face、知网数据集平台
2. 自建校园专属数据集(核心数据,1000-1500 条,毕设重点)
(1)采集渠道(零成本,学生易操作)
  • 学校官网 / 教务网 / 图书馆官网:提取常见问题解答(FAQ)板块
  • 学校官方公众号 / 微信群 / QQ 群:整理学生高频提问
  • 问卷调查:向校内同学收集校园相关问题(50-100 人即可,覆盖各年级)
  • 人工整理:补充校园特色问题(如本校社团报名、校园卡充值方式等)
  • (2)数据分类与数量分配(合理分配,贴合校园实际)
    场景分类数据量(条)典型问题示例
    教务类 300-350 补考时间怎么查?、选修课怎么选?、绩点怎么计算?
    图书馆类 250-300 图书能借多久?、逾期罚款多少?、电子资源怎么用?
    校园生活类 300-350 校园卡怎么充值?、宿舍断电时间?、食堂开放时间?
    社团 / 活动类 100-150 社团怎么报名?、校园十佳歌手赛怎么参加?
    其他类 50-100 学校快递站在哪?、校园网怎么办理?

    三、模型训练 / 调试详细步骤(实操性强,可直接跟着做,无复杂操作)

    阶段 1:环境搭建(Anaconda 虚拟环境,一步一步来)
  • 安装 Anaconda,创建虚拟环境:conda create -n glm_qna python=3.9
  • 激活虚拟环境:conda activate glm_qna
  • 安装核心库(指定版本,避免兼容性问题):
    • pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2
    • pip install transformers==4.30.2 langchain==0.0.194 jieba streamlit
    • pip install sentence-transformers==2.2.2(语义相似度匹配)
  • 阶段 2:ChatGLM-6B 模型加载(直接调用,无需从头训练)
  • 从 Hugging Face / 清华云盘下载 ChatGLM-6B INT4 量化版模型文件
  • 用 Transformers 加载模型,核心代码片段(可直接复用):
  • python

    运行

    from transformers import AutoTokenizer, AutoModel
    # 加载分词器和模型
    tokenizer = AutoTokenizer.from_pretrained("模型文件路径", trust_remote_code=True)
    model = AutoModel.from_pretrained("模型文件路径", trust_remote_code=True).half().cuda()
    # 模型推理函数
    def glm_infer(prompt):
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
    outputs = model.generate(**inputs, max_length=512, temperature=0.7, do_sample=False)
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return response

  • 测试模型加载:输入简单 Prompt,验证是否能正常生成结果
  • 阶段 3:校园知识库构建(JSON 格式,示例可直接复用)
  • 新建campus_knowledge.json文件,按以下格式编写(可批量整理):
  • json

    {
    "data": [
    {
    "id": 1,
    "question": "图书馆几点开门?",
    "answer": "学校图书馆开馆时间为周一至周五8:00-22:00,周六至周日9:00-20:00,法定节假日闭馆。",
    "category": "图书馆类",
    "keywords": ["图书馆", "开馆时间", "开门"]
    },
    {
    "id": 2,
    "question": "校园卡怎么充值?",
    "answer": "校园卡可通过学校微信公众号、校园自助充值机、食堂充值窗口进行充值,充值后实时到账。",
    "category": "校园生活类",
    "keywords": ["校园卡", "充值", "缴费"]
    }
    ]
    }

  • 编写 Python 代码,实现知识库的读取和关键词检索功能
  • 阶段 4:Prompt 工程设计与调试(核心实操,附模板示例)
    (1)基础 Few-shot Prompt 模板(通用框架,可直接复用)

    plaintext

    指令:你是XX大学校园智能答疑助手,仅回答与本校校园相关的问题,问题需贴合教务、图书馆、校园生活、社团四大场景,非校园问题请回复“该问题非校园相关,无法为你解答”。
    场景:{scene}
    示例1:
    问题:{example_q1}
    答案:{example_a1}
    示例2:
    问题:{example_q2}
    答案:{example_a2}
    用户问题:{user_q}
    答案:

    (2)分场景调试:将 {scene} 替换为 “图书馆类” 等具体场景,{example_q/a} 替换为对应场景的示例问答,测试不同模板的效果
    (3)调优技巧:示例数量控制在 1-3 个(数量过多会降低小样本效果)、温度系数设为 0.5-0.7(保证答案准确性,避免过度生成)、最大生成长度设为 200-300 字(贴合校园问答短答案特点)
    阶段 5:系统整合与前端实现(Streamlit,最快上手,毕设演示首选)
  • 将 “知识库检索→Prompt 生成→模型推理” 的核心逻辑整合为一个函数
  • 用 Streamlit 编写前端界面,核心代码片段(可直接复用,一键运行):
  • python

    运行

    import streamlit as st
    # 设置页面标题
    st.title("XX大学校园智能问答系统")
    # 场景选择
    scene = st.sidebar.selectbox("选择问题场景", ["全部", "教务类", "图书馆类", "校园生活类", "社团类"])
    # 历史对话初始化
    if "history" not in st.session_state:
    st.session_state.history = []
    # 问题输入
    user_q = st.text_input("请输入你的校园问题:", placeholder="例如:图书馆几点关门?")
    # 提交按钮
    if st.button("提交提问") and user_q:
    # 调用核心推理函数(自行实现)
    response = core_infer(user_q, scene)
    # 保存历史对话
    st.session_state.history.append(("你", user_q))
    st.session_state.history.append(("答疑助手", response))
    # 展示答案
    st.success(f"答疑助手:{response}")
    # 展示历史对话
    st.subheader("历史对话")
    for role, content in st.session_state.history:
    st.write(f"**{role}**:{content}")

  • 运行前端:在终端输入streamlit run 文件名.py,自动生成网页版界面,支持本地演示
  • 阶段 6:系统测试与评估(毕设论文核心数据来源)
  • 测试集测试:用 100-150 条未参与调试的校园问答对做测试,计算准确率(正确回答数 / 总测试数)
  • 典型案例测试:选取 10-20 个典型问题(覆盖 5 大场景),展示问答效果(可写进论文附录)
  • 鲁棒性测试:输入模糊问题(如 “图书馆借书”)、无意义问题(如 “今天天气怎么样”)、错误问题(如 “图书馆能借汽车吗”),测试系统的处理能力
  • 生成评估报告:记录核心指标(准确率、响应速度)、存在的问题(如部分小众问题回答不准确)、优化方向
  • 四、毕设创新点设计(3 个易实现的创新点,直接写进论文,加分项)

  • 分场景定制化 Prompt 工程:针对校园不同场景设计专属 Prompt 模板,相比通用 Prompt,提升了校园领域小样本数据的问答准确率(量化对比:通用 Prompt 准确率 78%,分场景 Prompt 准确率 88%)。
  • 轻量型校园专属知识库:构建贴合本校特色的结构化知识库,融合关键词 + 语义相似度检索,解决了通用大模型对校园小众问题回答不准确的问题。
  • 轻量化部署方案:采用 ChatGLM-6B INT4 量化版,结合 Streamlit 轻量前端,实现了 “普通电脑可运行、本地一键部署”,相比传统大模型系统,降低了硬件门槛,更适合校园场景落地。
  • 五、毕设论文撰写重点(贴合院校评审要求,结构清晰,重点突出)

  • 绪论:重点说明校园智能问答系统的研究背景(校园答疑效率低、学生高频提问无统一解答)、研究意义(提升校园服务效率、方便学生校园生活)。
  • 技术基础:简要介绍 ChatGLM-6B、Prompt 工程、LangChain 的核心原理,无需过于深入(避免堆砌理论)。
  • 系统设计:论文核心章节,详细说明需求分析、知识库设计、Prompt 工程设计、系统架构设计,附设计图(架构图、模块图)。
  • 系统实现:分模块说明实现过程,附核心代码片段(注释清晰)、界面截图,重点展示 Prompt 模板和前端界面。
  • 系统测试与评估:论文数据核心章节,详细说明测试方案、评估指标、测试结果,附准确率表格、典型案例问答截图。
  • 总结与展望:总结系统的实现成果、创新点、存在的不足(如小众问题回答不准确、无语音交互),提出未来优化方向(如加入向量数据库、增加语音交互、扩大知识库)。
  • 六、毕设演示准备(5 分钟即可完成,评审老师重点关注)

  • 准备一台安装好系统的电脑(提前测试,确保无卡顿)。
  • 设计 5-8 个典型测试用例(覆盖 5 大场景,包含简单问题和稍复杂问题)。
  • 演示流程:打开前端界面→选择场景→输入问题→展示答案→展示历史对话,全程不超过 5 分钟,重点展示系统的流畅性和准确率。
  • 准备一张系统架构图(打印出来),评审老师提问时可辅助讲解。
  • 七、避坑指南(毕设实操中最易踩的坑,提前规避)

  • 避免选择大模型从头训练:ChatGLM-6B 从头训练需要海量数据和高端 GPU,毕设周期内无法完成,直接用预训练模型做 Prompt 工程 + 微调即可。
  • 避免过度追求复杂技术:无需使用向量数据库(如 Milvus)、分布式部署等复杂技术,轻量版实现即可,毕设重点是 “系统完整性 + 落地性”。
  • 避免数据集过少:自建数据集至少 1000 条,否则 Prompt 工程调试无足够数据支撑,准确率会偏低。
  • 避免硬件准备不足:提前测试电脑的显存和内存,若显存不足,选择 ChatGLM-2-6B INT4 量化版(显存占用更低)。
  • 赞(0)
    未经允许不得转载:171主机测评 » 基于 Prompt 工程 + ChatGLM-6B 的校园智能问答系统
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址