TALLER_1_3 / app.py
thejarll's picture
Update app.py
af7d84f verified
raw
history blame
2.16 kB
import gradio as gr
import os
import pickle
import numpy as np
import faiss
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import torch
from sentence_transformers import SentenceTransformer
# Carga del índice FAISS y los chunks de texto
with open("index.pkl", "rb") as f:
index, chunks = pickle.load(f)
# Modelo de embeddings (debe coincidir con el usado en indexador.py)
embedder = SentenceTransformer("jinaai/jina-embeddings-v2-base-es")
# Modelo LLM (LLaMA o similar)
llm = pipeline(
"text-generation",
model="meta-llama/Llama-3.2-3B-Instruct",
device_map="auto",
torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,
token=os.getenv("HF_KEY"),
trust_remote_code=True
)
def responder(pregunta):
pregunta_embedding = embedder.encode([pregunta])
_, indices = index.search(np.array(pregunta_embedding).reshape(1, -1), k=50)
result_chunks = [chunks[i] for i in indices[0]]
contexto_final = "\n\n".join(result_chunks[:3])
prompt = f"""
Actúa como un asesor legal colombiano, especializado en el Código de Tránsito, Código de Policía y Código Penal.
Tu tarea es analizar el siguiente contexto legal y responder la pregunta de forma clara, completa y profesional.
Instrucciones:
- Usa un lenguaje formal y comprensible.
- Cita artículos o sanciones si están presentes en el contexto.
- No inventes leyes que no están en el texto.
- Si no hay suficiente contexto, responde:
"No encontré información suficiente en la ley para responder a esta pregunta."
Contexto legal:
{contexto_final}
Pregunta:
{pregunta}
Respuesta:
"""
output = llm(prompt, max_new_tokens=400, temperature=0.4)[0]["generated_text"]
return output.split("Respuesta:")[-1].strip() if "Respuesta:" in output else output.strip()
# Interfaz Gradio
demo = gr.Interface(
fn=responder,
inputs=gr.Textbox(lines=2, label="Escribe tu pregunta"),
outputs=gr.Textbox(label="Respuesta generada"),
title="Asistente Legal Colombiano",
description="Consulta el Código de Tránsito, Código de Policía y Código Penal colombiano.",
theme="default"
)
demo.launch()