File size: 2,636 Bytes
c3b3ec1
 
 
 
 
d53afe3
 
c3b3ec1
d53afe3
c3b3ec1
 
 
 
 
d53afe3
c3b3ec1
 
 
 
 
 
 
 
 
 
 
 
d53afe3
c3b3ec1
 
d53afe3
 
 
 
c3b3ec1
 
 
7f7bdb6
c3b3ec1
 
 
d53afe3
c3b3ec1
d53afe3
 
c3b3ec1
 
 
 
 
 
 
 
 
 
 
 
d53afe3
c3b3ec1
 
 
 
 
 
 
 
 
 
 
 
 
d53afe3
c3b3ec1
 
 
 
d53afe3
c3b3ec1
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import os
from flask import Flask, request, jsonify, render_template
import PyPDF2
from openai import OpenAI

# Crea la aplicaci贸n Flask, especificando la ruta de la carpeta de plantillas
app = Flask(__name__, template_folder='.')

# Lee la clave de API desde una variable de entorno
client = OpenAI(
    api_key=os.environ.get("OPENAI_API_KEY"),
)

def extract_text_from_file(file):
    # ... (tu c贸digo de la funci贸n extract_text_from_file)
    if file.filename.endswith('.pdf'):
        pdf_reader = PyPDF2.PdfReader(file)
        text = ""
        for page in pdf_reader.pages:
            text += page.extract_text()
        return text
    
    elif file.filename.endswith('.txt'):
        return file.read().decode('utf-8')
    return ""

def generate_summary_openai(text):
    # ... (tu c贸digo de la funci贸n generate_summary_openai)
    try:
        prompt_text = (
            "Eres un asistente experto en resumir documentos. "
            "Genera un resumen del siguiente texto en 5 puntos clave, utilizando vi帽etas. "
            "Aseg煤rate de que cada punto sea conciso y capture una idea central."
            f"Texto: {text}"
        )

        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": prompt_text}
            ],
            max_tokens=250,
            n=1,
            stop=None,
            temperature=0.7,
        )
        
        summary_raw = response.choices[0].message.content.strip()
        summary_points = [line.strip() for line in summary_raw.split('\n') if line.strip()]
        return summary_points
        
    except Exception as e:
        print(f"Error al llamar a la API de OpenAI: {e}")
        return ["Error al generar el resumen. Por favor, verifica tu clave de API o intenta de nuevo."]

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/summarize', methods=['POST'])
def summarize():
    if 'file' not in request.files:
        return jsonify({'error': 'No se ha subido ning煤n archivo.'}), 400
    
    file = request.files['file']
    if file.filename == '':
        return jsonify({'error': 'No se ha seleccionado ning煤n archivo.'}), 400

    try:
        raw_text = extract_text_from_file(file)
        if not raw_text:
            return jsonify({'error': 'No se pudo extraer texto del archivo.'}), 400
            
        summary = generate_summary_openai(raw_text)
        return jsonify({'summary': summary})
    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True)