Spaces:
Running
Running
# Kelas PemurniPrompt digunakan untuk menganalisis dan memperbaiki prompt sesuai metode/metaprompt yang dipilih pengguna | |
class PemurniPrompt: | |
def __init__(self, api_token, meta_prompts, metaprompt_explanations): | |
self.api_token = api_token | |
self.meta_prompts = meta_prompts | |
self.metaprompt_explanations = metaprompt_explanations | |
def automatic_metaprompt(self, prompt): | |
""" | |
Otomatis memilih metaprompt terbaik berdasarkan isi prompt user. | |
Return tuple: (analisis, saran_metaprompt) | |
""" | |
# Algoritma dummy — bisa di-upgrade sesuai kebutuhan! | |
if not prompt or prompt.strip() == "": | |
return "Prompt kosong. Silakan isi prompt.", None | |
# Heuristik sederhana: Jika panjang, pilih comprehensive_multistage, jika mengandung 'data', pilih balanced_scientific | |
if "data" in prompt.lower(): | |
analisis = "Prompt ini berkaitan dengan data, disarankan 'balanced_scientific'." | |
return analisis, "balanced_scientific" | |
elif len(prompt.split()) > 25: | |
analisis = "Prompt cukup kompleks, disarankan 'comprehensive_multistage'." | |
return analisis, "comprehensive_multistage" | |
else: | |
analisis = "Prompt normal, gunakan 'logical_flow' untuk hasil optimal." | |
return analisis, "logical_flow" | |
def refine_prompt(self, prompt, metaprompt_key): | |
""" | |
Melakukan perbaikan prompt secara manual dengan metaprompt terpilih. | |
Return: (evaluasi, prompt_baru, penjelasan, full_response) | |
""" | |
if not prompt or prompt.strip() == "": | |
return ("Tidak ada prompt yang diberikan.", "", "", {}) | |
# Dummy refining — gabungkan template metaprompt dengan prompt user | |
template = self.meta_prompts.get(metaprompt_key, "") | |
if template: | |
prompt_baru = f"{template.strip()}\n{prompt.strip()}" | |
else: | |
prompt_baru = f"[{metaprompt_key}]\n{prompt.strip()}" | |
evaluasi = f"Prompt telah diperbaiki menggunakan metaprompt '{metaprompt_key}'." | |
penjelasan = self.metaprompt_explanations.get(metaprompt_key, "Tidak ada penjelasan tersedia.") | |
full_response = { | |
"prompt_awal": prompt, | |
"prompt_baru": prompt_baru, | |
"metaprompt": metaprompt_key, | |
"evaluasi": evaluasi, | |
"penjelasan": penjelasan | |
} | |
return (evaluasi, prompt_baru, penjelasan, full_response) | |
def apply_prompt(self, prompt, model): | |
""" | |
Mensimulasikan pengujian prompt pada model LLM. | |
Return: string output hasil 'jawaban model' | |
""" | |
if not prompt or not model: | |
return "Prompt atau model kosong." | |
# Dummy output — ganti dengan pemanggilan API model Anda jika siap | |
return f"(MODEL: {model})\nHASIL:\n{prompt[:400]} ...[Output simulasi LLM]" | |