zebons / app.py
Noomes0's picture
init project
29505df verified
Raw
History Blame Contribute Delete
9.46 kB
import os
import uuid
from flask import Flask, request, jsonify, render_template
from werkzeug.utils import secure_filename
from utils.file_to_text import process_file
from utils.llm import *
import utils.search_article as sa
import utils.lit_obr as lt
application = Flask(__name__)
ALLOWED_EXTENSIONS = {'pdf', 'txt', 'csv', 'docx'}
UPLOAD_FOLDER = os.path.join(application.root_path, "uploads")
application.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER
uploaded_text = {}
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@application.route('/')
def home():
return render_template('index.html')
@application.route('/process', methods=['POST'])
def process_files():
if 'files' not in request.files:
return jsonify({"result": "No files part in the request"}), 400
uploaded_files = request.files.getlist('files')
if not uploaded_files:
return jsonify({"result": "No files selected"}), 400
session_id = str(uuid.uuid4())
session_data = {"text": "", "images": []}
for file in uploaded_files:
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
filepath = os.path.join(application.config['UPLOAD_FOLDER'], filename)
file.save(filepath)
text, images = process_file(filepath)
if text is not None:
session_data["text"] += f"\n\nСтатья название ниже ----------\n" + text
session_data["images"].extend(images)
else:
return jsonify({"result": f"Unsupported file type: {filename}"}), 400
uploaded_text[session_id] = session_data
return jsonify({
"result": "Files processed successfully",
"session_id": session_id,
"text_preview": session_data["text"]
})
@application.route('/summarize', methods=['POST'])
def summarize():
data = request.json
session_id = data.get('session_id')
percentage = data.get('percentage')
preferences = data.get('preferences')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
summarized_text = init_summ(text, preferences, images, percentage)
return jsonify({
"result": summarized_text
})
else:
return jsonify({"result": "No uploaded text found."}), 400
@application.route('/question', methods=['POST'])
def ask_question():
data = request.json
session_id = data.get('session_id')
question = data.get('question')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
# Вопрос-ответ
answer= init_qa(text, question, images)
return jsonify({
"result": answer,
})
else:
return jsonify({"result": "No uploaded text found."}), 400
@application.route('/article-recommendation', methods=['POST'])
def article_recommendation():
data = request.json
session_id = data.get('session_id')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
topics, result_article_json = sa.init(text , images)
return jsonify({
"topics": topics,
"articles": result_article_json
})
else:
return jsonify({"result": "No uploaded text found."}), 400
@application.route('/literature-review', methods=['POST'])
def l_r():
data = request.json
session_id = data.get('session_id')
criteria = data.get('criteria')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
ret = lt.init(text , criteria)
return ret
else:
return {"result": "No uploaded text found."}, 400
if __name__ == '__main__':
application.run(host='0.0.0.0', port=5000, debug=True)
'''import os
import uuid # Для генерации уникальных session_id
from flask import Flask, request, jsonify, render_template
from werkzeug.utils import secure_filename
from utils.file_to_text import process_file
from utils.new_bek import *
application = Flask(__name__)
# Настройки
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'pdf', 'txt', 'csv', 'docx'}
application.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
uploaded_text = {}
# Создаем папку для загрузки файлов, если её нет
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
# Функция для проверки допустимых расширений файлов
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@application.route('/')
def home():
return render_template('new_index.html')
# Эндпоинт для загрузки файлов
@application.route('/process', methods=['POST'])
def process_files():
if 'files' not in request.files:
return jsonify({"result": "No files part in the request"}), 400
uploaded_files = request.files.getlist('files')
if not uploaded_files:
return jsonify({"result": "No files selected"}), 400
# Создаем уникальный session_id для пользователя
session_id = str(uuid.uuid4())
# Инициализируем данные для этой сессии
session_data = {"text": "", "images": []}
for file in uploaded_files:
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
filepath = os.path.join(application.config['UPLOAD_FOLDER'], filename)
file.save(filepath) # Сохраняем файл на сервер
# Извлечение текста и изображений
text, images = process_file(filepath)
if text is not None:
session_data["text"] += f"\n\nСтатья название ниже ----------\n" + text # Добавляем текст в общую строку
session_data["images"].extend(images) # Добавляем изображения
else:
return jsonify({"result": f"Unsupported file type: {filename}"}), 400
# Сохраняем данные в глобальный объект uploaded_text
uploaded_text[session_id] = session_data
return jsonify({
"result": "Files processed successfully",
"session_id": session_id,
"text_preview": session_data["text"]
})
@application.route('/summarize', methods=['POST'])
def summarize():
data = request.json
session_id = data.get('session_id')
percentage = data.get('percentage') # Процент сжатия
preferences = data.get('preferences')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
# Передаем данные в функцию суммаризации
summarized_text = summarize_text(text, preferences, images, percentage)
return jsonify({
"result": summarized_text['Summary']
})
else:
return jsonify({"result": "No uploaded text found."}), 400
@application.route('/question', methods=['POST'])
def ask_question():
data = request.json
session_id = data.get('session_id')
question = data.get('question')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
# Вопрос-ответ
answer= answer_question(text, question, images)
return jsonify({
"result": answer['Answer'],
})
else:
return jsonify({"result": "No uploaded text found."}), 400
@application.route('/article-recommendation', methods=['POST'])
def article_recommendation():
data = request.json
session_id = data.get('session_id')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
# Рекомендация статей
topics, result_article_json = search_article(text)
return jsonify({
"topics": topics,
"articles": result_article_json # Return articles with topics
})
else:
return jsonify({"result": "No uploaded text found."}), 400
@application.route('/literature-review', methods=['POST'])
def l_r():
data = request.json
session_id = data.get('session_id')
criteria = data.get('criteria')
if session_id in uploaded_text:
text = uploaded_text[session_id]["text"]
images = uploaded_text[session_id]["images"]
ret = literature_review(text , criteria)
return ret
else:
return {"result": "No uploaded text found."}, 400
if __name__ == '__main__':
application.run(host='0.0.0.0')
'''