Spaces:
Configuration error

chat / app.py
yonkasoft's picture
Create app.py
2ccc687 verified
raw
history blame
2.34 kB
from flask import Flask, request, jsonify
import pymongo
import requests
import json
from transformers import MT5ForConditionalGeneration, MT5Tokenizer
import torch
from torch.nn.functional import softmax
app = Flask(__name__)
# MongoDB bağlantısı
mongo_client = pymongo.MongoClient('mongodb://localhost:27017/')
db = mongo_client['EgitimDatabase']
collection = db['test']
# Model ve tokenizer'ı yükleme
model_name = "alan-turing-institute/mt5-large-finetuned-mnli-xtreme-xnli"
tokenizer = MT5Tokenizer.from_pretrained(model_name)
model = MT5ForConditionalGeneration.from_pretrained(model_name)
model.eval()
def process_nli(premise: str, hypothesis: str):
"""NLI formatına uygun hale getirir"""
return "".join(['xnli: premise: ', premise, ' hypothesis: ', hypothesis])
def generate_text(title, keywords, subheadings):
# Prompt oluşturma
prompt = f"Başlık: {title}\nAnahtar Kelimeler: {keywords}\nAlt Başlıklar: {subheadings}\n\nBu bilgilerle bir metin oluşturun:"
inputs = tokenizer(prompt, return_tensors="pt")
# Modelden çıktı alma
outputs = model.generate(**inputs, output_scores=True, return_dict_in_generate=True, num_beams=5)
generated_text = tokenizer.decode(outputs.sequences[0], skip_special_tokens=True)
return generated_text
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
title = data.get('title')
keywords = data.get('keywords')
subheadings = data.get('subheadings')
# MongoDB'den ilgili verileri çekme
query = {
'title': title,
'keywords': {'$in': keywords.split(',')},
'subheadings': {'$in': subheadings.split(',')}
}
documents = list(collection.find(query))
if not documents:
return jsonify({'error': 'No documents found matching the query'}), 404
# Verilerle metin oluşturma
generated_texts = []
for doc in documents:
generated_text = generate_text(doc['title'], doc['keywords'], doc['subheadings'])
generated_texts.append(generated_text)
# Sonuçları döndürme
response = {
'title': title,
'keywords': keywords,
'subheadings': subheadings,
'generated_texts': generated_texts
}
return jsonify(response)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)