Bagaimana saya menguji 55 petunjuk untuk membuat garis besar yang lebih baik

Diterbitkan: 2024-02-06

Perintah DALL-E-3 untuk gambar header: “SAYA PERLU menguji cara kerja alat ini dengan perintah yang sangat sederhana. JANGAN menambahkan detail apa pun, gunakan saja SEBAGAIMANA ADANYA: Robot menulis garis besar di papan tulis di kantor. Atur kerangka menjadi beberapa bagian yang diberi label angka romawi, dan pastikan subbagian yang mendasarinya diindentasi dengan benar sesuai dengan header utamanya.” Ada banyak hal yang perlu dibongkar dalam prompt itu, serta dalam gambar—nantikan penyelaman mendalam DALL-E yang akan segera hadir di Verblog di dekat Anda.

Jika Anda menggunakan AI untuk membuat konten dan merasa tidak perlu repot menguji perintahnya, bacalah artikel terakhir saya tentang mengapa pengujian cepat itu sangat penting.

Dalam artikel ini, saya akan berbagi bagaimana saya baru-baru ini menguji 55 variasi cepat untuk mengubah cara kami membuat garis besar konten AI buatan manusia untuk pelanggan.

Tujuan saya di sini adalah membantu Anda memikirkan proses pengujian Anda sendiri. Anda mungkin memiliki tujuan yang berbeda atau menggunakan petunjuk Anda untuk melakukan sesuatu yang berbeda dari menghasilkan garis besar, namun prinsip dan kerangka umum akan membantu terlepas dari kasus penggunaan Anda.

Glosarium singkat:

  • Variasi cepat: Jika saya menguji beberapa perintah berbeda yang ditujukan pada tujuan yang sama, misalnya menulis kerangka, itu adalah variasi cepat. Variasi tertentu dapat berupa satu perintah, atau dapat mencakup beberapa perintah dalam satu rangkaian.
  • Input: Saya menggunakan "input" untuk merujuk pada variabel spesifik yang digunakan dalam prompt. Membuat prompt dengan variabel-variabel ini memungkinkan Anda untuk menggunakan kembali prompt yang sama berulang kali.
  • Keluaran: Keluaran mengacu pada respons LLM terhadap sebuah prompt. Di ChatGPT, ini adalah respons yang Anda lihat di jendela. Melalui OpenAI API, ini adalah respons di kolom response.choices[0].message.content . Saat menggunakan rantai prompt, saya menggunakan "output" untuk merujuk pada output akhir (yaitu output dengan konten yang benar-benar saya inginkan, bukan respons perantara model.)

Dua perintah pengujian LLM

1. Definisikan kebaikan sekuantitatif mungkin

Menguji LLM sering kali dimulai dengan gagasan ambigu tentang "Saya ingin melihat perintah mana yang memberi saya hasil yang lebih baik". Beberapa dari “lebih baik” itu mungkin subjektif, dan tidak ada jalan lain. Namun menghasilkan setidaknya beberapa ukuran kuantitatif akan mempermudah evaluasi keluaran dari perintah yang Anda uji, meskipun hanya mengetahui rentang umum yang Anda inginkan untuk mengukurnya.

Contoh metrik yang saya gunakan untuk berbagai pengujian:

  • Jumlah kata: Saat membuat perkenalan, misalnya, saya ingin menyimpannya dalam rentang jumlah kata tertentu.
  • Tingkat membaca: Untuk menargetkan tingkat membaca tertentu, saya secara otomatis menjalankan keluaran prompt melalui alat seperti Keterbacaan untuk membandingkan tingkat membaca. (Jika saya membaca artikel tentang kemampuan GPT-4 untuk mengevaluasi keterbacaan terlebih dahulu, saya akan menggunakan model tersebut saja, bukan alat terpisah. Perlu diingat, artikel tersebut berisi banyak sekali konsep statistik namun sangat layak untuk dibaca sekilas jika Anda ingin tertarik pada keterbacaan sama sekali.)
  • Berapa kali kata kunci digunakan
  • Apakah kata terlarang digunakan
  • Panjangnya relatif terhadap aslinya: Misalnya, saya sedang membuat alat untuk menghilangkan beberapa kekurangan dari konten yang dihasilkan AI dan menulis ulang dengan lebih ringkas. Saya peduli dengan panjang teks yang ditulis ulang dibandingkan dengan teks aslinya karena saya tidak ingin terlalu memperkecilnya, namun saya juga ingin memastikan teks tersebut tidak membuatnya lebih panjang. Jumlah kata saja tidak akan memberi tahu saya apa yang perlu saya ketahui—saya perlu mengevaluasi keluaran relatif terhadap masukan spesifik.
  • Runtime: Jika seseorang akan menunggu output secara real-time, saya tidak ingin menggunakan rantai prompt yang membutuhkan waktu beberapa menit untuk dijalankan.

