第二周(3月30日 - 4月5日)
本周目标
完成RAG系统核心功能开发、API封装和前端界面
完成工作
一、RAG系统核心开发
开发了完整的RAG问答系统rag_qa.py,整合了向量检索和大模型生成功能。实现了RAGSystem类,包含retrieve检索方法、generate_answer生成方法和ask统一问答接口。retrieve方法从ChromaDB中检索与用户问题最相似的故障案例,generate_answer方法将检索结果作为上下文构建Prompt并调用大模型生成答案,ask方法整合检索和生成两个步骤,返回结构化的诊断结果。Prompt模板经过多次优化,要求模型按故障原因、维修步骤、注意事项、参考案例四个部分输出,提高了答案的可读性和专业性。
二、知识库数据导入
使用张子昊整理的50余条真实故障案例,通过import_real_data.py脚本将数据导入ChromaDB向量库。每条案例包含case_id、equipment、fault、causes、solutions、parts、precautions等字段,覆盖发动机、液压系统、电气设备、甲板机械、辅助设备五大类。导入后验证了检索功能,测试了启动困难、油温过高、电压不稳等典型故障,检索结果准确。
三、API服务开发
使用Flask框架开发了API服务api_server.py,提供了三个接口:/ask接口支持POST请求,接收JSON格式的问题,返回结构化的答案和置信度;/ask_text接口支持GET请求,通过URL参数传递问题,返回纯文本答案,方便浏览器直接测试;/health接口支持GET请求,返回服务健康状态,用于监控和检查。API服务支持跨域请求CORS,便于前端调用。设置了合理的超时时间,避免长时间等待。
四、前端界面开发
使用Streamlit框架开发了问答界面chat_ui.py,实现了用户输入问题、点击诊断按钮、展示结构化答案的完整流程。界面包含标题区、输入框、诊断按钮、结果展示区,结果展示区能够正确显示故障原因、维修步骤、注意事项、参考案例和置信度。界面风格简洁清晰,适合演示场景。
五、公网访问配置
使用cpolar工具配置了内网穿透,将本地5000端口暴露到公网,生成了公网访问地址。解决了中文URL编码问题,使C同学可以远程调用API服务。在API服务中增加了URL解码处理,支持中文问题传递。验证了公网访问的可用性,POST请求返回正常。
六、本地部署与启动脚本
编写了一键启动脚本start_demo.bat,实现了自动启动API服务和前端界面,并自动打开浏览器访问。编写了自动安装脚本install.bat,实现了虚拟环境创建、依赖安装的自动化。编写了使用说明README.md,方便评委和用户快速上手。
七、测试与验证
完成了功能测试,使用发动机启动困难、液压油温度过高、发电机电压不稳等测试问题验证了系统功能,所有测试通过。完成了性能测试,GPU模式下响应时间3-5秒,满足使用要求。完成了边界测试,输入无关问题时空压机不制冷,系统正确返回未找到相关故障案例的提示。
遇到的问题及解决方案
第一,API服务POST请求返回400错误的问题。原因是Flask的request.get_json()无法解析某些请求格式。解决方案是使用request.get_json(force=True, silent=True)并增加异常处理。
第二,Streamlit界面超时的问题。原因是模型在CPU上运行较慢,超过默认超时时间。解决方案是将超时时间从30秒调整为120秒,同时建议使用GPU加速。
第三,公网访问中文乱码问题。原因是URL编码未正确处理。解决方案是在API服务中对question参数进行URL解码。
第四,启动脚本弹出两个浏览器窗口的问题。原因是Streamlit自动打开浏览器,脚本又执行了一次打开命令。解决方案是在脚本中设置--server.headless true参数,只由脚本打开一次浏览器。
冲刺记录
本周完成了从原型到完整系统的跨越。API服务的开发使系统具备了可调用的接口,前端界面的开发使系统具备了可交互的界面,公网访问的配置使系统具备了远程演示的能力。系统已经可以完整演示从用户提问到获取答案的全流程。团队协作方面,李飞完成了RAG核心和API开发,张子昊提供了完整的故障数据,黎鉴桐协助进行了前端测试和界面优化。
下周计划
下周计划扩充知识库,增加更多故障案例,提高系统覆盖率和准确率。计划优化响应速度,进一步利用GPU加速。计划与队友进行联调测试,确保各模块协同工作。计划开始准备项目文档和演示材料,包括知识图谱设计文档、源代码调用关系图、测试报告等。
本周工作小结
本周完成了系统核心功能的开发,RAG问答系统已经可以正常运行,API服务和前端界面也已就绪。项目进度符合预期,技术方案验证通过。接下来将进入优化和文档准备阶段。
浙公网安备 33010602011771号