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