|
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) |