vl / app.py
BuiMinh's picture
Create app.py
2271ffb verified
from flask import Flask, request, jsonify, Response
from gradio_client import Client
import tempfile
import os
import json
app = Flask(__name__)
client = Client("Qwen/Qwen2.5-VL-72B-Instruct")
@app.route('/')
def home():
return "Minopy"
@app.route('/add_text', methods=['POST'])
def add_text():
data = request.json
text = data.get('text')
history = data.get('history', [])
result = client.predict(history=history, text=text, api_name="/add_text")
return jsonify(result)
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
_chatbot = data.get('_chatbot', [])
job = client.submit(_chatbot=_chatbot, api_name="/predict")
def generate():
previous_response = ""
for result in job:
latest_entry = result[-1]
model_response = latest_entry[1]
if model_response != previous_response:
new_text = model_response[len(previous_response):]
previous_response = model_response
yield new_text
return Response(generate(), content_type='text/plain')
@app.route('/reset_user_input', methods=['POST'])
def reset_user_input():
result = client.predict(api_name="/reset_user_input")
return jsonify(result)
@app.route('/reset_state', methods=['POST'])
def reset_state():
result = client.predict(api_name="/reset_state")
return jsonify(result)
@app.route('/regenerate', methods=['POST'])
def regenerate():
data = request.json
_chatbot = data.get('_chatbot', [])
job = client.submit(_chatbot=_chatbot, api_name="/regenerate")
def generate():
previous_response = ""
for result in job:
latest_entry = result[-1]
model_response = latest_entry[1]
if model_response != previous_response:
new_text = model_response[len(previous_response):]
previous_response = model_response
yield new_text
return Response(generate(), content_type='text/plain')
@app.route('/add_file', methods=['POST'])
def add_file():
history = json.loads(request.form.get('history', '[]'))
file = request.files['file']
temp_path = os.path.join(tempfile.gettempdir(), file.filename)
file.save(temp_path)
try:
result = client.predict(
history=history,
file=temp_path,
api_name="/add_file"
)
finally:
os.remove(temp_path)
return jsonify(result)
if __name__ == '__main__':
app.run(host="0.0.0.0", port=7860, debug=False)