Prueba_2 / app.py
JaphetHernandez's picture
Update app.py
85ad972 verified
from llama_index.llms.HuggingFaceLLM import HuggingFaceLLM
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.indexes import RagIndex
from langchain.retrievers import HuggingFaceRetriever
# Inicializar el modelo LLaMA 3.2 desde Hugging Face usando HuggingFaceLLM
llm = HuggingFaceLLM.from_pretrained("meta-llama/Llama-3.2", model_kwargs={"temperature": 0})
# Crear un prompt para la similitud de coseno
prompt_template = (
"Dado el siguiente par de frases, calcula la similitud de coseno: "
"Frase 1: '{phrase_1}' y Frase 2: '{phrase_2}'. "
"Proporciona solo el puntaje de similitud de coseno como un número entre 0 y 1."
)
# Crear el template de prompt
prompt = PromptTemplate.from_template(prompt_template)
# Crear un RAG Index usando LangChain y Hugging Face Retriever
retriever = HuggingFaceRetriever.from_pretrained(
"facebook/rag-token-nq", index_name="exact"
)
index = Ra
'''
import pandas as pd
from langchain.chains import LLMChain, RAGChain
from langchain.prompts import PromptTemplate
from langchain_community.llms import HuggingFaceHub
from langchain.llms.rag import RagIndex
import streamlit as st
import sys
import re
from transformers import LlamaForCausalLM, AutoTokenizer
from huggingface_hub import login
# Inicialización de Hugging Face
huggingface_token = st.secrets["SECRET"]
login(huggingface_token)
# Cargar archivo CSV
uploaded_file = st.file_uploader("Sube un archivo CSV con la columna 'job_title':", type=["csv"])
if uploaded_file:
df = pd.read_csv(uploaded_file)
st.dataframe(df)
query = "aspiring human resources specialist"
# Modelo LLaMA
model_name = "meta-llama/Llama-3.2-1B"
modelo = LlamaForCausalLM.from_pretrained(model_name)
# Tokenizador
try:
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
print("Tokenizador cargado con éxito.")
except Exception as e:
print(f"Error al cargar el tokenizador: {e}")
sys.exit(1)
# Prompt para cadena LLM
prompt_template = PromptTemplate(
input_variables=["query", "texto"],
template=(
"Calcular el cosine similarity score entre '{query}' y '{texto}'. "
"Responde solo con un número entre 0 y 1 en formato float, sin texto adicional."
)
)
# Cargar índice RAG
rag_index = RagIndex.from_huggingface("meta-llama/Llama-3.2-1B")
# Crear cadena RAG
llm = HuggingFaceHub(repo_id=model_name, huggingfacehub_api_token=huggingface_token, model_kwargs={"max_new_tokens": 3})
rag_chain = RAGChain(llm=llm, index=rag_index, prompt=prompt_template)
def calcular_similitud(texto):
prompt = {"query": query, "texto": texto}
resultado = rag_chain.run(prompt)
print("Resultado del modelo:", resultado)
match = re.search(r"\b(0\.\d+|1\.0)\b", resultado)
if match:
score = float(match.group(1))
return score
else:
st.error(f"No se pudo extraer el puntaje de similitud: {resultado}")
return None
# Calcular similitud para cada job title
df['Score'] = df['job_title'].apply(calcular_similitud)
# Reportar resultados
st.write(df)
else:
st.write("No se ha subido un archivo")
'''
'''
import pandas as pd
from langchain.chains import LLMChain
from langchain_huggingface import HuggingFacePipeline
from transformers import LlamaForCausalLM, AutoTokenizer
from langchain.llms import HuggingFaceHub
from huggingface_hub import login
import streamlit as st
import sys
# Inicialización de Hugging Face
huggingface_token = st.secrets["SECRET"]
login(huggingface_token)
# Cargar el archivo CSV
uploaded_file = st.file_uploader("Sube un archivo CSV con la columna 'job_title':", type=["csv"])
if uploaded_file:
df = pd.read_csv(uploaded_file)
st.dataframe(df)
# Ingreso del query
query = "aspiring human resources specialist"
# Crear un modelo LLaMA
model_name = "meta-llama/Llama-3.2-1B" # Usa un nombre de modelo válido en Hugging Face
modelo = LlamaForCausalLM.from_pretrained(model_name)
try:
# Usar AutoTokenizer para manejar automáticamente el tokenizador adecuado
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
print("Tokenizador cargado con éxito.")
except Exception as e:
print(f"Error al cargar el tokenizador: {e}")
sys.exit(1)
# Crear una cadena LLM con LangChain usando HuggingFaceHub
llm = HuggingFaceHub(repo_id=model_name, model_kwargs={"device_map": "auto"}, huggingfacehub_api_token=huggingface_token)
chain = LLMChain(llm=llm)
def calcular_similitud(texto):
prompt = f"Calcular el cosine similarity score entre '{query}' y '{texto}'. Responde con el score como un valor numérico entre 0 y 1."
resultado = chain.run(prompt)
return float(resultado)
# Calcular la similitud para cada job title
df['Score'] = df['job_title'].apply(calcular_similitud)
# Reportar los resultados
st.write(df)
else:
st.write("No se ha subido un archivo")
'''