打造学院知識問答系統的教學

Find AI Tools
No difficulty
No complicated process
Find ai tools

打造学院知識問答系統的教學

目录

  1. 背景故事
  2. 项目介绍
  3. 构建项目的架构
  4. 使用MySQL数据库
  5. 编写OpenAI函数调用代码
  6. 创建DB助手模块
  7. 创建OpenAI助手模块
  8. 构建Streamlit前端界面
  9. 运行并测试应用程序
  10. 总结与未来展望

背景故事

🎭 Joy Pandey是Atlick商学院的学生,他的兄弟Peter Pandey是一名AI增强的数据专家。Peter使用开放式AI功能成功地为Joy的项目拯救了一命。Joy的项目因遭到院长的拒绝而感到沮丧。Joy成功地将ChatGPT与学院网站进行了集成,但院长希望更多。他希望他的Chatbot能够回答与学院内部知识有关的特定问题。院长说,把这些东西扔到垃圾桶里,你今年无法毕业。但Peter有其他打算,他想帮助Joy。他决定构建一个内部聊天GPT的原型,这是迈向巨大飞跃的第一小步。

项目介绍

👋 欢迎来到Atlick商学院的知识问答系统项目!这个项目旨在构建一个基于ChatGPT和MySQL数据库的问答系统,以回答关于学院内部知识的特定问题。我们将使用开放AI的函数调用来使ChatGPT能够调用数据库,并返回准确的答案。这个项目将帮助你掌握NLP和使用开放AI构建类似系统的技能。

构建项目的架构

🏗️ 为了构建这个项目,我们需要按照以下步骤进行操作:

  1. 设置MySQL数据库:我们将使用MySQL数据库存储学生的信息,例如分数、费用等。在这一步中,我们将创建数据库和表,并插入示例数据。

  2. 编写OpenAI函数调用代码:我们将使用OpenAI的函数调用功能,让ChatGPT能够调用我们的数据库并返回答案。我们将编写Python代码来实现这一功能,并设置必要的参数。

  3. 创建DB助手模块:为了更好地组织和管理与数据库交互的代码,我们将创建一个DB助手模块。这个模块将包含用于查询数据库和返回结果的函数。

  4. 创建OpenAI助手模块:为了更好地组织和管理与OpenAI函数调用的代码,我们将创建一个OpenAI助手模块。这个模块将包含用于调用OpenAI函数和处理返回结果的函数。

  5. 构建Streamlit前端界面:为了让用户能够方便地与问答系统进行交互,我们将使用Streamlit框架构建一个简单但直观的前端界面。这个界面将包含一个文本输入框和一个显示答案的标签。

  6. 运行并测试应用程序:最后,我们将运行应用程序并测试其功能。我们将输入一些问题,看看系统是否能正确地回答这些问题,并返回准确的结果。

使用MySQL数据库

💾 在这个项目中,我们将使用MySQL数据库来存储学生的信息,例如分数和费用。在这一步中,我们将创建一个MySQL数据库,并创建一个名为fees的表和一个名为marks的表。

首先,我们需要安装MySQL并设置您的数据库连接。接下来,我们将使用以下SQL脚本创建表:

CREATE TABLE fees (
  student_name VARCHAR(50),
  semester INT,
  total_fees DECIMAL(10,2),
  amount_paid DECIMAL(10,2)
);

CREATE TABLE marks (
  student_name VARCHAR(50),
  semester INT,
  gpa DECIMAL(2,1)
);

然后,我们将插入一些示例数据:

INSERT INTO fees (student_name, semester, total_fees, amount_paid)
VALUES ('Bill Gates', 2, 6000.00, 6000.00),
       ('Elon Musk', 2, 6000.00, 2000.00);

INSERT INTO marks (student_name, semester, gpa)
VALUES ('Bill Gates', 2, 3.0),
       ('Elon Musk', 2, 2.7);

现在,我们的数据库架构和示例数据已经准备好了。

编写OpenAI函数调用代码

