JaphetHernandez commited on
Commit
e47dc76
verified
1 Parent(s): ca71ca6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -27
app.py CHANGED
@@ -6,70 +6,70 @@ from langchain.llms import HuggingFacePipeline
6
  from huggingface_hub import login
7
  from pydantic import BaseModel, model_validator
8
 
9
- # Token secreto de Hugging Face
10
  huggingface_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"]
11
  login(huggingface_token)
12
 
13
- # Cargar el modelo Llama 3.1
14
  model_name = "meta-llama/Llama-3.2-3B-Instruct"
15
  model = AutoModelForCausalLM.from_pretrained(model_name)
16
  tokenizer = AutoTokenizer.from_pretrained(model_name)
17
 
18
  pipe = pipeline("feature-extraction", model=model, tokenizer=tokenizer)
19
 
20
- # Usar transformers pipeline para cargar el modelo y tokenizer
21
  llm_pipeline = HuggingFacePipeline(pipeline=pipe)
22
 
23
- # Interfaz de Streamlit
24
- st.title("Cosine Similarity con Llama 3.1")
25
 
26
 
27
- # Inicializar la variable query antes del uso
28
  query = ""
29
 
30
- # Subida de archivo CSV
31
- uploaded_file = st.file_uploader("Sube un archivo CSV", type=["csv"])
32
 
33
 
34
  if uploaded_file is not None:
35
- # Leer el archivo CSV
36
  df = pd.read_csv(uploaded_file)
37
 
38
- # Solicitar un query al usuario
39
- query = st.text_input("Por favor ingresa tu consulta:")
40
 
41
  if query:
42
- # Crear el prompt para calcular la similitud del coseno
43
  prompt = f"""
44
- Con la columna 'job_title' del csv, tiene que calcular los cosine similarity score entre cada registro y el query,
45
- tiene que crear una columna nueva 'Score' con dichos scores y adem谩s tiene que ordenar los registros de mayor a menor valor de 'Score'.
46
- El query es: {query}
47
  """
48
 
49
- # Llamar al modelo con el prompt
50
  try:
51
  response = llm_pipeline(prompt)
52
- # Mostrar la respuesta del modelo
53
- st.write("Respuesta del modelo:", response)
54
 
55
  except Exception as e:
56
- st.error(f"Ocurri贸 un error al procesar el modelo: {str(e)}")
57
 
58
- # Modelo de validaci贸n de datos con Pydantic
59
- class ConsultaModelo(BaseModel):
60
  query: str
61
 
62
  @model_validator(mode='before')
63
- def validar_query(cls, values):
64
  query = values.get('query')
65
  if not query:
66
- raise ValueError("El query no puede estar vac铆o.")
67
  return values
68
 
69
- # Ejemplo de uso del modelo de validaci贸n
70
  if query:
71
  try:
72
- valid_query = ConsultaModelo(query=query)
73
- st.success("Consulta v谩lida.")
74
  except ValueError as e:
75
- st.error(f"Error de validaci贸n: {e}")
 
6
  from huggingface_hub import login
7
  from pydantic import BaseModel, model_validator
8
 
9
+ # Token Secret of Hugging Face
10
  huggingface_token = st.secrets["HUGGINGFACEHUB_API_TOKEN"]
11
  login(huggingface_token)
12
 
13
+ # Load Llama 3.2
14
  model_name = "meta-llama/Llama-3.2-3B-Instruct"
15
  model = AutoModelForCausalLM.from_pretrained(model_name)
16
  tokenizer = AutoTokenizer.from_pretrained(model_name)
17
 
18
  pipe = pipeline("feature-extraction", model=model, tokenizer=tokenizer)
19
 
20
+ # Use transformers pipeline
21
  llm_pipeline = HuggingFacePipeline(pipeline=pipe)
22
 
23
+ # Interfase of Streamlit
24
+ st.title("Cosine Similarity with Llama 3.1")
25
 
26
 
27
+ # initialize query
28
  query = ""
29
 
30
+ # Upload CSV file
31
+ uploaded_file = st.file_uploader("Upload a CSV file", type=["csv"])
32
 
33
 
34
  if uploaded_file is not None:
35
+ # Read CSV file
36
  df = pd.read_csv(uploaded_file)
37
 
38
+ # Request a query to user
39
+ query = st.text_input("Enter your query:")
40
 
41
  if query:
42
+ # Create the prompt to calculate cosine similarity score
43
  prompt = f"""
44
+ With the 'job_title' column from the CSV, you need to calculate the cosine similarity score between each record and the query.
45
+ You should create a new column called 'Score' with those scores and then sort the records from highest to lowest 'Score'.
46
+ The query is: {query}
47
  """
48
 
49
+ # Call the model with the prompt
50
  try:
51
  response = llm_pipeline(prompt)
52
+ # Show Model answer
53
+ st.write("Model Answer:", response)
54
 
55
  except Exception as e:
56
+ st.error(f"Error while processing: {str(e)}")
57
 
58
+ # Data validation Pydantic
59
+ class ConsultModel(BaseModel):
60
  query: str
61
 
62
  @model_validator(mode='before')
63
+ def validate_query(cls, values):
64
  query = values.get('query')
65
  if not query:
66
+ raise ValueError("Query cannot be empty.")
67
  return values
68
 
69
+ # Example
70
  if query:
71
  try:
72
+ valid_query = ConsultModel(query=query)
73
+ st.success("Valid consult.")
74
  except ValueError as e:
75
+ st.error(f"Validation error: {e}")