Spaces:
Running
Running
File size: 5,250 Bytes
c368720 |
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
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
|