Kemungkinan besar, Anda tidak akan dapat mengurangi seluruh evaluasi Anda menjadi metrik kuantitatif. Pada titik tertentu, Anda sebenarnya harus meninjau hasilnya dan memutuskan sendiri bahwa “Itu adalah saat terbaik; itu adalah saat-saat terburuk” adalah kalimat pembuka yang lebih kuat daripada “Itu adalah era yang ditandai dengan suka dan duka.” Namun paling tidak, memiliki beberapa metrik akan memungkinkan Anda menghilangkan keluaran tertentu, sehingga mengurangi jumlah yang perlu Anda tinjau secara manual.

Menggunakan AI untuk mengevaluasi keluaran

Ingin tahu apakah Anda dapat menggunakan AI untuk membantu Anda mengevaluasi keluaran secara kualitatif? Penelitian menunjukkan bahwa GPT-4 dapat mencapai 80 persen kesesuaian dengan preferensi manusia—yang, sebagai catatan, merupakan tingkat kesepakatan yang sama yang dicapai manusia satu sama lain. Saya khawatir jika hanya mengandalkan pendekatan ini, karena saya sudah melakukan pengujian sendiri dengannya selama musim panas, dan hasilnya tidak begitu meyakinkan.

Cara saya menguji: Saya menyajikan sepasang opsi pada GPT-4 dan memintanya mengevaluasi mana yang merupakan contoh suara tertentu yang lebih baik. Saya menggunakan suhu rendah untuk mengurangi variabilitas, dan menjalankan perintah yang sama persis dengan pilihan yang sama dua kali—lalu memutar ulang perintah dengan dua pilihan yang sama tetapi membalik urutan pilihan yang diberikan.

Secara total, GPT-4 membandingkan dua pilihan yang sama sebanyak empat kali. Saya melakukan ini untuk 274 pasangan yang berbeda, dan model tersebut hanya memiliki kesepakatan dengan dirinya sendiri (artinya model tersebut memilih pilihan yang sama sebanyak empat kali, terlepas dari apakah pilihan tersebut diberikan pertama atau kedua) pada 53 persen dari pasangan tersebut.

n = 274

Itu potongan pai merah muda di atas. Hasil paling umum kedua (irisan ungu) adalah model yang memilih setiap opsi dalam pasangan sebanyak dua kali, yang berarti pilihannya sepenuhnya sewenang-wenang.

Perlu digarisbawahi bahwa statistik ini hanya mengukur konsistensi GPT-4 saat mengevaluasi pasangan dan bahkan tidak membahas apakah pilihannya benar-benar “tepat”, yaitu. apakah itu sesuai dengan preferensi evaluator manusia. Presisi dan akurasi: Anda memerlukan keduanya jika ingin menggunakan AI sebagai alat evaluasi.

Hal ini tidak berarti bahwa menggunakan AI untuk menilai keluarannya sendiri adalah hal yang mustahil. Saya pasti dapat meningkatkan tingkat konsensusnya (presisi) dengan meningkatkan perintah yang memintanya untuk mengevaluasi dua pasangan, dan memberikan contoh pilihan saya sendiri dalam perintah tersebut kemungkinan akan membantu menyelaraskannya lebih dekat dengan preferensi manusia (akurasi) . Namun hal ini membutuhkan lebih banyak waktu dan pengujian.

Intinya: Jika Anda mengalihdayakan evaluasi kualitatif ke AI tanpa meluangkan banyak waktu terlebih dahulu untuk memastikan evaluasinya A) konsisten, dan B) selaras dengan preferensi Anda, hasil yang Anda peroleh tidak akan terlalu bagus.

2. Uji pada beberapa input

Jika Anda menggunakan AI dalam skala besar untuk membuat konten, Anda perlu menguji perintah Anda pada beberapa input. Kecuali Anda menggunakan suhu yang sangat rendah, LLM akan memberi Anda keluaran yang berbeda setiap saat bahkan untuk masukan yang sama, dan kinerjanya akan lebih bervariasi pada masukan yang berbeda.

