File size: 2,934 Bytes
594c559
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import logging

import requests
import os, shutil
from flask import Flask, send_from_directory, request, jsonify

app = Flask(__name__, static_folder='online_log/static')

app.logger.setLevel(logging.ERROR)

log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)

messages = []
import threading
from urllib.parse import  parse_qs

FILE_DIR = os.path.dirname(os.path.abspath(__file__))
OUTPUT_DIR = os.path.join(FILE_DIR, "WareHouse")
def check_outdir():
    if not os.path.exists(OUTPUT_DIR):
        os.mkdir(OUTPUT_DIR)
    else:
        shutil.rmtree(OUTPUT_DIR)
        os.mkdir(OUTPUT_DIR)


def zip_all_files():
    shutil.make_archive("online_log/static/Outputs", "zip", OUTPUT_DIR)


def clear_all_files():
    shutil.rmtree(OUTPUT_DIR)
    os.mkdir(OUTPUT_DIR)


def send_msg(role, text):
    try:
        data = {"role": role, "text": text}
        response = requests.post("http://127.0.0.1:7860/send_message", json=data)
        if response.status_code == 200:
            print("Message sent successfully!")
        else:
            print("Failed to send message.")
    except:
        logging.info("flask app.py did not start for online log")


@app.route("/")
def index():
    return send_from_directory("online_log/static", "index.html")

@app.route("/Outputs.zip")
def Outputs():
    return send_from_directory("online_log/static", "Outputs.zip")

@app.route("/chain_visualizer")
def chain_visualizer():
    return send_from_directory("online_log/static", "chain_visualizer.html")

@app.route("/replay")
def replay():
    return send_from_directory("online_log/static", "replay.html")

@app.route("/download")
def download():
    return send_from_directory("online_log/static", "index.html")

@app.route("/get_messages")
def get_messages():
    return jsonify(messages)


@app.route("/send_message", methods=["POST"])
def send_message():
    data = request.get_json()
    role = data.get("role")
    text = data.get("text")

    avatarUrl = find_avatar_url(role)

    message = {"role": role, "text": text, "avatarUrl": avatarUrl}
    messages.append(message)
    return jsonify(message)


@app.post("/download")
def run():
    data = request.get_data().decode('utf-8')
    query_params = parse_qs(data)
    task = query_params['task'][0].replace("+", " ")
    config = query_params['config'][0]
    api_key = query_params['api_key'][0]
    os.environ["OPENAI_API_KEY"] = api_key
    check_outdir()
    from run import runchatdev
    # apper = threading.Thread(target=runchatdev, args=[task, config])
    # apper.setDaemon(True)
    # apper.start()
    runchatdev(task, config)
    zip_all_files()
    return send_from_directory("online_log/static", "index.html")

def find_avatar_url(role):
    role = role.replace(" ", "%20")
    avatar_filename = f"avatars/{role}.png"
    avatar_url = f"/static/{avatar_filename}"
    return avatar_url


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7860)