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