Self-consistency prompting berarti mengajukan pertanyaan penalaran yang sama kepada model beberapa kali lalu menyimpan jawaban yang paling sering muncul. Setiap percobaan menuliskan penalarannya sendiri, seperti di chain of thought prompting, dan karena model memilih kata-katanya dengan sedikit keacakan, setiap percobaan mengambil jalur yang berbeda. Jalur yang benar cenderung sampai pada jawaban yang sama. Kesalahan cenderung tersebar ke jawaban salah yang berbeda-beda. Pemungutan suara terbanyak memanfaatkan perbedaan itu.
Teknik ini berasal dari Wang dkk. 2022, "Self-Consistency Improves Chain of Thought Reasoning in Language Models". Paper itu membandingkan pengambilan banyak jalur penalaran lalu pemungutan suara dengan pengambilan satu jawaban greedy, dan menemukan bahwa pemungutan suara meningkatkan akurasi pada benchmark aritmetika dan penalaran akal sehat.
Blok di bawah ini menunjukkan tiga percobaan dari prompt yang sama. Setiap tab adalah satu percobaan dengan balasannya sendiri. Dua percobaan menghitung dengan benar; satu membuat kekeliruan yang mudah terjadi.
Hitung angka 7 berdasarkan posisinya.
- Satuan: 7, 17, 27, 37, 47, 57, 67, 77, 87, 97. Itu 10 angka tujuh.
- Puluhan: 70 sampai 79. Itu 10 angka tujuh lagi.
- Ratusan: hanya 100 yang punya tiga digit, dan tidak ada angka 7 di dalamnya.
77 muncul di kedua daftar, dan itu memang benar, karena 77 berisi dua angka 7.
Answer: 20
Percobaan 2 menjawab pertanyaan yang sedikit berbeda: berapa banyak bilangan yang mengandung angka 7, bukan berapa kali angka itu muncul. Penalarannya terbaca sama meyakinkannya dengan dua percobaan lainnya, dan kalau berdiri sendiri, kamu tidak punya alasan untuk meragukannya. Dari tiga percobaan, suaranya 20, 19, 20, dan jawaban mayoritasnya adalah jawaban yang benar.
Cara kerja self-consistency
- Tulis prompt chain-of-thought dengan baris jawaban yang tetap. Minta penalarannya dulu dan jawaban akhirnya terakhir, dalam bentuk yang bisa kamu temukan, seperti "Answer: N". Tanpa baris yang tetap, kamu harus membaca setiap percobaan untuk menemukan jawabannya.
- Ambil beberapa percobaan dengan keacakan aktif. Setiap percobaan butuh kebebasan untuk mengambil jalur yang berbeda. Di API, temperature di atas 0 melakukan ini. Di temperature 0, sebagian besar percobaan akan mengulang penalaran yang sama, dan mengulang kesalahan lima kali bukanlah bukti.
- Ambil jawaban akhir dari setiap percobaan. Abaikan penalarannya di tahap ini. Dua percobaan yang sampai pada 20 lewat jalur berbeda dihitung sebagai dua suara untuk 20.
- Ambil jawaban yang paling umum. Samakan formatnya sebelum menghitung, supaya "20", "20.", dan "dua puluh" dihitung sebagai jawaban yang sama.
Tingkat kesepakatannya sendiri adalah informasi yang berguna. Ketika kelima percobaan sepakat, kekeliruan acak kecil kemungkinannya. Ketika suaranya terbagi tiga, pertanyaan itu sulit bagi model, dan itu tanda untuk mengecek jawabannya sendiri atau menulis ulang prompt-nya. Paper itu juga melaporkan bahwa pertanyaan dengan kesepakatan yang lebih kuat antar sampel lebih mungkin dijawab dengan benar.
Self-consistency secara manual
Kamu bisa menerapkan teknik ini di aplikasi chat mana pun. Kirim prompt-nya, catat baris terakhirnya, lalu dapatkan percobaan lain yang independen: tekan regenerate, atau tempel prompt yang sama di chat baru. Ulangi sampai kamu punya tiga atau lima jawaban.
Jangan bertanya lagi di percakapan yang sama dengan "Kamu yakin?" atau "Coba lagi". Model bisa melihat balasan sebelumnya, jadi jawaban barunya tidak independen: model cenderung mengulang jawaban pertama atau mengubahnya hanya karena kamu terlihat ragu. Keduanya bukan suara.
Prompt ini sudah disiapkan untuk pemungutan suara. Masukkan pertanyaan dan format jawabanmu sendiri, lalu jalankan beberapa kali.
12 pulpen berarti 12 ÷ 3 = 4 paket.
4 paket harganya 4 × 8.
Kembalian dari 10 dikurangi 2.
Answer: $2
Bagian format itulah yang membuat pemungutan suara bisa dilakukan. Matikan bagian itu dan percobaan-percobaannya cenderung merumuskan jawaban dengan cara yang berbeda, sering kali di tengah-tengah teks, sehingga hitungan yang sederhana berubah menjadi kegiatan membaca dengan teliti.
Self-consistency di kode
Di kode, loop-nya pendek: jalankan prompt yang sama N kali, ambil baris-baris jawabannya, lalu hitung. Versi ini memakai SDK Python milik OpenAI; API apa pun yang memungkinkan kamu mengatur temperature bekerja dengan cara yang sama.
import re
from collections import Counter
from openai import OpenAI
client = OpenAI()
MODEL = "your-model-id" # e.g. from your provider's model list
PROMPT = (
"How many times does the digit 7 appear when you write out all the whole "
"numbers from 1 to 100? Think it through step by step, then give the final "
'answer on the last line in the form "Answer: N".'
)
def final_answer(text):
# Also matches "**Answer: 20**", since chat models often bold the last line.
lines = re.findall(r"^\**Answer:\**\s*(.+)$", text, re.MULTILINE)
return lines[-1].strip(" *.") if lines else None
answers = []
for _ in range(5):
response = client.chat.completions.create(
model=MODEL,
temperature=0.8,
messages=[{"role": "user", "content": PROMPT}],
)
answers.append(final_answer(response.choices[0].message.content))
votes = Counter(a for a in answers if a is not None)
if votes:
best, count = votes.most_common(1)[0]
print(f"{best} ({count} of {len(answers)} runs agree)")
else:
print("No run gave an answer line.")
Setiap percobaan bersifat independen, jadi di produksi kamu akan mengirimnya secara paralel alih-alih satu per satu. Beberapa model reasoning hanya menerima temperature bawaannya dan mengembalikan error kalau kamu mengaturnya; untuk model seperti itu, hilangkan temperature. Hasil percobaannya tetap bervariasi, karena nilai bawaannya sudah melakukan sampling.
Kapan memakainya, dan berapa biayanya
Self-consistency layak dipakai kalau tiga hal terpenuhi: jawabannya pendek dan bisa dibandingkan (angka, label, pilihan), jawaban yang salah lebih mahal daripada beberapa pemanggilan tambahan, dan model belum bisa diandalkan untuk tugas itu. Soal cerita matematika, klasifikasi dengan kasus tepi yang rumit, dan soal pilihan ganda sangat cocok.
Biayanya kira-kira N kali token dari satu jawaban, dan teknik ini tidak membantu ketika model punya kesalahpahaman yang sama di setiap percobaan. Kalau kelima percobaan membuat kesalahan yang sama, suaranya bulat dan salah. Pemungutan suara mengurangi kekeliruan acak, bukan kesalahan sistematis, jadi teknik ini tidak menggantikan pengecekan jawaban terhadap hasil yang sudah diketahui sesekali.
Model yang bernalar secara internal sebelum menjawab sudah memikirkan soalnya panjang lebar di setiap percobaan, sehingga manfaat pemungutan suara cenderung mengecil. Teknik ini masih bisa sepadan untuk soal-soal sulit di mana hasil percobaannya tidak sepakat.
Self-consistency hanya memungut suara dari jawaban yang sudah selesai. Tree of thought prompting melangkah lebih jauh dan membandingkan penalaran yang belum selesai selagi soalnya masih dikerjakan, menyimpan cabang-cabang yang menjanjikan dan membuang yang lemah sebelum sampai pada jawaban.
Pertanyaan yang sering diajukan
Apa itu self-consistency prompting?
Self-consistency prompting adalah teknik dari Wang dkk. (2022). Kamu mengirim prompt chain-of-thought yang sama beberapa kali dengan sampling aktif, sehingga setiap percobaan bernalar lewat jalur yang berbeda, lalu kamu mengambil jawaban akhir yang paling sering muncul. Alih-alih memercayai satu rantai penalaran, kamu melakukan pemungutan suara di antara beberapa rantai.
Berapa banyak sampel yang sebaiknya dipakai untuk self-consistency?
Untuk pemakaian sehari-hari, tiga sampai lima percobaan sudah cukup untuk mengalahkan kekeliruan yang sesekali terjadi, dan jumlah ganjil mencegah hasil seri antara dua jawaban. Paper aslinya mengambil jauh lebih banyak jalur per pertanyaan dan menemukan bahwa akurasinya terus naik dengan lebih banyak sampel, tapi kenaikannya makin kecil setiap kali. Pakai lebih banyak percobaan ketika jawaban yang salah berakibat mahal, dan lebih sedikit ketika biaya atau kecepatan penting.
Apa bedanya self-consistency dengan chain of thought?
Chain of thought adalah satu percobaan di mana model menuliskan penalarannya sebelum jawaban. Self-consistency dibangun di atasnya: chain of thought dijalankan beberapa kali lalu jawaban-jawaban akhirnya dipilih lewat pemungutan suara. Chain of thought mengubah prompt-nya; self-consistency mengubah berapa banyak jawaban yang kamu kumpulkan dan bagaimana kamu memilih salah satunya.
Apakah self-consistency bisa dipakai untuk esai atau jawaban terbuka?
Tidak secara langsung, karena pemungutan suara butuh jawaban yang bisa dibandingkan sama atau tidaknya: angka, label, huruf pilihan ganda, atau fakta singkat. Untuk teks terbuka, cara yang umum adalah membuat beberapa versi lalu bertanya ke model versi mana yang paling sesuai dengan versi-versi lainnya, tapi itu penilaian, bukan hitungan.
Bisakah self-consistency dipakai di ChatGPT atau Claude?
Bisa, secara manual. Kirim prompt-nya di beberapa chat baru, atau buat ulang balasannya beberapa kali, lalu catat jawaban akhir dari setiap percobaan. Pakai chat baru atau tombol regenerate alih-alih bertanya lagi di percakapan yang sama, karena model yang bisa melihat jawaban sebelumnya cenderung mengulanginya.