ai-virtual-assistant/py/web_flask.py
2024-09-17 13:49:52 +02:00

82 lines
1.9 KiB
Python
Executable file

from flask import Flask, request, render_template
from api import API
from voice_recognition import Voice
import sys
import threading
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import *
APP = Flask(__name__)
api = API()
voice = Voice()
messages = []
# The following method shows the user the GUI and does the backend connections to the API.
@APP.route('/', methods=['GET', 'POST'])
def index():
global messages
system_prompt = 'You are a helpful assistant.'
system = 'Your system prompt is: \"'+system_prompt+'\" The following is your chat log so far: \n'
if request.method == 'POST':
option = request.form['option']
user_message = request.form['user_message']
if option == "voice":
user_message = voice.listen()
messages.append(f"User: {user_message}")
elif option == "chat":
messages.append(f"User: {user_message}")
for line in messages:
system += line + '\n'
system += "The chat log is now finished."
ai_response = "AI: " + api.send_message(user_message, 4, system)
messages.append(ai_response)
return render_template('index.html', messages=messages)
@APP.route('/faq')
def faq():
return render_template('faq.html')
@APP.route('/documentation')
def contact():
return render_template('documentation.html')
if __name__ == '__main__':
qapp = QApplication(sys.argv)
view = QWebEngineView()
view.setGeometry(100, 100, 1280, 720)
view.setWindowTitle("InterstellarAI")
view.setUrl(QUrl("http://localhost:5000"))
view.show()
def run_flask():
APP.run()
def stop_flask():
thread.join()
qapp.quit()
thread = threading.Thread(target=run_flask)
thread.daemon = True
thread.start()
qapp.aboutToQuit.connect(stop_flask)
sys.exit(qapp.exec_())