Spaces:
Sleeping
Sleeping
| import json | |
| import os | |
| # --- Cek variabel lingkungan untuk templates --- | |
| template_json = os.getenv('PROMPT_TEMPLATES', '{}') | |
| try: | |
| # Parsing data JSON dengan penanganan error | |
| data_prompt = json.loads(template_json) | |
| except json.JSONDecodeError: | |
| # Jika JSON tidak valid, fallback ke dict kosong | |
| data_prompt = {} | |
| # --- Daftar metaprompt Fallback (10 yang Deddy minta) --- | |
| daftar_metaprompt_fallback = [ | |
| "comprehensive_multistage", | |
| "structured_roleplaying", | |
| "balanced_scientific", | |
| "quick_simplified", | |
| "logical_flow", | |
| "flexible_technique", | |
| "autoregressive_reasoning", | |
| "mathematical_proof", | |
| "sequential_contextual", | |
| "attention_aware" | |
| ] | |
| # --- Deskripsi fallback untuk tiap metaprompt --- | |
| penjelasan_metaprompt_fallback = { | |
| "comprehensive_multistage": "Pendekatan multi-tahap yang komprehensif dan bertingkat.", | |
| "structured_roleplaying": "Simulasi peran dengan struktur yang jelas.", | |
| "balanced_scientific": "Keseimbangan antara sains, logika, dan objektivitas.", | |
| "quick_simplified": "Hasil cepat dan penyederhanaan dalam eksekusi.", | |
| "logical_flow": "Alur berpikir yang logis dan runtut.", | |
| "flexible_technique": "Teknik adaptif, fleksibel untuk berbagai kasus.", | |
| "autoregressive_reasoning": "Penalaran progresif, tahap demi tahap.", | |
| "mathematical_proof": "Pendekatan matematis dan pembuktian formal.", | |
| "sequential_contextual": "Proses bertahap dan mempertimbangkan konteks.", | |
| "attention_aware": "Memaksimalkan fokus dan perhatian pada poin penting." | |
| } | |
| # --- Prioritaskan dari JSON ENV jika ada, jika tidak fallback ke default di atas --- | |
| if data_prompt: | |
| daftar_metaprompt = [kunci for kunci in data_prompt.keys()] | |
| penjelasan_metaprompt = { | |
| kunci: data.get("description", "Tidak ada deskripsi") | |
| for kunci, data in data_prompt.items() | |
| } | |
| else: | |
| daftar_metaprompt = daftar_metaprompt_fallback | |
| penjelasan_metaprompt = penjelasan_metaprompt_fallback | |
| print("Daftar Metaprompt:", daftar_metaprompt) | |
| # --- Markdown penjelasan untuk UI --- | |
| penjelasan_markdown = "".join([ | |
| f"- **{kunci}**: {isi}\n" | |
| for kunci, isi in penjelasan_metaprompt.items() | |
| ]) | |
| # --- Daftar model yang tersedia --- | |
| daftar_model = [ | |
| "meta-llama/Meta-Llama-3-70B-Instruct", | |
| "meta-llama/Meta-Llama-3-8B-Instruct", | |
| "meta-llama/Llama-3.1-70B-Instruct", | |
| "meta-llama/Llama-3.1-8B-Instruct", | |
| "meta-llama/Llama-3.2-3B-Instruct", | |
| "meta-llama/Llama-3.2-1B-Instruct", | |
| "meta-llama/Llama-2-13b-chat-hf", | |
| "meta-llama/Llama-2-7b-chat-hf", | |
| "HuggingFaceH4/zephyr-7b-beta", | |
| "HuggingFaceH4/zephyr-7b-alpha", | |
| "Qwen/Qwen2.5-72B-Instruct", | |
| "Qwen/Qwen2.5-1.5B", | |
| "microsoft/Phi-3.5-mini-instruct" | |
| ] | |
| # --- Mengambil contoh prompt dari JSON templates (jika ada) --- | |
| contoh_prompt = [] | |
| for kunci, data in data_prompt.items(): | |
| contoh_template = data.get("examples", []) | |
| if contoh_template: | |
| contoh_prompt.extend([ | |
| [contoh[0], kunci] if isinstance(contoh, list) else [contoh, kunci] | |
| for contoh in contoh_template | |
| ]) | |
| # --- Token API --- | |
| api_token = os.getenv('HF_API_TOKEN') | |
| if not api_token: | |
| raise ValueError("HF_API_TOKEN tidak ditemukan di environment variable") | |
| # --- Dictionary meta_prompts (template prompt) --- | |
| meta_prompts = { | |
| kunci: data.get("template", "Template tidak tersedia") | |
| for kunci, data in data_prompt.items() | |
| } if data_prompt else {k: "" for k in daftar_metaprompt} | |
| # --- Model default untuk refiner, dari env atau fallback --- | |
| model_refiner_prompt = os.getenv('prompt_refiner_model', 'meta-llama/Llama-3.1-8B-Instruct') | |
| print("Model refiner prompt yang digunakan:", model_refiner_prompt) | |
| # --- Variabel tambahan dari environment jika ada --- | |
| echo_refiner_prompt = os.getenv('echo_prompt_refiner') | |
| openai_metaprompt = os.getenv('openai_metaprompt') | |
| metaprompt_lanjut = os.getenv('advanced_meta_prompt') | |
| # --- Ekspor alias variabel supaya tetap kompatibel dengan app.py --- | |
| metaprompt_list = daftar_metaprompt | |
| explanation_markdown = penjelasan_markdown | |
| models = daftar_model | |
| examples = [ | |
| ["Buatlah ringkasan mendalam mengenai dampak revolusi industri 4.0 terhadap pola kerja masyarakat urban di Indonesia, dengan menyoroti perubahan sosial, ekonomi, serta tantangan sumber daya manusia di era digital.", "comprehensive_multistage"], | |
| ["Bertindaklah sebagai pakar komunikasi publik dan simulasi tanya jawab antara seorang menteri dan wartawan terkait isu kenaikan harga bahan pokok, lengkap dengan dialog dan argumentasi masing-masing pihak.", "structured_roleplaying"], | |
| ["Analisis secara kritis data pertumbuhan ekonomi Indonesia dalam lima tahun terakhir, dan jelaskan faktor-faktor utama yang mempengaruhi fluktuasi angka tersebut secara ilmiah dan objektif.", "balanced_scientific"], | |
| ["Sederhanakan penjelasan tentang blockchain sehingga mudah dipahami oleh pelajar SMA, namun tetap mencakup mekanisme dasar, manfaat, serta potensi risikonya.", "quick_simplified"], | |
| ["Jelaskan urutan logis proses produksi energi listrik dari sumber energi terbarukan, mulai dari tahap input sumber daya, konversi energi, distribusi, hingga konsumsi akhir oleh masyarakat.", "logical_flow"] | |
| ] | |
| metaprompt_explanations = penjelasan_metaprompt | |