JaphetHernandez commited on
Commit
6ad76d6
·
verified ·
1 Parent(s): 5ef9654

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -23
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
- #from langchain.llms import HuggingFaceHub
5
- from transformers import LlamaForCausalLM, AutoTokenizer
6
- from huggingface_hub import login
7
  import streamlit as st
8
  import sys
9
  import re
10
- from langchain_community.llms import HuggingFaceHub
 
11
 
12
- # Inicialización de Hugging Face con el token de la API desde los secretos de Streamlit
13
  huggingface_token = st.secrets["SECRET"]
14
  login(huggingface_token)
15
 
16
- # Cargar el 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
- # Ingreso del query
24
  query = "aspiring human resources specialist"
25
 
26
- # Crear un modelo LLaMA
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
- # Crear un prompt para la cadena LLM
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. No agregues nada más en tu respuesta. "
44
  )
45
  )
46
 
47
- # Crear una cadena LLM con LangChain usando HuggingFaceHub y pasar el token
 
 
 
48
  llm = HuggingFaceHub(repo_id=model_name, huggingfacehub_api_token=huggingface_token, model_kwargs={"max_new_tokens": 3})
49
- chain = LLMChain(llm=llm, prompt=prompt_template)
50
 
51
  def calcular_similitud(texto):
52
  prompt = {"query": query, "texto": texto}
53
- resultado = chain.run(prompt)
54
- print("Resultado del modelo:", resultado) # Imprimir la salida del modelo
55
 
56
- # Usar expresiones regulares para extraer el puntaje de similitud
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 del resultado: {resultado}")
63
  return None
64
 
65
- # Calcular la similitud para cada job title
66
  df['Score'] = df['job_title'].apply(calcular_similitud)
67
 
68
- # Reportar los resultados
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