Pastikan juga bahwa masukan Anda mewakili rentang cara Anda menggunakan perintah tersebut. Jika saya membuat konten untuk beberapa industri berbeda, misalnya, saya akan memastikan masukan yang saya gunakan untuk pengujian tidak semuanya berasal dari satu industri. Demikian pula, jika saya ingin menggunakan perintah yang sama untuk menghasilkan kerangka artikel yang berkisar antara 600 hingga 2000 kata, saya akan menyertakan rentang jumlah kata dalam masukan saya. Jika tidak, saya mungkin akan mendapatkan prompt yang menghasilkan garis besar yang bagus untuk artikel 2000 kata, tetapi tidak untuk artikel 600 kata.

Untuk menguji perintah untuk membuat kerangka, misalnya, saya mungkin menggunakan spreadsheet masukan yang terlihat seperti ini:

spreadsheet yang menampilkan informasi untuk enam artikel berbeda

Setiap baris mewakili kumpulan input yang berbeda. Saya akan menjalankan perintah yang sama enam kali, setiap kali mengganti variabel di perintah seperti {topic} atau {word_count} dengan nilai sebenarnya dari salah satu baris.

Proses pengujian cepat saya

Dengan menerapkan prinsip-prinsip tersebut, mari kita lihat bagaimana saya menguji 55 perintah berbeda untuk menghasilkan garis besar bagi pelanggan kami. Saya akan membahas apa yang ingin saya tingkatkan, alat dan proses yang saya gunakan untuk menguji berbagai permintaan, metrik yang dihasilkan, dan cara saya mengevaluasi permintaan pemenang.

Apa yang ingin saya tingkatkan

Saya ingin membuat beberapa perbaikan spesifik pada garis besar yang dibuat untuk pelanggan kami:

  • Garis besar yang lebih pendek : Garis besar yang ada sering kali menyertakan terlalu banyak bagian, sehingga artikel akhir menjadi terlalu panjang untuk jumlah kata yang ditentukan.
  • Mengurangi risiko halusinasi: Jika garis besar menyertakan bagian seperti “Studi Kasus”, “Testimonial”, atau “Referensi”, AI pasti akan mencoba mengarang informasi tersebut saat menulis artikel, yang berarti kerja ekstra bagi penulis manusia kita. Saya ingin meningkatkan proses kami untuk mencegah AI memasukkan bagian tersebut sama sekali.
  • Garis besar format yang lebih baik: Misalnya, jika topik pelanggan adalah daftar seperti “X VPN Terbaik”, judul dalam garis besar masing-masing harus berupa VPN spesifik, bukan “VPN #1”, “VPN #2”, dll. , dan bagian tersebut harus menjadi bagian terbesar dari artikel. Saya juga ingin memastikan garis besar kami berfungsi lebih baik dengan mengingat maksud pembaca dan mencakup informasi yang mereka harapkan untuk dilihat saat menelusuri kata kunci pelanggan.

Pertimbangan terakhir mengenai kualitas pengalaman pelanggan kami , meskipun bukan kualitas konten itu sendiri, adalah berapa lama waktu yang diperlukan untuk membuat kerangka. Karena pelanggan berada di aplikasi kami menunggu secara real-time hingga kerangka muncul sehingga mereka dapat meninjau dan mengeditnya sebelum menyelesaikan pesanan mereka, penting apakah mereka harus menunggu sepuluh detik atau satu menit.

Kami benar-benar ingin pelanggan kami meninjau dan mengedit garis besarnya sehingga kami yakin bahwa kami telah memenuhi apa yang mereka inginkan. Semakin lama mereka harus menunggu, semakin kecil kemungkinan mereka melakukan hal tersebut.

Proses

Google Spreadsheet dan Google Colab adalah teman terbaik saya.

Dalam satu lembar, saya membuat daftar awal variasi cepat. Dalam beberapa kasus, perbedaan antara dua perintah hanya pada beberapa kata. Di negara lain, mereka akan terlihat sangat berbeda. Berikut ini contohnya:

 Prompt variation #1 write an outline for the topic: {topic} word length: {word_count}

Seperti yang Anda lihat, saya memulai dengan sangat sederhana untuk memahami apa yang akan dilakukan LLM dengan arahan minimal. Untuk variasi lainnya, saya menggunakan strategi dorongan yang lebih canggih:

 Prompt variation #5 You will be writing an outline for a given topic. First, think through how the article should be structured, given the searcher intent for the keyword. Provide these thoughts inside <analysis></analysis> tags. Then, provide the outline itself inside <outline></outline> tags. topic: {topic} keyword: {keyword}

