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