Spaces:
Sleeping
Sleeping
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") | |
''' |