Di lembar kedua, saya menyimpan informasi singkat untuk 30 artikel nyata berbeda yang telah dipesan dan dikirimkan ke pelanggan kami, bersama dengan garis besar yang awalnya dibuat untuk artikel tersebut.

tangkapan layar formulir pemesanan konten Verblio
Kami sengaja membuat formulir pemesanan konten kami minimal dan terstruktur, namun permintaan kami masih perlu memperhitungkan berbagai masukan.

Langkah selanjutnya melibatkan penggunaan API OpenAI. Jika Anda tidak nyaman menulis kode tetapi memiliki akses ke alat dengan kode rendah atau tanpa kode seperti Make atau Zapier, Anda dapat mengakses model OpenAI dengan cara itu. Apa pun yang terjadi, ini jauh lebih mudah daripada menyalin/menempelkan perintah dan keluaran dari jendela ChatGPT, dan merupakan satu-satunya cara yang layak untuk melakukan pengujian nyata dalam skala besar.

Dengan menggunakan program Python di notebook Colab, saya mengirimkan perintah ke model (kebanyakan GPT-4 atau GPT-3.5-turbo). Prompt ini dibuat dengan mengganti variabel dalam salah satu variasi prompt dari lembar pertama dengan salah satu dari 30 set masukan dari lembar kedua—dan melakukannya lagi hingga saya meminta model dengan setiap kombinasi prompt dan masukan. Program kemudian secara otomatis menyimpan garis besar yang dihasilkan ke lembar ketiga.

tangkapan layar kode python di notebook Google Colab
Ini adalah bagian utama dari kode saya, tempat saya mengambil masukan artikel dan variasi cepat dari dua lembar berbeda, dan menjalankan setiap rangkaian masukan melalui setiap variasi cepat.

Untuk setiap kerangka baru yang dihasilkan model, saya kemudian mengevaluasi metrik kuantitatif yang saya pedulikan, berdasarkan perbaikan yang saya identifikasi di atas:

  • Seberapa pendeknya dibandingkan garis besar yang kami buat sebelumnya untuk pelanggan menggunakan alur cepat yang ada?
  • Apakah ini mencakup bagian yang tidak ingin kami lihat, seperti studi kasus atau referensi?
  • Berapa lama waktu yang dibutuhkan untuk berlari?

Saya mengumpulkan metrik ini untuk setiap variasi cepat dan membandingkan hasil keseluruhan.

Saya tidak bisa hanya mengandalkan angka, jadi saya juga meninjau garis besarnya secara manual untuk melihat apakah listicles diformat dengan benar, apakah masuk akal, dll.

Saya kemudian mengulangi variasi perintah dengan kinerja terbaik untuk melihat apakah saya dapat lebih meningkatkan hasilnya, dan melakukan proses yang sama lagi. Dan lagi. Dan lagi, dan lagi, dan lagi.

Hasil

Pada akhirnya, saya telah menguji 55 variasi petunjuk, model, dan suhu yang berbeda. Hasil beberapa di antaranya dapat dilihat pada grafik di bawah ini.

spreadsheet yang menunjukkan hasil pengujian variasi cepat yang berbeda
n = 30

Info pertama: Anda dapat melihat hasilnya menjadi lebih baik (lebih banyak hijau, lebih sedikit merah) saat saya mengulanginya lebih jauh. Inilah mengapa pengujian itu penting. Anda dapat melakukan peningkatan yang sangat nyata, di berbagai dimensi, yang berarti penghematan waktu yang signifikan saat Anda menjalankan perintah ini di lebih dari 100 kasus.

Kolom B hingga E berisi tentang seberapa pendek kerangka baru dibandingkan kerangka yang telah kita buat sebelumnya. Kolom F menunjukkan berapa lama waktu yang dibutuhkan untuk menjalankan setiap perintah (atau rantai perintah, dalam beberapa kasus), yaitu kira-kira berapa lama pelanggan harus menunggu di aplikasi. Kolom G menunjukkan berapa banyak kerangka baru yang memuat bagian yang tidak seharusnya, seperti “Studi Kasus”.

Konsistensi itu penting

Alasan utama mengapa sangat penting untuk menguji perintah Anda pada beberapa input (30, dalam kasus saya) adalah karena perintah tersebut akan berperilaku berbeda setiap saat. Hal ini sangat penting bagi kami ketika melihat seberapa pendek garis besar yang baru dibandingkan yang lama.

