PromptSuite-AI / prompt_refiner.py
Deddy's picture
Upload 8 files
c368720 verified
# 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]"