Prompt'u Kod Gibi Versiyonlamak
Wiki'de kalan metin geri alınmaz

İlk prompt'u bir Notion sayfasına yapıştırdım. İkinci hafta 'daha sıkı yazdık' denildi. Sayfa üzerine yazılmıştı. Eski metin yoktu. Çıktı bozulunca hangisinin sorumlu olduğunu kimse gösteremedi.
Kodda bu hareketi yapmayız. Bir regex'i yerinde ezip geçmişi silmeyiz. Prompt da davranış. Davranışı wiki'de bırakmak, config'i Slack'e yazmak gibi.
Prompt bir config dosyası
Metni repoya koyuyorum. Uygulama dosyayı okuyor, bellekten ezberlemiyor. Küçük bir sarmalayıcı hash ve sürüm notu taşıyor. 'Hangi prompt bu çıktıyı üretti' sorusu log'da cevaplanıyor.
from dataclasses import dataclass
from hashlib import sha256
from pathlib import Path
@dataclass(frozen=True)
class PromptVersion:
name: str
text: str
@property
def version(self) -> str:
return sha256(self.text.encode("utf-8")).hexdigest()[:12]
def load_prompt(root: Path, name: str) -> PromptVersion:
text = (root / f"{name}.md").read_text(encoding="utf-8")
return PromptVersion(name=name, text=text.strip() + "\n")
Çağrı log'una prompt_name ve prompt_version yazıyorum. Model adını da. Üçü olmadan 'çıktı kötüleşti' cümlesi bir his. Hisle rollback olmaz.
Changelog kısa tutulur
Her cümle değişikliğine roman yazmıyorum. Bir satır: ne değişti, hangi eval örneği etkilendi, neden. Eval yoksa bu satır da yalan olur; onu ayrı yazıda açacağım. En azından metin geri alınabilir.
Sıcak düzeltmeyi sohbet penceresinde yapmak cazip. Cazip olanı üretim yoluna koymuyorum. Deneme dalı ayrı, varsayılan dosya ayrı. Birleştirirken diff okuyorum — birinci yazıdaki kural burada da duruyor.
Wiki'de kalan metin
Wiki keşif için durabilir. Keşif, yayın değil. Yayınlanan prompt dosyadır, PR'dır, revert'idir. Bunu abartılı bir platform iddiası sanmayın; üç markdown ve bir hash. Sıkıcı olduğu için işe yarıyor.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap