khulnasoft's picture
Upload 48 files
9b674e9 verified
# 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__)
@app.route("/input", methods=["POST"])
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})
@app.route("/screenshot", methods=["POST"])
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})
@app.route("/tts", methods=["POST"])
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"})
@app.route("/profile", methods=["POST"])
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})
@app.route("/reset_memory", methods=["POST"])
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"})
@app.route("/activate_predefined_agents", methods=["POST"])
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"})
@app.route("/deactivate_predefined_agents", methods=["POST"])
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"})
@app.route("/activate_online_tools", methods=["POST"])
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"})
@app.route("/deactivate_online_tools", methods=["POST"])
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")