Pengurangan median (kolom B) sudah cukup jelas, namun jika kita hanya melihat pada ukuran tersebut, kita tidak akan mengetahui apa pun tentang seberapa konsisten variasi cepat tersebut pada seluruh input. Melihat juga pengurangan minimum (kolom C) adalah penting karena ini menunjukkan skenario terburuk: Setiap variasi cepat sebenarnya menghasilkan kerangka yang lebih panjang dari aslinya untuk setidaknya satu artikel uji. Untuk prompt 41, kasus terburuk itu berarti mendapatkan garis besar yang dua kali lebih panjang dari garis besar yang awalnya kita dapatkan dengan petunjuk saat ini. Sebaliknya, untuk prompt 55, kasus terburuk tersebut secara signifikan lebih baik, dengan garis besar yang baru hanya 10 persen lebih panjang dari aslinya.

Pengurangan maksimum (kolom D) tidak diberi kode warna karena saya tidak menargetkan persentase pengurangan tertentu, meskipun pengurangan 84 persen untuk prompt 43 mungkin terlalu tinggi. Yang lebih penting untuk memahami seberapa konsisten suatu prompt berperilaku adalah selisih antara pengurangan minimum dan maksimum: kolom E. Semakin rendah angkanya, semakin konsisten keluaran dari prompt tersebut, dan itulah yang kita inginkan.

Saat waktu proses

Dua faktor utama yang mempengaruhi runtime (kolom F):

  1. LLM yang digunakan
  2. jumlah petunjuknya, mis. apakah itu prompt tunggal atau rantai prompt

Panjang prompt juga berdampak pada waktu proses, namun pada tingkat yang jauh lebih kecil dibandingkan kedua faktor tersebut.

Kerugiannya adalah Anda sering kali bisa mendapatkan hasil yang lebih baik secara kualitatif dengan menggunakan prompt atau rantai prompt yang lebih panjang, namun prosesnya akan memakan waktu lebih lama. Namun, model yang berbeda juga memiliki waktu proses yang berbeda. Secara umum, model lama dan lebih kecil lebih cepat, sedangkan model baru seperti GPT-4 lebih lambat, karena ukurannya dan lalu lintasnya lebih tinggi.

Perintah pemenang

Variasi cepat yang menjadi yang terbaik secara keseluruhan, baik dalam ukuran kuantitatif maupun kualitatif, adalah nomor 54.

Anda dapat melihat hasil untuk prompt 54 memenuhi tujuan awal saya:

  • Hal ini secara konsisten menghasilkan garis besar yang lebih pendek (tetapi tidak terlalu pendek!) dan memiliki selisih yang relatif rendah antara pengurangan minimum dan maksimum (kolom E).
  • Waktu proses rata-rata 15 detik (kolom F) bukan yang terendah, namun masih kurang dari setengah waktu proses rata-rata untuk prompt yang saat ini kami gunakan.
  • Itu tidak pernah menyertakan bagian yang tidak ingin kita lihat di garis besarnya (kolom G).
  • Ketika saya meninjau garis besarnya secara manual, itu adalah apa yang kami inginkan dalam hal kualitas dan format, dll.

Saya akan membahas strategi prompt yang tepat secara lebih rinci di artikel saya berikutnya, namun singkatnya, inilah yang membuat prompt 54 bekerja dengan baik:

  • Memberi model waktu untuk "berpikir"
  • Memberikan contoh apa yang saya inginkan
  • Menggunakan rantai prompt (bukan prompt tunggal) untuk meningkatkan keakuratannya dalam memenuhi persyaratan tertentu—tetapi melakukan hal ini pada model lama untuk menjaga waktu proses tetap relatif rendah

Bisakah saya terus menggunakan variasi yang lebih cepat dan melihat lebih banyak peningkatan? Tentu. Namun pada titik tertentu, saya ingin mendapatkan kecepatan produksi yang lebih baik sehingga pelanggan kami dapat mulai melihat peningkatannya lebih cepat.

Pesan moral dari cerita ini: Ujilah dalam jumlah yang masuk akal, tetapi jangan biarkan kesempurnaan menjadi musuh kebaikan. Ketika keuntungan dari variasi baru menjadi lebih kecil, Anda ingin menyatakan pemenang dan melanjutkan hidup Anda.

Pada artikel berikutnya, saya akan membahas sendiri isi petunjuknya dengan membagikan strategi prompt spesifik yang saya uji dan tip untuk menulis petunjuk yang berfungsi dalam skala besar. Jika Anda memiliki pertanyaan tentang pengaturan pengujian, kode Python yang saya gunakan, atau apa pun, kirim pesan ke [email protected].