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)