zuul_glz / app.py
Olivier-Truong's picture
Update app.py
e4e0ef2 verified
from flask import *
from gradio_client import Client
from hashlib import sha3_512
class QwenClient:
def __init__(self):
self.url = "https://qwen-qwen2-72b-instruct.hf.space/"
self.client = Client(self.url)
self.history = []
self.system_prompt = ""
def predict(self, prompt: str, system_prompt: str = ""):
if system_prompt != "":
self.set_system_prompt(system_prompt)
_, self.history, system = self.client.predict(
prompt,
self.history,
self.system_prompt,
api_name="/model_chat"
)
return self.history[-1][-1]
def clear(self):
_, self.history = self.client.predict(
api_name="/clear_session"
)
def set_system_prompt(self, system_prompt: str):
_, self.system_prompt, self.history = self.client.predict(
system_prompt,
api_name="/modify_system_session"
)
app = Flask(__name__)
app.config["qwen_client"] = QwenClient()
@app.route("/")
def index():
return "Hello, World!"
@app.route("/predict", methods=["GET", "POST"])
def predict():
if request.method == "POST":
token = request.headers.get("Token")
if token != None:
if sha3_512(token.encode()).hexdigest() != "9b3976e38d43c561789976e377a11810a9131221b863fc54c812738230a94f354dba516a0003ef88c8efd5a1ccb12a2b72fb90d5e91aa8cbc6fe3fe2f3af5e4f":
return "Invalid token"
else:
prompt = request.data.decode()
try:
qwen_client = app.config["qwen_client"]
result = qwen_client.predict(prompt)
return result
except Exception as e:
print(f"Error: {str(e)}")
app.config["qwen_client"] = QwenClient()
qwen_client = app.config["qwen_client"]
result = qwen_client.predict(prompt)
return result
else:
return "Token not provided"
else:
return "API use POST method only"
app.run(host="0.0.0.0", port=7860)