Spaces:
Runtime error
Runtime error
# Create a python api and start_api function via flask | |
from flask import Flask, request, jsonify | |
import threading | |
import time | |
from werkzeug.serving import make_server | |
app = Flask(__name__) | |
def input(): | |
""" | |
This function receives input from the user and returns the response. | |
""" | |
data = request.json | |
text = data["text"] | |
screen = data["screen"] | |
talk = data["talk"] | |
print("Input:", text) | |
from .gpt_computer_assistant import the_main_window, the_input_box | |
firsst_text = the_input_box.toPlainText() | |
if talk == "true": | |
the_main_window.api_enabled = False | |
the_main_window.manuel_stop = True | |
if screen != "true": | |
the_main_window.button_handler.input_text(text) | |
else: | |
the_main_window.button_handler.input_text_screenshot(text) | |
while the_input_box.toPlainText() == firsst_text: | |
time.sleep(0.3) | |
while the_input_box.toPlainText().startswith("System:"): | |
time.sleep(0.3) | |
response = the_input_box.toPlainText() | |
if talk == "true": | |
the_main_window.api_enabled = True | |
return jsonify({"response": response}) | |
def screenshot(): | |
""" | |
This function receives a screenshot from the user and returns the response. | |
""" | |
from .gpt_computer_assistant import the_main_window, the_input_box | |
firsst_text = the_input_box.toPlainText() | |
the_main_window.button_handler.just_screenshot() | |
while the_input_box.toPlainText() == firsst_text: | |
time.sleep(0.3) | |
while the_input_box.toPlainText().startswith("System:"): | |
time.sleep(0.3) | |
response = the_input_box.toPlainText() | |
return jsonify({"response": response}) | |
def tts(): | |
""" | |
This function receives a text to speech request from the user and returns the response. | |
""" | |
from .gpt_computer_assistant import the_main_window, the_input_box | |
the_main_window.api_enabled = False | |
the_main_window.manuel_stop = True | |
data = request.json | |
text = data["text"] | |
print("TTS:", text) | |
from .agent.process import tts_if_you_can | |
tts_if_you_can(text, not_threaded=True, status_edit=True) | |
the_main_window.api_enabled = True | |
return jsonify({"response": "TTS request received"}) | |
def profile(): | |
""" | |
This function sets the profile for the application. | |
""" | |
data = request.json | |
profile = data["profile"] | |
print("Profile:", profile) | |
from .utils.db import set_profile | |
set_profile(profile) | |
from .gpt_computer_assistant import the_main_window | |
the_main_window.update_from_thread("Profile set to "+profile) | |
return jsonify({"response": "Profile set to "+profile}) | |
def reset_memory(): | |
""" | |
This function resets the memory of the application. | |
""" | |
from .agent.chat_history import clear_chat_history | |
clear_chat_history() | |
from .gpt_computer_assistant import the_main_window | |
the_main_window.update_from_thread("Memory reset") | |
return jsonify({"response": "Memory reset"}) | |
def enable_predefined_agents(): | |
""" | |
This function enables predefined agents for the application. | |
""" | |
from .utils.db import activate_predefined_agents_setting | |
activate_predefined_agents_setting() | |
from .gpt_computer_assistant import the_main_window | |
the_main_window.update_from_thread("Predefined agents enabled") | |
return jsonify({"response": "Predefined agents enabled"}) | |
def disable_predefined_agents(): | |
""" | |
This function disables predefined agents for the application. | |
""" | |
from .utils.db import deactivate_predefined_agents_setting | |
deactivate_predefined_agents_setting() | |
from .gpt_computer_assistant import the_main_window | |
the_main_window.update_from_thread("Predefined agents disabled") | |
return jsonify({"response": "Predefined agents disabled"}) | |
def enable_online_tools(): | |
""" | |
This function enables online tools for the application. | |
""" | |
from .utils.db import activate_online_tools_setting | |
activate_online_tools_setting() | |
from .gpt_computer_assistant import the_main_window | |
the_main_window.update_from_thread("Online tools enabled") | |
return jsonify({"response": "Online tools enabled"}) | |
def disable_online_tools(): | |
""" | |
This function disables online tools for the application. | |
""" | |
from .utils.db import deactivate_online_tools_setting | |
deactivate_online_tools_setting() | |
from .gpt_computer_assistant import the_main_window | |
the_main_window.update_from_thread("Online tools disabled") | |
return jsonify({"response": "Online tools disabled"}) | |
class ServerThread(threading.Thread): | |
def __init__(self, app, host, port): | |
threading.Thread.__init__(self) | |
self.srv = make_server(host, port, app) | |
self.ctx = app.app_context() | |
self.ctx.push() | |
def run(self): | |
print("Starting server") | |
self.srv.serve_forever() | |
def shutdown(self): | |
print("Stopping server") | |
self.srv.shutdown() | |
server_thread = None | |
def start_api(): | |
global server_thread | |
if server_thread is None: | |
server_thread = ServerThread(app, "localhost", 7541) | |
server_thread.start() | |
print("API started") | |
else: | |
print("API is already running") | |
def stop_api(): | |
global server_thread | |
if server_thread is not None: | |
server_thread.shutdown() | |
server_thread.join() | |
server_thread = None | |
print("API stopped") | |
else: | |
print("API is not running") | |