✨ 一种基于代码生成的大语言模型 (LLM) 智能体,实现班级自主管理小程序
一个基于大语言模型(LLM)的智能班级管理小程序,通过代码生成和函数调用实现多智能体协同,支持自然语言交互、成绩预测、统计分析、可视化图表等功能。创新点包括函数依赖图、智能体反问机制和动态知识库集成,系统采用Django和FastAPI混合架构,兼顾开发效率与高并发性能,为班级管理提供智能化解决方案。
- 基于代码生成和函数调用(function call)的大语言模型(LLM)智能体 https://github.com/bytesc/data-copilot-functions
- 基于大语言模型 (LLM) 的可解释型自然语言数据库查询系统 (RAG) https://github.com/bytesc/data-copilot-steps
- 基于大语言模型 (LLM)和并发预测模型的自然语言数据库查询系统 (RAG) (https://github.com/bytesc/data-copilot-v2
配套前端项目链接
- github: https://github.com/bytesc/smart-class-front
- gitee: https://gitee.com/bytesc/smart-class-front
🔔 如有项目相关问题,欢迎在本项目提出issue
,我一般会在 24 小时内回复。
- 1, 基于代码生成的大语言模型智能体(AI Agent)。
- 2, 实现智能体对用户的反问,解决用户提问模糊、不完整的情况。
- 3, 智能体可以访问动态知识库,调用检索增强生成模块(RAG),结合背景知识解决问题
- 4, 智能体支持灵活的自定义函数调用(function call)和思维链(COT)
- 5, 实现多智能体的合作调用
- 6, 智能体实现智能绘制多种统计图表
- 7, 智能体实现基于机器学习的智能成绩预测
- 8, 能够处理大语言模型表现不稳定等异常情况
- 9, 支持
openai
格式(如glm
,deepseek
,qwen
)的 api 接口
目前,大学生的班级信息管理主要通过微信群进行发布,但是群里的相关文件很容易过期,大量的聊天记录容易干扰学生学习,无法实现智能组建学习小组、个人成绩预测等功能。为了方便学生及时了解学校各类政策、实时了解自己的学习情况,增强学生的学习自觉性和主动性,同时为了帮助班导师更好地进行班级管理,提高工作效率,开发一款全面、高效的班级自主管理小程序具有一定的现实意义。
- 基于代码生成的智能体(Agent)支持灵活的自定义函数调用(function call)和思维链(COT)
- 引入函数依赖图(Function Graph)的概念,实现自定义函数调用
- 引入智能体函数(Agent as Function)的概念,实现多智能体(Agent)的合作调用
- 实现智能体(Agent)对用户的反问,解决用户提问模糊、不完整的情况
- 包含输出断言和异常处理,能够处理大语言模型表现不稳定等异常情况
- 系统架构兼顾了Django的开发高效与结构统一和FastAPI的高并发性能与功能敏捷
基本程序流水线图:
基本流程:
- Question: 用户自然语言问题提问
- RAG: 通过检索增强生成(RAG)获取背景知识
- Function Selection: LLM 根据函数基本信息选择多个函数,通过函数依赖图(Function Graph)获得可用函数列表和详细注释(函数包括非智能体函数(Custum Function)和调用其它智能体的函数(Agent as Function),实现多智能体协同)
- Function Calls Chain: LLM 根据函数列表和详细注释,生成调用多个函数的 python 代码并执行
- Result Review: LLM 回顾总结整个流程,评估问题是否解决,没有解决则反问用户,使其澄清问题或者提供更多信息
系统架构图:
FastAPI 搭建用户后端,Django 搭建管理端,模型-视图-控制器(MVC)与领域驱动设计(DDD)相结合的系统设计,实现了数据库结构定义与增删改查的分离,用户后端与管理端的解耦,Django 高效搭建管理端和 FastAPI 的高并发性能结合,兼顾了Django的开发高效与结构统一和FastAPI的高并发性能与功能敏捷。
知识库的检索增强生成(RAG),智能解答问题,支持连续对话
数据库查询,统计计算和图表绘制,统计分析,可视化
原理:函数调用链(Function Call Chain)和智能体函数(Agent as Function),实现多智能体协同原理示例
如果对智能绘图不满意,生成自定义交互式绘图工具链接
用户提供信息不足以完成任务时,反问用户使其补充信息(Result Review)
调用自定义的学生成绩预测模型
原理:函数依赖图(Function Graph)和非智能体函数(Custom Functions)原理示例
用户登录,注册,修改密码
切换班级页面,菜单页面,用户信息
管理端实现用户的批量导入导出
班级通讯录和站内消息
成绩统计和可视化
基于机器学习的成绩智能预测,班级智能分组
学校政策与班级公告
配套前端项目链接
- github: https://github.com/bytesc/smart-class-front
- gitee: https://gitee.com/bytesc/smart-class-front
示例问题
计算机专业核心课程有哪些
我的大学物理会挂科吗
我是张伟
查询计211的每个同学的平均成绩,画出前三名的成绩对比图
基于 Django-admin 和 simple-ui 的管理端
python 版本 3.10
pip install -r requirement-1.txt
pip install -r requirement-2.txt
这是管理端,使用 Django 支持管理端的高效搭建和数据库结构管理
cd ./django-server
mysite/settings.py
77行附近
# 填写数据库信息
# Database
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "smart_class2",
"USER": "root",
"PASSWORD": "123456",
"HOST": "127.0.0.1",
"PORT": "3306",
}
}
首次运行创建数据库内容,新建超级管理员
# 初始化数据库内容
python manage.py makemigrations
python manage.py migrate
# 新建超级管理员
python manage.py createsuperuser
python manage.py runserver
运行
python manage.py runserver 0.0.0.0:8000
浏览器输入连接,打开管理端 http://127.0.0.1:8000/
这是用户后端,使用 FastAPI 支持高并发请求
cd ./fastapi-server
config.yaml
server_port: 8001
server_host: "0.0.0.0"
# 填写数据库连接
mysql: "mysql+pymysql://root:123456@localhost:3306/smart_class2"
# ai-agent server
agent_url: "http://127.0.0.1:8003/ask-agent/"
运行sql
文件,添加触发器和存储过程,初始化数据库。
可用通过命令行,数据库终端等方式运行。
mysql -u root -p -P 3306 smart_class2 < ./sql/trigger_and_procedure.sql
运行 api/utils/rsa/rsa.py
生成 RSA 密钥对用于 token 签发
cd ./api/utils/rsa/
python rsa.py
如果前端不使用微信小程序,跳过这一步
新建文件:api/utils/openid/appid.txt
和 api/utils/openid/secret.txt
其中分别填写微信小程序的secret
和appid
获取途径:微信公众平台
python ./main.py
大语言模型智能体(AI Agent)服务,实现以自然语言的方式操作系统,是本项目的核心创新点所在。
cd ./ai-server
config.yaml
# config
server_port: 8003
server_host: "0.0.0.0"
# 填写数据库连接
mysql: "mysql+pymysql://root:123456@localhost:3306/smart_class2"
# 本机ip/域名:server_port
static_path: "http://127.0.0.1:8003/"
# 是否启用智能体回答 review 功能
ans_review: "false"
# true/false
config.yaml
model_name: "qwen-max"
# glm-4
# deepseek-chat
# qwen-max
model_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
# https://open.bigmodel.cn/api/paas/v4/
# https://api.deepseek.com/v1/
# https://dashscope.aliyuncs.com/compatible-mode/v1
新建文件:agent\utils\llm_access\api_key_openai.txt
在其中填写api-key
api-key
获取链接:
- 阿里云:https://bailian.console.aliyun.com/
- deepseek:https://api-docs.deepseek.com/
- glm:https://open.bigmodel.cn/
如果不需要 rag
config.yaml
的 rag_model_path
为空字符串即可
rag_model_path: ""
如果需要 rag
config.yaml
填写词嵌入模型的保存路径(绝对路径)
rag_model_path: "D:/IDLE/big/RAG/models/text2vec-base-multilingual/"
# https://huggingface.co/shibing624/text2vec-base-multilingual/tree/main
# https://hf-mirror.com/shibing624/text2vec-base-multilingual/tree/main
模型在 huggingface
或者其镜像网站下载
- https://huggingface.co/shibing624/text2vec-base-multilingual/tree/main
- https://hf-mirror.com/shibing624/text2vec-base-multilingual/tree/main
词嵌入模型文件夹结构
├─text2vec-base-multilingual
│ config.json
│ eval_results.txt
│ gitattributes
│ model.safetensors
│ modules.json
│ pytorch_model.bin
│ README.md
│ sentence_bert_config.json
│ special_tokens_map.json
│ tokenizer.json
│ tokenizer_config.json
│ unigram.json
python ./main.py
此翻译版本仅供参考,以 LICENSE 文件中的英文版本为准
MIT 开源许可证:
版权所有 (c) 2025 bytesc
特此授权,免费向任何获得本软件及相关文档文件(以下简称“软件”)副本的人提供使用、复制、修改、合并、出版、发行、再许可和/或销售软件的权利,但须遵守以下条件:
上述版权声明和本许可声明应包含在所有副本或实质性部分中。
本软件按“原样”提供,不作任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性。在任何情况下,作者或版权持有人均不对因使用本软件而产生的任何索赔、损害或其他责任负责,无论是在合同、侵权或其他方面。