diff --git a/py/api.py b/py/api.py index 413f951..d3db341 100644 --- a/py/api.py +++ b/py/api.py @@ -4,6 +4,7 @@ from transformers import AutoTokenizer, LlamaForCausalLM class API: + # This method processes a message via transformers. (NOT FINISHED!) @staticmethod def process_text_transformers(prompt, model): model = LlamaForCausalLM.from_pretrained(model) @@ -14,6 +15,7 @@ class API: generate_ids = model.generate(inputs.input_ids, max_length=30) return tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0] + # This method processes a message via ollama @staticmethod def process_text_local(prompt, model): ollama_url = "http://localhost:11434" @@ -34,6 +36,7 @@ class API: else: return "Error: " + response.text + # This method sends a message to a certain AI. def send_message(self, message, model): if model == 1: answer = self.process_text_local(message, "phi3.5") diff --git a/py/static/index.html b/py/templates/index.html similarity index 80% rename from py/static/index.html rename to py/templates/index.html index d688702..3425d0a 100644 --- a/py/static/index.html +++ b/py/templates/index.html @@ -71,19 +71,22 @@
-
User: What is the weather today?
-
AI: It's sunny with a slight breeze.
-
User: Great! Thank you!
-
AI: You're welcome!
+ {% for message in messages %} + {% if message.startswith('User:') %} +
{{ message }}
+ {% else %} +
{{ message }}
+ {% endif %} + {% endfor %}
-
- - - -
+
+ + + +
diff --git a/py/venv.sh b/py/venv.sh index f710380..3d70f23 100755 --- a/py/venv.sh +++ b/py/venv.sh @@ -5,3 +5,6 @@ source venv/bin/activate pip install transformers pip install torch pip install flask +pip install SpeechRecognition +pip install pyaudio +pip install pocketsphinx diff --git a/py/web_flask.py b/py/web_flask.py index ce616ed..cf200dc 100644 --- a/py/web_flask.py +++ b/py/web_flask.py @@ -1,14 +1,35 @@ -from flask import Flask, send_from_directory +from flask import Flask, request, render_template +from api import API +from voice_recognition import Voice + +APP = Flask(__name__) +api = API() +voice = Voice() + +messages = [] -class WebHost: - @staticmethod - def main_page(): - app = Flask(__name__) +# 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 - @app.route('/') - def index(): - return app.send_static_file('index.html') + if request.method == 'POST': + option = request.form['option'] - if __name__ == '__main__': - app.run(debug=True) + 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}") + + ai_response = "AI: " + api.send_message(user_message, 1) + messages.append(ai_response) + + return render_template('index.html', messages=messages) + + +if __name__ == '__main__': + APP.run(debug=True) \ No newline at end of file