第二次小组作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559 |
这个作业的目标 | 定制ai智能体制作 |
学号 | 102301418 |
Agent 智能体系统说明文档
需求描述
一个 基于dify平台或本地大语言模型的 可以帮用户整理任务和生成待办清单的 智能助理
功能需求
-
核心功能
-
1.调用工具的同时聊天功能不受影响
-
2.能够调用ai进行待办事项的增删改查以及生成待办事项清单
-
3.待办事项清单根据不同紧急程度动态调整
-
-
扩展功能
-
1.所有待办事项的数据保存在本地的mysql数据库中
-
2.通过网页实时更新待办事项清单内容,便于观察
-
3.提供不需要平台的本地聊天程序,便于后续的灵活调用,更好地与其他程序配合而不影响办公功能(github中已写好简易搭建教程)
-
业务流描述
总体业务流程
要点:
1.mcpserver时刻运行,等待ai发送调用工具请求
2.ai自动识别用户需不需要调用工具(工具需使用mcp接口提前注册),若需要则向mcp服务器发送调用工具请求(包括传参)
3.ai得到工具运行后的结果处理后反馈给用户
4.ai可以选择在dify平台,也可以选择本地的大模型
实现说明
后端:
1.网页后端采用flask用于挂载动态网页。
2.mcp后端对于本地环境版本的采用fastmcp接口编写mcp_server,mcp_client,在mcp_client实例中采用openai调用大模型的接口连接本地ollama的qwen3:0.6b模型,这样就可以通过本地大模型调用mcp_server中的工具函数。
3.mcp后端对于dify的部署采用fastapi接口来通过网络(http)进行工具函数的调用请求和结果返回。
前端:
使用js的定时器函数周期查看本地的json文件进行待办事项清单的渲染。
工具函数:
基于本地MySQL数据库增删改查,生成清单(同时会将清单数据存入本地json文件)等函数。
功能演示
1.本地环境(qwen3:0.6b)
2.dify(ds chat)
github地址->https://github.com/xuezong691/fzuteam_lakers
小组分工与成员心得
薛刚(PM,后端):本次项目我主要负责了整个项目的初期调研,框架设计,流程安排,以及mcp接口后端的编写。在我看来对于整个项目而言初期调研的意义重大,只有最适合的目标才能让整个小组的效率更高,我对初期调研付出的精力很多,先是分析老师要求的作品的需求确定我们大致的目标,随后通过网络搜索,小型项目复现等最后确定了使用dify作为主要的开发平台,从而对组员进行分工,在实践过程中不断完善项目。前端很给力,大家都很配合,我们也是能够顺利按时完成任务。不过我在组员分工也存在一些不足,以后应该设立技术总监这样的职位能够时刻统一多人编码的风格,要不然最后统一大家代码格式的时候挺麻烦的..
汤健(前端):本次项目我负责的是前端静态页面的搭建。在完成本次项目的过程中我也对动态页面进行了学习,学会了如何实时监测文件数据。同时通过前后端的配合,我加强了团队协作能力,能够根据团队需求做好自己的任务要求。
廖云峻(前端):本次任务我参与了前端的代码编写,通过学习,我认识到HTML和JavaScript是构建现代网页的核心技术,二者相辅相成,分别承担着“结构”与“行为”的角色。HTML是网页的骨架。它通过各种标签来定义网页的内容结构,包括标题、段落、图片、表单等。学习HTML让我掌握了如何搭建一个语义清晰、层次分明的页面基础。JavaScript则是网页的灵魂,负责实现交互功能和动态效果。它使我能够操作HTML元素(DOM操作),响应用户事件(如点击、鼠标移动)。例如,表单验证、图片轮播、内容动态更新等功能,都离不开JavaScript。我学习了变量、数据类型、函数、循环和条件判断等核心语法,这是实现复杂逻辑的基础。更重要的是,我理解了它们如何协同工作:HTML提供结构,JavaScript通过获取DOM节点来监听事件并修改页面内容与样式,从而实现用户与网页的动态交互。总而言之,HTML与JavaScript的结合,将静态的文档转变为充满活力的Web应用。掌握它们是我进入前端开发世界的第一步,为后续学习更高级的框架和技术奠定了坚实的基础。
杨智鈜(后端):通过本次项目开发,我对Flask框架有了更深入的理解。在构建待办事项管理系统的过程中,最深刻的体会是数据结构设计的重要性。合理的类设计为后续开发奠定了坚实基础,避免了频繁的代码重构。我认识到良好的数据结构设计是项目成功的基石。通过设计todo_task类,我们为整个系统建立了清晰的数据模型,这大大简化了后续的数据库操作和API接口设计。每个字段的定义都经过仔细考量,既满足功能需求,又保持足够的灵活性。在解决"Method Not Allowed"错误的过程中,我也更加理解了请求方法规范的必要性。JSON数据处理是项目的关键环节。通过实践掌握了数据序列化的技巧,这种能力在现代Web开发中极为实用。模块化的开发思路让代码结构清晰,便于维护和扩展。这次经历将理论知识与实践紧密结合,提升了我的工程化思维和问题解决能力,为今后的项目开发积累了宝贵经验
章鸿晨(函数编写):在这次基于MCP框架的智能待办清单开发中,我对AI应用架构有了基本的技术理解。MCP协议本质上是通过标准化的JSON-RPC接口,让AI模型能够动态发现和调用外部工具。我们实现的待办事项管理函数,实际上是在构建一个工具服务器,这些函数通过schema定义其功能、参数和返回值,使大语言模型能够像调用API一样操作系统资源。在函数编写的过程中,我特别体会到工具的重要性,这种设计模式让AI模型不再局限于文本生成,而是真正获得了操作系统的能力。"工具调用-反馈-调整"的交互模式,体现了智能体系统的核心价值。通过这次小组作业,我真正理解了如何将大语言模型从"对话系统"升级为"行动系统"。这种架构设计使得AI不再只是回答问题,而是能够主动执行任务、管理系统状态,为实现真正的自主智能体奠定了基础。
许敬豪(函数编写):通过这次生成清单函数的开发,我不仅提升了技术能力,更重要的是学会了在团队中如何有效地协作和沟通。一个看似简单的功能背后,需要考虑数据库设计、性能优化、团队协作等多个方面。这次经历让我深刻体会到,优秀的开发者不仅要写出能工作的代码,更要写出易于理解、便于维护、利于协作的代码。
姚敏聪(函数编写):这段数据库删除功能的开发与调试,让我对数据操作有了更深体会。最初我仅关注 “删除” 本身,测试时发现直接操作自增 ID 存在隐患 —— 若删除中间记录后不重新编号,可能导致 ID 断层,影响业务对 “连续编号” 的依赖;但重新编号又会引发新问题:修改自增属性时若有并发操作,可能造成数据混乱。因此加入了事务提交和分步执行逻辑,确保重新编号的原子性。其次在用户交互的过程中,我发现,仅凭 ID 删除容易误操作,尤其当 ID 对应真实业务实体时,添加 “确认删除” 步骤能有效降低错误率。调试中最大收获是:数据操作不能只看 “正常流程”,更要预判各种异常场景。从用户输入校验到数据库连接关闭,每个环节的细节处理,都是保障数据安全的基石。
周宇烨(函数编写):作为首次接触Python的新手,本次负责编写事务紧急程度更新函数,让我在“边学边做”中摸清了编程实践的门道。起初,我先跟着教程梳理函数逻辑:通过任务ID找到数据库里的对应任务,再根据传入的优先级参数,更新“紧急程度”字段的值。但真正动手时,问题却接连出现——用 pymysql 库连接数据库时,因没搞懂“游标”的作用,写好的SQL语句始终无法执行,反复查阅资料后才明白,需要通过游标对象来传递执行命令;测试时,又发现当输入的任务ID在数据库中不存在时,程序没有任何提示就结束了,既没报错也没更新,后来添加了判断语句,让这种情况能返回“任务不存在”的提示。这次作业让我真切感受到,编程不是“想清楚逻辑就够了”。从库的使用细节到异常情况的处理,每一个小环节都得考虑到。这些在实践中遇到的问题,比课本上的知识点更让我印象深刻,也让我对Python和数据库操作有了更实际的认知。
阮佳誉(函数编写):编写这个AI办公事项助手的增模块,让我深刻认识到,代码不仅是给机器执行的指令,更是与开发团队沟通的蓝图。在add_todo_task函数中,清晰的命名、模块化的结构以及详尽的注释,其首要价值在于让同伴能迅速理解我的设计思路,降低协作成本。其次,严谨的容错与验证机制是团队信任的基石。 我对用户输入的每一步校验、为字段设置的默认值、完整的异常处理,不仅是为了程序健壮,更是为了确保系统的行为对团队其他成员(如测试、后端或前端)是可预测的。这避免了因脏数据或意外崩溃给同伴带来不必要的排查负担,建立了协作间的可靠性。最后,从单一新增功能扩展到add_multiple_tasks的批量操作,体现了对用户(也包括团队其他成员)实际工作流的深度考量。在软件工程中,主动预判同伴和用户的需求,设计出符合直觉且高效的交互,是提升整个团队生产力和产品质量的关键。因此,优秀的代码是在功能之上,构建了一座与同伴顺畅沟通的桥梁,它清晰、可靠且充满协作的善意。
洪淳衔(测试):修改合并六个函数时,需保证数据库操作逻辑、返回格式、字段映射一致,各函数专注单一功能,通过参数扩展灵活性。传参测试要严格校验输入,覆盖空值、边界值等场景,联动验证函数依赖关系,模拟异常场景测试错误处理。可封装重复逻辑,添加日志方便调试,预留扩展参数。这样能保证代码可维护,提前暴露问题,实现稳定系统。
杨子贤(测试):本次测试工作让我深刻认识到,测试是项目开发的“镜子”,它能真实地反映产品的质量;同时也是项目的“守护者”,在最后一公里确保交付给用户的是稳定、可靠、易用的产品。特别感谢功能实现组扎实的数据基础、后端组构建的强大引擎、前端组打造的精致界面。最终,当看到智能体流畅地响应用户请求,准确地管理待办事项,并稳定地提供服务时,所有测试过程中的艰辛都化作了巨大的成就感。这次经历不仅提升了我对全栈项目测试的理解,也让我对团队协作开发复杂系统有了更深的敬畏之心。展望未来,我将把这些宝贵的经验应用到后续的工作中,持续改进测试方法,为打造更卓越的AI产品贡献力量。
于昊成(测试):本次团队合作完成了前端与 MCP Server 中 AI 模型交互的任务,是一次非常宝贵的实践经历。在组长的带领下,我们不仅成功实现了 AI 调用工具函数并作出回应的功能,还在技术能力、团队协作等方面取得了显著的进步。通过这次作业,我深刻认识到,一个成功的项目不仅需要扎实的技术功底,还需要合理的项目规划、有效的团队沟通和良好的团队协作精神。在今后的学习和工作中,我将把本次作业中积累的经验和教训运用到更多的项目实践中,不断提升自己的技术能力和团队协作能力。同时,我也将不断学习新的技术和知识。我相信,在未来的任务中,我们小组能够表现得更加出色,取得更加优异的成绩。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/943653.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!