【LLM】智能学生顾问构建技术学习(Lyrz SDK + OpenAI API )

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 【5月更文挑战第13天】智能学生顾问构建技术学习(Lyrz SDK + OpenAI API )

[toc]


如果您是一名学生,你正在寻求个性化顾问来帮助你的课程作业,那么AI学生顾问正好可以帮助你,这是一种创新的解决方案,利用 AI 的力量彻底改变学生咨询。

Lyzr Student Advisor 应用程序的核心是为了让学生在学术之旅中发挥作用,通过利用 Lyzr 聊天机器人的功能,该应用程序提供量身定制的见解和建议,以帮助学生在课程作业中脱颖而出、发展职业轨迹并促进个人成长。使用 Lyzr SDK,制作您自己的 GenAI 应用程序变得轻而易举,只需几行代码即可快速启动和运行。

查看Lyzr SDK: https://docs.lyzr.ai/homepage

创建文件 app.py ,导入依赖库:

import os
import shutil
import streamlit as st
from lyzr import ChatBot

该代码首先导入用于文件处理的基本模块,例如 os 和 shutil,以及用于创建 Web 应用程序(如 streamlit)。此外,从 lyzr 模块导入 ChatBot 类,这表明聊天机器人功能的潜在集成可能利用自然语言处理功能。

使用 Streamlit 的密钥管理工具初始化 OpenAI API 密钥,通过访问安全存储在 Streamlit 密钥中的特定密钥(其中安全存储了 OpenAI API 密钥),它取代了占位符“OPENAI_API_KEY”,确保了对 Streamlit 应用程序中 OpenAI API 的安全访问。

# Set the OpenAI API key
os.environ["OPENAI_API_KEY"] = st.secrets["apikey"]
# Function to remove existing files
def remove_existing_files(directory):
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)
        try:
            if os.path.isfile(file_path) or os.path.islink(file_path):
                os.unlink(file_path)
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)
        except Exception as e:
            st.error(f"Error while removing existing files: {e}")

函数 remove_existing_files(directory) 用于擦除指定目录中的所有文件和目录。它使用 os.listdir(directory) 遍历指定目录中的每个项目。对于遇到的每个项目,它通过将目录路径与项目的文件名组合在一起来形成完整的文件路径。随后,它尝试使用 os.unlink() 来消除文件或 shutil.rmtree() 来消除目录的项目。如果在此删除过程中出现任何错误,它会处理它们并使用 Streamlit 的 st.error() 函数显示错误通知。

# Set the local directory
data_directory = "data"

# Create the data directory if it doesn't exist
os.makedirs(data_directory, exist_ok=True)

# Remove existing files in the data directory
remove_existing_files(data_directory)

这些代码行处理文件系统中名为“data”的本地目录。首先,将变量 data_directory 设置为字符串 “data”,指示要管理的目录的名称。然后,代码使用 os.makedirs(data_directory, exist_ok=True) 创建“data”目录。

exist_ok=True 参数可确保仅当目录尚不存在时才创建该目录。在此之后,调用函数 remove_existing_files(data_directory) 以清除“data”目录中任何预先存在的文件或子目录,确保它是空的并准备好使用。

# Function to implement RAG Lyzr Chatbot
def rag_implementation(file_path):
    # Check the file extension
    _, file_extension = os.path.splitext(file_path)

    if file_extension.lower() == ".pdf":
        # Initialize the PDF Lyzr ChatBot
        rag = ChatBot.pdf_chat(
            input_files=[file_path],
            llm_params={"model": "gpt-4"},
        )
    elif file_extension.lower() == ".docx":
        # Initialize the DOCX Lyzr ChatBot
        rag = ChatBot.docx_chat(
            input_files=[file_path],
            llm_params={"model": "gpt-4"},
        )
    else:
        # Handle unsupported file types
        raise ValueError("Unsupported file type. Only PDF and DOCX files are supported.")

    return rag

rag_implementation,此函数用于根据提供的文件类型实现 RAG Lyzr 聊天机器人。它首先从给定file_path中提取文件扩展名。如果文件是 PDF,则使用 ChatBot 类中的 pdf_chat 方法初始化专为 PDF 文件设计的 Lyzr ChatBot。同样,如果文件是 DOCX 文档,则使用 docx_chat 方法初始化 DOCX 文件的 ChatBot。

