Spaces:
Sleeping
Sleeping
JaphetHernandez
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -1,77 +1,76 @@
|
|
1 |
import pandas as pd
|
2 |
-
from langchain.chains import LLMChain
|
3 |
from langchain.prompts import PromptTemplate
|
4 |
-
|
5 |
-
from
|
6 |
-
from huggingface_hub import login
|
7 |
import streamlit as st
|
8 |
import sys
|
9 |
import re
|
10 |
-
from
|
|
|
11 |
|
12 |
-
# Inicialización de Hugging Face
|
13 |
huggingface_token = st.secrets["SECRET"]
|
14 |
login(huggingface_token)
|
15 |
|
16 |
-
# Cargar
|
17 |
uploaded_file = st.file_uploader("Sube un archivo CSV con la columna 'job_title':", type=["csv"])
|
18 |
|
19 |
if uploaded_file:
|
20 |
df = pd.read_csv(uploaded_file)
|
21 |
st.dataframe(df)
|
22 |
|
23 |
-
# Ingreso del query
|
24 |
query = "aspiring human resources specialist"
|
25 |
|
26 |
-
#
|
27 |
model_name = "meta-llama/Llama-3.2-1B"
|
28 |
modelo = LlamaForCausalLM.from_pretrained(model_name)
|
29 |
|
|
|
30 |
try:
|
31 |
-
# Usar AutoTokenizer para manejar automáticamente el tokenizador adecuado
|
32 |
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
|
33 |
print("Tokenizador cargado con éxito.")
|
34 |
except Exception as e:
|
35 |
print(f"Error al cargar el tokenizador: {e}")
|
36 |
sys.exit(1)
|
37 |
|
38 |
-
#
|
39 |
prompt_template = PromptTemplate(
|
40 |
input_variables=["query", "texto"],
|
41 |
template=(
|
42 |
"Calcular el cosine similarity score entre '{query}' y '{texto}'. "
|
43 |
-
"Responde solo con un número entre 0 y 1 en formato float, sin texto adicional.
|
44 |
)
|
45 |
)
|
46 |
|
47 |
-
#
|
|
|
|
|
|
|
48 |
llm = HuggingFaceHub(repo_id=model_name, huggingfacehub_api_token=huggingface_token, model_kwargs={"max_new_tokens": 3})
|
49 |
-
|
50 |
|
51 |
def calcular_similitud(texto):
|
52 |
prompt = {"query": query, "texto": texto}
|
53 |
-
resultado =
|
54 |
-
print("Resultado del modelo:", resultado)
|
55 |
|
56 |
-
|
57 |
-
match = re.search(r"\b(0\.\d+|1\.0)\b", resultado) # Solo números entre 0.0 y 1.0
|
58 |
if match:
|
59 |
score = float(match.group(1))
|
60 |
return score
|
61 |
else:
|
62 |
-
st.error(f"No se pudo extraer el puntaje de similitud
|
63 |
return None
|
64 |
|
65 |
-
# Calcular
|
66 |
df['Score'] = df['job_title'].apply(calcular_similitud)
|
67 |
|
68 |
-
# Reportar
|
69 |
st.write(df)
|
70 |
else:
|
71 |
st.write("No se ha subido un archivo")
|
72 |
|
73 |
-
|
74 |
-
|
75 |
'''
|
76 |
import pandas as pd
|
77 |
from langchain.chains import LLMChain
|
|
|
1 |
import pandas as pd
|
2 |
+
from langchain.chains import LLMChain, RAGChain
|
3 |
from langchain.prompts import PromptTemplate
|
4 |
+
from langchain_community.llms import HuggingFaceHub
|
5 |
+
from langchain.rag import RagIndex
|
|
|
6 |
import streamlit as st
|
7 |
import sys
|
8 |
import re
|
9 |
+
from transformers import LlamaForCausalLM, AutoTokenizer
|
10 |
+
from huggingface_hub import login
|
11 |
|
12 |
+
# Inicialización de Hugging Face
|
13 |
huggingface_token = st.secrets["SECRET"]
|
14 |
login(huggingface_token)
|
15 |
|
16 |
+
# Cargar archivo CSV
|
17 |
uploaded_file = st.file_uploader("Sube un archivo CSV con la columna 'job_title':", type=["csv"])
|
18 |
|
19 |
if uploaded_file:
|
20 |
df = pd.read_csv(uploaded_file)
|
21 |
st.dataframe(df)
|
22 |
|
|
|
23 |
query = "aspiring human resources specialist"
|
24 |
|
25 |
+
# Modelo LLaMA
|
26 |
model_name = "meta-llama/Llama-3.2-1B"
|
27 |
modelo = LlamaForCausalLM.from_pretrained(model_name)
|
28 |
|
29 |
+
# Tokenizador
|
30 |
try:
|
|
|
31 |
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
|
32 |
print("Tokenizador cargado con éxito.")
|
33 |
except Exception as e:
|
34 |
print(f"Error al cargar el tokenizador: {e}")
|
35 |
sys.exit(1)
|
36 |
|
37 |
+
# Prompt para cadena LLM
|
38 |
prompt_template = PromptTemplate(
|
39 |
input_variables=["query", "texto"],
|
40 |
template=(
|
41 |
"Calcular el cosine similarity score entre '{query}' y '{texto}'. "
|
42 |
+
"Responde solo con un número entre 0 y 1 en formato float, sin texto adicional."
|
43 |
)
|
44 |
)
|
45 |
|
46 |
+
# Cargar índice RAG
|
47 |
+
rag_index = RagIndex.from_directory("path_al_tu_indice_rag")
|
48 |
+
|
49 |
+
# Crear cadena RAG
|
50 |
llm = HuggingFaceHub(repo_id=model_name, huggingfacehub_api_token=huggingface_token, model_kwargs={"max_new_tokens": 3})
|
51 |
+
rag_chain = RAGChain(llm=llm, index=rag_index, prompt=prompt_template)
|
52 |
|
53 |
def calcular_similitud(texto):
|
54 |
prompt = {"query": query, "texto": texto}
|
55 |
+
resultado = rag_chain.run(prompt)
|
56 |
+
print("Resultado del modelo:", resultado)
|
57 |
|
58 |
+
match = re.search(r"\b(0\.\d+|1\.0)\b", resultado)
|
|
|
59 |
if match:
|
60 |
score = float(match.group(1))
|
61 |
return score
|
62 |
else:
|
63 |
+
st.error(f"No se pudo extraer el puntaje de similitud: {resultado}")
|
64 |
return None
|
65 |
|
66 |
+
# Calcular similitud para cada job title
|
67 |
df['Score'] = df['job_title'].apply(calcular_similitud)
|
68 |
|
69 |
+
# Reportar resultados
|
70 |
st.write(df)
|
71 |
else:
|
72 |
st.write("No se ha subido un archivo")
|
73 |
|
|
|
|
|
74 |
'''
|
75 |
import pandas as pd
|
76 |
from langchain.chains import LLMChain
|