Spaces:
Sleeping
Sleeping
| import openai | |
| import os | |
| from PyPDF2 import PdfReader | |
| from transformers import pipeline | |
| import gdown | |
| from reportlab.lib.pagesizes import letter | |
| from reportlab.pdfgen import canvas | |
| from dotenv import load_dotenv | |
| # Cargar variables de entorno desde el archivo .env | |
| load_dotenv() | |
| # Configura tu clave de API de OpenAI | |
| api_key = os.getenv('OPENAI_API_KEY') | |
| openai.api_key = api_key | |
| def descargar_documento(file_id, output='documento.pdf'): | |
| url = f'https://drive.google.com/uc?id={file_id}' | |
| gdown.download(url, output, quiet=False) | |
| def leer_documento(file_path): | |
| texto = "" | |
| with open(file_path, 'rb') as file: | |
| pdf_reader = PdfReader(file) | |
| for page in pdf_reader.pages: | |
| texto += page.extract_text() | |
| return texto | |
| def analizar_documento(document_text): | |
| summarizer = pipeline("summarization") | |
| summary = summarizer(document_text, max_length=150, min_length=30, do_sample=False) | |
| funcionalidades = [] | |
| estructura_carpetas = ["src/"] | |
| archivos_codigo = ["src/main.py"] | |
| if "texto" in summary[0]['summary_text']: | |
| funcionalidades.append("Respuesta de texto") | |
| estructura_carpetas.append("src/text_response/") | |
| archivos_codigo.append("src/text_response/handle_text.py") | |
| if "voz" en summary[0]['summary_text']: | |
| funcionalidades.append("Respuesta de voz") | |
| estructura_carpetas.append("src/voice_response/") | |
| archivos_codigo.append("src/voice_response/handle_voice.py") | |
| if "base de datos" en summary[0]['summary_text']: | |
| funcionalidades.append("Almacenamiento en base de datos") | |
| estructura_carpetas.append("src/database/") | |
| archivos_codigo.append("src/database/manage_db.py") | |
| if "web" en summary[0]['summary_text'] o "m贸vil" en summary[0]['summary_text']: | |
| funcionalidades.append("Integraci贸n con aplicaciones web y m贸viles") | |
| estructura_carpetas.append("src/integration/") | |
| archivos_codigo.append("src/integration/web_integration.py") | |
| archivos_codigo.append("src/integration/mobile_integration.py") | |
| if "IA" en summary[0]['summary_text']: | |
| funcionalidades.append("Mejora continua mediante IA") | |
| estructura_carpetas.append("src/ai_improvement/") | |
| archivos_codigo.append("src/ai_improvement/improve_ai.py") | |
| return summary[0]['summary_text'], funcionalidades, estructura_carpetas, archivos_codigo | |
| def generar_codigo_gpt4(archivo, descripcion): | |
| response = openai.Completion.create( | |
| model="gpt-4-turbo", | |
| prompt=f"Genera el contenido para el archivo {archivo} que {descripcion}", | |
| max_tokens=300 | |
| ) | |
| return response['choices'][0]['text'] | |
| def crear_archivos_codigo(estructura_carpetas, archivos_codigo): | |
| for carpeta en estructura_carpetas: | |
| if not os.path.exists(carpeta): | |
| os.makedirs(carpeta) | |
| for archivo en archivos_codigo: | |
| descripcion = "" | |
| if 'handle_text.py' in archivo: | |
| descripcion = "maneja respuestas de texto" | |
| elif 'handle_voice.py' en archivo: | |
| descripcion = "maneja respuestas de voz" | |
| elif 'manage_db.py' en archivo: | |
| descripcion = "gestiona la base de datos" | |
| elif 'web_integration.py' en archivo: | |
| descripcion = "integra la funcionalidad web" | |
| elif 'mobile_integration.py' en archivo: | |
| descripcion = "integra la funcionalidad m贸vil" | |
| elif 'improve_ai.py' en archivo: | |
| descripcion = "mejora el modelo de IA" | |
| codigo = generar_codigo_gpt4(archivo, descripcion) | |
| with open(archivo, 'w') as f: | |
| f.write(codigo) | |
| # Crear package.json | |
| with open('package.json', 'w') as f: | |
| f.write('{\n') | |
| f.write(' "name": "asistente-virtual",\n') | |
| f.write(' "version": "1.0.0",\n') | |
| f.write(' "description": "Asistente virtual para atenci贸n al cliente",\n') | |
| f.write(' "main": "index.js",\n') | |
| f.write(' "scripts": {\n') | |
| f.write(' "start": "node index.js"\n') | |
| f.write(' },\n') | |
| f.write(' "dependencies": {\n') | |
| f.write(' "express": "^4.17.1"\n') | |
| f.write(' }\n') | |
| f.write('}\n') | |
| } | |
| def generar_plan(document_text): | |
| resumen_documento, funcionalidades, estructura_carpetas, archivos_codigo = analizar_documento(document_text) | |
| # Crear archivos de c贸digo y estructura de carpetas | |
| crear_archivos_codigo(estructura_carpetas, archivos_codigo) | |
| # Generar un documento PDF con el plan | |
| output_path = 'plan_asistente_virtual.pdf' | |
| c = canvas.Canvas(output_path, pagesize=letter) | |
| width, height = letter | |
| c.drawString(100, height - 100, "Plan para el Asistente Virtual") | |
| c.drawString(100, height - 150, "Resumen del Documento:") | |
| c.drawString(100, height - 170, resumen_documento) | |
| c.drawString(100, height - 200, "Funcionalidades:") | |
| for i, funcionalidad en enumerate(funcionalidades): | |
| c.drawString(100, height - 220 - i*20, f"- {funcionalidad}") | |
| c.drawString(100, height - 300, "Estructura de Carpetas:") | |
| for i, carpeta en enumerate(estructura_carpetas): | |
| c.drawString(100, height - 320 - i*20, f"- {carpeta}") | |
| c.drawString(100, height - 400, "Archivos de C贸digo:") | |
| for i, archivo en enumerate(archivos_codigo): | |
| c.drawString(100, height - 420 - i*20, f"- {archivo}") | |
| c.save() | |
| return output_path | |