这两个初始化过程都包括指定输入文件和设置语言模型参数,此处定义为 {“model”: “gpt-4”}。如果文件扩展名与“.pdf”或“.docx”不匹配,则该函数将引发 ValueError,指示仅支持 PDF 和 DOCX 文件。

# Function to get Lyzr response
def advisor_response(file_path, ambition):
    rag = rag_implementation(file_path)
    prompt = f"""Your name is Isha, always remember that, and you are a student advisor at a university. Always introduce yourself.

                 To generate advice for the uploaded document, please follow the instructions below:

                      - Course work and grades: Being a Student Advisor, look into the uploaded marksheet and give important insights about where the student performance lies.

                      - Ambition: Informed by the student's ambition (replace {ambition}), advise them on the steps required to excel in their chosen path.

                      - Academic advice: Being a Student Advisor, look into the uploaded document and give important insights about where the student's strength and weaknesses lie and how to improve them.

                      - Career guidance: Being a student Advisor utilize the student's ambition, coursework, and grades, offer pertinent suggestions for their career trajectory.

                      - Personal development: Being a student Advisor offer guidance on fostering high productivity through effective time management techniques and engaging in relevant extracurricular activities.

                      - Please ensure adherence to these steps and provide responses akin to a student advisor. """

    response = rag.chat(prompt)
    return response.response

此advisor_response函数利用 rag_implementation 函数初始化 Lyzr ChatBot。然后,它会生成一个提示,其中包含有关建议各个方面的说明和占位符,例如课程作业、抱负、学术建议、职业指导和个人发展。占位符 {ambition} 用于将学生的抱负动态地合并到提示中。

该函数会向 Lyzr ChatBot 提示此消息,指示它根据上传的文档和提供的提示提供建议。ChatBot 处理提示并生成响应,然后由函数返回。该回复预计将包含针对学生的学术旅程和抱负量身定制的建议和见解。

# File upload widget
uploaded_file = st.file_uploader("Upload your Marksheet⬇️", type=["pdf", "docx"])

if uploaded_file is not None:
    # Save the uploaded file to the data directory
    file_path = os.path.join(data_directory, uploaded_file.name)
    with open(file_path, "wb") as file:
        file.write(uploaded_file.getvalue())

    # Display the path of the stored file
    st.success("File successfully saved")

    # User input for student's ambition
    ambition = st.text_input("What is your Ambition?")

    # Generate advice button
    if st.button("Get Advice"):
        if not ambition:
            st.warning("Please enter your ambition.")
        else:
            automatic_response = advisor_response(file_path, ambition)
            st.markdown(automatic_response)

本部分代码使用 Streamlit 的 file_uploader 函数创建文件上传小部件。系统会提示用户上传其标记表文件,支持的文件类型仅限于 PDF 和 DOCX 格式。

文件上传后,代码将上传的文件保存到指定的data_directory,确保将其存储在本地以供进一步处理。将显示一条成功消息,以确认文件已成功保存。

接下来,系统会提示用户通过文本输入字段输入他们的想法。这些信息对于生成针对用户职业抱负量身定制的个性化建议至关重要。

最后,标有“获取建议”的按钮允许用户触发建议生成过程。在继续操作之前,代码会检查目标字段是否为空,并在必要时提示用户输入其目标。如果提供了 ambition,则调用 advisor_response 函数,并将path和 ambition 作为参数。然后使用 Streamlit 的 Markdown 函数向用户显示生成的建议。

以上就是基于Lyzr SDK实现的学生顾问的核心内容,希望对同学们有所帮助。

