File size: 2,129 Bytes
d3b4e47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fb88cd4
d3b4e47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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)