Spaces:
Paused
Paused
| import os | |
| import gradio as gr | |
| from datasets import load_dataset | |
| from huggingface_hub import InferenceClient | |
| # 1. Memuat dataset Anda | |
| try: | |
| dataset = load_dataset("fareldevelopers/gpt", split="train") | |
| except Exception as e: | |
| dataset = None | |
| print(f"Gagal memuat dataset: {e}") | |
| # 2. Mengambil token otomatis dari sistem Hugging Face Space | |
| hf_token = os.environ.get("HF_TOKEN") | |
| # Inisialisasi Klien AI dengan Token Otentikasi | |
| # Menggunakan model open-source Zephyr (alternatif yang sangat stabil untuk inference) | |
| client = InferenceClient("HuggingFaceH4/zephyr-7b-beta", token=hf_token) | |
| def respons_chat(pesan_user, history): | |
| # Pengecekan Tahap 1: Cari di dataset terlebih dahulu | |
| if dataset: | |
| kolom_input = 'instruction' | |
| kolom_output = 'response' | |
| for baris in dataset: | |
| if kolom_input in baris and pesan_user.lower().strip() == str(baris[kolom_input]).lower().strip(): | |
| return baris.get(kolom_output, "Data ditemukan, tetapi kolom respon kosong.") | |
| # Pengecekan Tahap 2: Jika tidak ada di dataset, lempar ke Model AI | |
| try: | |
| messages = [] | |
| for user_msg, ai_msg in history: | |
| messages.append({"role": "user", "content": user_msg}) | |
| messages.append({"role": "assistant", "content": ai_msg}) | |
| messages.append({"role": "user", "content": pesan_user}) | |
| response = "" | |
| for message in client.chat_completion( | |
| messages, | |
| max_tokens=512, | |
| stream=True, | |
| temperature=0.7, | |
| ): | |
| token = message.choices[0].delta.content | |
| if token: | |
| response += token | |
| return response | |
| except Exception as e: | |
| return f"Maaf, terjadi kesalahan pada server AI: {str(e)}" | |
| # 3. Membuat Antarmuka Gradio | |
| app = gr.ChatInterface( | |
| fn=respons_chat, | |
| title="Custom Hybrid GPT", | |
| description="Asisten AI yang terintegrasi dengan dataset lokal dan model generatif publik." | |
| ) | |
| if __name__ == "__main__": | |
| app.launch() |