🤖 在这个步骤中,我们将编写用于调用OpenAI函数的Python代码。我们将使用OpenAI GPT-3模型来回答一般性问题,并使用自定义函数来回答与Atlick商学院数据库相关的特定问题。

首先,我们需要导入必要的Python包和模块:

import openai
import json

然后,我们需要设置OpenAI的API密钥,在此之前,请确保已经按照OpenAI官方文档的说明进行了安装和设置:

openai.api_key = "YOUR_API_KEY"

现在,我们可以编写一个函数来调用OpenAI函数并获取答案:

def get_answer(question):
    messages = [
        {
            "role": "user",
            "content": question
        }
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages
    )

    answer = response["choices"][0]["message"]["content"]

    return answer

在这个函数中,我们将用户问题作为参数传递,并将其包装在messages列表中。然后,我们使用openai.ChatCompletion.create方法调用OpenAI函数来获取答案。最后,我们返回答案。

创建DB助手模块

💻 为了更好地组织和管理与数据库交互的代码,我们将创建一个名为db_helper.py的模块。在这个模块中,我们将定义用于查询数据库和返回结果的函数。

首先,我们需要导入必要的Python包和模块:

import mysql.connector

然后,我们可以编写与数据库交互的函数。这里是一些示例函数:

def get_fees(student_name, semester):
    # TODO: Implement function to get fees from database
    pass

def get_marks(student_name, semester):
    # TODO: Implement function to get marks from database
    pass

在这些函数中,我们将使用Python的MySQL连接器进行数据库查询,并返回相应的结果。

创建OpenAI助手模块

💡 为了更好地组织和管理与OpenAI函数调用的代码,我们将创建一个名为openai_helper.py的模块。在这个模块中,我们将定义用于调用OpenAI函数和处理返回结果的函数。

首先,我们需要导入必要的Python包和模块:

import openai

然后,我们可以编写用于调用OpenAI函数和处理返回结果的函数。这里是一些示例函数:

def call_openai_function(question):
    # TODO: Implement function to call OpenAI function
    pass

def get_function_name(response):
    # TODO: Implement function to extract function name from response
    pass

def get_function_arguments(response):
    # TODO: Implement function to extract function arguments from response
    pass

def call_database_function(function_name, function_arguments):
    # TODO: Implement function to call database function and return result
    pass

def format_response(response):
    # TODO: Implement function to format response for display
    pass

在这些函数中,我们将使用OpenAI的模型来调用函数,并使用Python代码处理返回的结果。我们将提取函数名和函数参数,并使用这些信息来调用数据库函数。最后,我们将对返回的结果进行格式化,以便在前端界面上进行显示。

构建Streamlit前端界面

🎨 为了让用户能够方便地与问答系统进行交互,我们将使用Streamlit框架构建一个简单但直观的前端界面。在这个界面中,用户可以输入问题,并在界面上看到返回的答案。

首先,我们需要导入必要的Python包和模块:

import streamlit as st
from openai_helper import call_openai_function, format_response

然后,我们可以开始构建前端界面。在这个界面中,我们将添加一个文本输入框和一个用于显示答案的标签。

st.title("Atlick College Q&A System")

question = st.text_input("Ask a question")

if question:
    answer = call_openai_function(question)
    formatted_answer = format_response(answer)

    st.subheader("Answer:")
    st.write(formatted_answer)

在这段代码中,我们使用st.title函数添加了一个标题。然后,我们使用st.text_input函数添加了一个文本输入框,允许用户输入问题。如果用户输入了问题,我们将调用OpenAI函数来获取答案,并将答案格式化后显示在界面上。

运行并测试应用程序

🚀 最后,我们只需要运行我们的应用程序并测试其功能。我们可以使用以下命令来运行应用程序:

streamlit run main.py

一旦应用程序运行起来,我们就可以输入一些问题并查看系统是否能正确地回答这些问题。

📝 在这个项目中,我们构建了一个基于ChatGPT和MySQL数据库的问答系统。通过集成OpenAI的函数调用功能,我们使ChatGPT能够调用数据库并返回准确的答案。这个项目将帮助您熟悉NLP和使用开放AI构建类似系统的技能。祝您好运!

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.