Kizaa19's picture
update token
fb88cd4 verified
import os
import streamlit as st
import pandas as pd
import numpy as np
import faiss
import re
from datasets import load_dataset
from sentence_transformers import SentenceTransformer
from transformers import pipeline
from huggingface_hub import login
# 1. KONFIGURASI
st.set_page_config(page_title="AI Culinary Assistant", page_icon="🍳")
st.title("🍳 AI Culinary Assistant Dashboard")
@st.cache_resource
def load_models_and_data():
# Mengambil token dari Environment Variables Hugging Face
# Anda akan mengaturnya di menu 'Settings' Space nanti
HF_TOKEN = os.getenv("HF_TOKEN")
if HF_TOKEN:
login(token=HF_TOKEN)
try:
# Muat Dataset
dataset = load_dataset("junwatu/indonesian-recipes", split="train", token=HF_TOKEN)
df = dataset.to_pandas()
# Pembersihan
df['ingredients'] = df['ingredients'].astype(str).replace(['nan', 'None', ''], 'bahan tidak tersedia')
df_sample = df.head(30).copy()
# Model Klasifikasi (Ringan)
classifier = pipeline("zero-shot-classification", model="typeform/distilbert-base-uncased-mnli")
# Model Embedding
model_embed = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
embeddings = model_embed.encode(df_sample['ingredients'].tolist(), show_progress_bar=False)
# FAISS
index = faiss.IndexFlatL2(embeddings.shape[1])
index.add(np.array(embeddings))
return df_sample, model_embed, index, classifier
except Exception as e:
st.error(f"Error: {e}")
return None, None, None, None
with st.spinner("πŸ€– Menghubungkan ke AI Hub..."):
df_sample, model_embed, index_faiss, classifier = load_models_and_data()
# --- LOGIKA UI (BAGIAN BAWAH) ---
if df_sample is not None:
st.sidebar.header("πŸŽ›οΈ Filter")
query = st.sidebar.text_input("πŸ›’ Masukkan Bahan:")
if st.sidebar.button("Cari"):
# Logika pencarian sama seperti sebelumnya...
st.write("Mencari resep terbaik untuk Anda...")
# (Tambahkan logika pencarian Anda di sini)