锦中融合门户系统

我们提供融合门户系统招投标所需全套资料,包括融合系统介绍PPT、融合门户系统产品解决方案、
融合门户系统产品技术参数,以及对应的标书参考文件,详请联系客服。

校园智能体助手在云南高校的实践与技术实现

2025-11-26 13:05
融合门户在线试用
融合门户
在线试用
融合门户解决方案
融合门户
解决方案下载
融合门户源码
融合门户
详细介绍
融合门户报价
融合门户
产品报价

张明:最近我在研究一个关于校园智能体助手的项目,想看看能不能在云南的一些高校里落地。你觉得这个方向怎么样?

李华:听起来挺有意思的。云南的高校很多,比如云南大学、昆明理工大学这些,如果能结合当地的特色和需求,应该会有不错的应用场景。

张明:没错,我计划用Python来开发这个智能体助手,利用自然语言处理(NLP)技术,让它能够回答学生的问题,比如课程安排、考试时间、图书馆资源等等。

李华:那你是打算用什么框架呢?比如像Rasa或者Dialogflow这类工具?

张明:我想自己从头开始做一个,这样更深入理解整个流程。首先需要构建一个意图识别模型,然后是实体提取,最后是响应生成。

李华:那你有没有考虑过使用机器学习库,比如scikit-learn或者TensorFlow?

张明:对,我打算用scikit-learn来做初步的分类模型,然后用BERT这样的预训练模型进行意图识别,提高准确率。

李华:那具体怎么实现呢?可以给我看看代码吗?

张明:当然可以!我先写一个简单的例子,用来演示如何识别用户输入的意图。

import numpy as np

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.svm import LinearSVC

# 示例数据

texts = [

校园智能体

"我想知道今天有哪些课程",

"明天的考试安排是什么时候",

"图书馆的开放时间是多少",

"请帮我查找教务系统",

"我需要申请退课",

"课程表怎么下载"

]

labels = ["课程查询", "考试安排", "图书馆信息", "教务系统", "退课申请", "课程表"]

# 向量化文本

vectorizer = TfidfVectorizer()

X = vectorizer.fit_transform(texts)

# 训练模型

model = LinearSVC()

model.fit(X, labels)

# 测试预测

test_text = "我的课程表什么时候更新"

test_vector = vectorizer.transform([test_text])

predicted_label = model.predict(test_vector)

print("预测意图:", predicted_label[0])

李华:这看起来不错!不过这只是基础的意图识别,如果要更精确的话,可能需要引入深度学习模型。

张明:你说得对,我接下来会尝试使用Hugging Face的Transformers库,加载BERT模型来进行意图识别。

李华:那我们可以一起做点更复杂的东西,比如让助手支持多轮对话,而不是只做单次回复。

张明:没错,我觉得可以结合Rasa框架,它支持多轮对话管理,还能集成各种NLU模型。

李华:那你可以先搭建一个简单的Rasa项目结构,然后逐步添加功能。

张明:好的,我现在就试试看。

# 安装Rasa

# pip install rasa

# 创建项目

rasa init --no-prompt

# 编辑domain.yml

intents:

- greet

- goodbye

- ask_course_schedule

- ask_exam_time

- ask_library_hours

- ask_tuition_fee

- request_withdrawal

responses:

utter_greet:

- text: "你好!我是校园智能体助手,请问有什么可以帮助你的吗?"

utter_goodbye:

- text: "再见!如果有其他问题,欢迎随时回来咨询。"

utter_course_schedule:

- text: "你可以在教务系统中查看最新的课程安排。"

utter_exam_time:

- text: "考试时间请查看学校官网或教务系统。"

utter_library_hours:

- text: "图书馆的开放时间是每天早上8点到晚上10点。"

utter_tuition_fee:

- text: "学费详情请访问财务处官网或联系财务办公室。"

utter_withdrawal:

- text: "退课申请请登录教务系统并按照流程操作。"

actions:

- action_default_fallback

李华:这样设置之后,就可以通过Rasa的对话管理来处理用户的多轮交互了。

张明:是的,接下来我会编写一个自定义动作,用于调用数据库查询课程信息。

李华:那你可以使用Python的Flask或者Django来搭建后端服务,然后让Rasa调用API获取数据。

张明:没错,我打算用Flask来创建一个简单的REST API,用于查询课程信息。

from flask import Flask, request, jsonify

app = Flask(__name__)

# 模拟课程数据

courses = {

"2024-1": [

{"course": "计算机网络", "time": "周一上午9点"},

{"course": "人工智能", "time": "周三下午3点"}

],

"2024-2": [

{"course": "操作系统", "time": "周二上午10点"},

{"course": "数据库原理", "time": "周五下午2点"}

]

}

@app.route('/api/courses', methods=['GET'])

def get_courses():

semester = request.args.get('semester')

if semester in courses:

return jsonify(courses[semester])

else:

return jsonify({"error": "未找到该学期的课程信息"}), 404

if __name__ == '__main__':

app.run(debug=True)

李华:这个API可以被Rasa调用,从而实现动态的数据获取。

张明:对,接下来我需要在Rasa中配置一个自定义动作,调用这个API。

李华:你可以使用Rasa的Action Server来实现这一点,然后在actions.py中编写逻辑。

张明:好的,我现在就去写这个动作。

from rasa_sdk import Action

from rasa_sdk.events import SlotSet

import requests

class ActionGetCourseSchedule(Action):

def name(self):

return "action_get_course_schedule"

async def run(self, dispatcher, tracker, domain):

semester = tracker.get_slot("semester")

response = requests.get(f"http://localhost:5000/api/courses?semester={semester}")

data = response.json()

if "error" in data:

dispatcher.utter_message(text="未找到该学期的课程信息。")

else:

message = "本学期的课程安排如下:\n"

for course in data:

message += f"- {course['course']}:{course['time']}\n"

dispatcher.utter_message(text=message)

return [SlotSet("semester", semester)]

李华:这样就完成了基本的功能,接下来你可以测试一下整个流程。

张明:好的,现在我可以通过Rasa的测试命令来模拟对话。

李华:记得还要加入一些错误处理,比如用户输入不明确的时候,要给出提示。

张明:对,我还需要为不同的意图设计更丰富的响应内容,让用户有更好的体验。

李华:另外,考虑到云南的高校可能有不同的需求,你可以根据实际情况调整功能模块。

张明:没错,比如有些学校可能更关注学生生活服务,比如食堂、宿舍等,我可以扩展这些模块。

李华:总之,这个项目很有潜力,希望你能成功地在云南高校中推广开来。

张明:谢谢你的建议,我会继续完善这个智能体助手,让它真正成为学生的好帮手。

本站部分内容及素材来源于互联网,由AI智能生成,如有侵权或言论不当,联系必删!