目录
相关文章
|
2天前
|
缓存 安全 API
API 接口开发与合理利用:构建高效、安全、可维护的数字桥梁
本文全面解析API接口的设计、优化与安全维护。API作为系统间交互的标准化契约,核心价值在于解耦系统、提升复用性和构建开放生态。设计时需遵循六大原则:明确输入输出、关注单一职责、实现自我表达、确保功能无重叠、保障幂等性及合理版本化。性能优化从批量处理、异步调用、并行执行等方面入手,同时结合缓存、池化技术和SQL优化提升效率。安全性涵盖加密传输、加签验签、Token认证、防重放攻击及限流熔断等十大要点。最后,通过文档自动生成、日志体系和版本管理确保接口可持续迭代。优秀的API应以契约优先、演进思维和防御心态为核心,成为系统的数字资产,支持内外部高效协作与生态建设。
|
2天前
|
前端开发 JavaScript NoSQL
使用 Node.js、Express 和 React 构建强大的 API
本文详细介绍如何使用 Node.js、Express 和 React 构建强大且动态的 API。从开发环境搭建到集成 React 前端,再到利用 APIPost 高效测试 API,适合各水平开发者。内容涵盖 Node.js 运行时、Express 框架与 React 库的基础知识及协同工作方式,还涉及数据库连接和前后端数据交互。通过实际代码示例,助你快速上手并优化应用性能。
|
21天前
|
人工智能 缓存 自然语言处理
构建智能天气助手:基于大模型API与工具函数的调用实践
在人工智能快速发展的今天,大语言模型(LLM)已经成为构建智能应用的重要基础设施。本文将介绍如何利用大模型API和工具函数集成,构建一个能够理解自然语言并提供精准天气信息的智能助手。
84 11
|
20天前
|
JSON API 网络架构
如何用Flask构建API
这篇文章介绍了如何使用Python的轻量级框架Flask构建自己的API。通过简单步骤,你将学会创建响应请求的基础API、返回JSON格式数据,并实现动态路由处理用户输入。从“Hello, World!”示例到返回水果信息列表,再到根据具体水果名称提供详细信息,逐步深入理解API的工作原理。最后,通过动态路由增强API灵活性。适合初学者快速上手,开启API开发之旅!
|
22天前
|
人工智能 JavaScript 测试技术
构建智能 API 开发环境:在 Cursor 中连接 Apifox MCP Server
本文介绍了如何将Apifox MCP Server与Cursor结合,通过AI直接获取和理解API文档,大幅提升开发效率。首先需配置Apifox的Access Token和项目ID,并在Cursor中设置MCP连接。实际应用场景包括快速生成模型代码、同步更新接口文档与代码、生成CRUD操作、搜索API文档及自动生成测试用例。此外,还提供了管理多项目、安全性实践和优化AI响应质量的技巧。这种组合可显著减少从API规范到代码实现的时间,降低错误率并加速迭代过程,为开发者带来更高效的体验。
|
1月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
4月前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
177 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
2月前
|
人工智能 自然语言处理 API
解锁 DeepSeek API 接口:构建智能应用的技术密钥
在数字化时代,智能应用蓬勃发展,DeepSeek API 作为关键技术之一,提供了强大的自然语言处理能力。本文详细介绍 DeepSeek API,并通过 Python 请求示例帮助开发者快速上手。DeepSeek API 支持文本生成、问答系统、情感分析和文本分类等功能,具备高度灵活性和可扩展性,适用于多种场景。示例展示了如何使用 Python 调用 API 生成关于“人工智能在医疗领域的应用”的短文。供稿者:Taobaoapi2014。
|
3月前
|
机器学习/深度学习 人工智能 安全
GLM-Zero:智谱AI推出与 OpenAI-o1-Preview 旗鼓相当的深度推理模型,开放在线免费使用和API调用
GLM-Zero 是智谱AI推出的深度推理模型,专注于提升数理逻辑、代码编写和复杂问题解决能力,支持多模态输入与完整推理过程输出。
319 24
GLM-Zero:智谱AI推出与 OpenAI-o1-Preview 旗鼓相当的深度推理模型,开放在线免费使用和API调用
|
4月前
|
安全 API 数据安全/隐私保护
自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统
在完成HarmonyOS Camera API开发后,我深入研究了数字版权管理(DRM)技术。最新DRM API 13提供了强大的工具,用于保护数字内容的安全传输和使用。通过学习该API的核心功能,如获取许可证、解密内容和管理权限,我实现了一个简单的数字视频保护系统。该系统包括初始化DRM模块、获取许可证、解密视频并播放。此外,我还配置了开发环境并实现了界面布局。未来,随着数字版权保护需求的增加,DRM技术将更加重要。如果你对这一领域感兴趣,欢迎一起探索和进步。
124 18

热门文章

最新文章