Skip to content

Latest commit

 

History

History
406 lines (254 loc) · 46.1 KB

File metadata and controls

406 lines (254 loc) · 46.1 KB

Dasar-Dasar Rekayasa Prompt

Dasar-Dasar Rekayasa Prompt

Pendahuluan

Modul ini membahas konsep dan teknik penting untuk membuat prompt yang efektif dalam model AI generatif. Cara Anda menulis prompt untuk LLM juga berpengaruh. Prompt yang dirancang dengan hati-hati dapat menghasilkan respons yang lebih berkualitas. Tapi apa sebenarnya istilah seperti prompt dan rekayasa prompt itu? Dan bagaimana cara meningkatkan input prompt yang kita kirimkan ke LLM? Pertanyaan-pertanyaan ini akan kita coba jawab dalam bab ini dan bab berikutnya.

AI generatif mampu menciptakan konten baru (misalnya, teks, gambar, audio, kode, dll.) sebagai respons terhadap permintaan pengguna. Hal ini dicapai dengan menggunakan Large Language Models seperti seri GPT ("Generative Pre-trained Transformer") dari OpenAI yang dilatih untuk menggunakan bahasa alami dan kode.

Pengguna kini dapat berinteraksi dengan model ini menggunakan paradigma yang sudah dikenal seperti obrolan, tanpa memerlukan keahlian teknis atau pelatihan. Model ini berbasis prompt - pengguna mengirimkan input teks (prompt) dan mendapatkan respons AI (completion). Mereka kemudian dapat "mengobrol dengan AI" secara iteratif, dalam percakapan multi-putaran, menyempurnakan prompt mereka hingga respons sesuai dengan harapan.

"Prompt" kini menjadi antarmuka pemrograman utama untuk aplikasi AI generatif, memberi tahu model apa yang harus dilakukan dan memengaruhi kualitas respons yang dikembalikan. "Rekayasa Prompt" adalah bidang studi yang berkembang pesat yang berfokus pada desain dan optimasi prompt untuk memberikan respons yang konsisten dan berkualitas dalam skala besar.

Tujuan Pembelajaran

Dalam pelajaran ini, kita akan mempelajari apa itu Rekayasa Prompt, mengapa hal ini penting, dan bagaimana kita dapat membuat prompt yang lebih efektif untuk model dan tujuan aplikasi tertentu. Kita akan memahami konsep inti dan praktik terbaik untuk rekayasa prompt - serta mempelajari lingkungan "sandbox" interaktif Jupyter Notebooks di mana kita dapat melihat konsep-konsep ini diterapkan pada contoh nyata.

Pada akhir pelajaran ini, kita akan dapat:

  1. Menjelaskan apa itu rekayasa prompt dan mengapa hal ini penting.
  2. Mendeskripsikan komponen-komponen dari sebuah prompt dan bagaimana mereka digunakan.
  3. Mempelajari praktik terbaik dan teknik untuk rekayasa prompt.
  4. Menerapkan teknik yang dipelajari pada contoh nyata, menggunakan endpoint OpenAI.

Istilah Penting

Rekayasa Prompt: Praktik merancang dan menyempurnakan input untuk membimbing model AI agar menghasilkan output yang diinginkan.
Tokenisasi: Proses mengubah teks menjadi unit-unit kecil, yang disebut token, yang dapat dipahami dan diproses oleh model.
Instruction-Tuned LLMs: Large Language Models (LLMs) yang telah disesuaikan dengan instruksi spesifik untuk meningkatkan akurasi dan relevansi respons mereka.

Sandbox Pembelajaran

Rekayasa prompt saat ini lebih merupakan seni daripada sains. Cara terbaik untuk meningkatkan intuisi kita tentang hal ini adalah dengan berlatih lebih banyak dan mengadopsi pendekatan coba-coba yang menggabungkan keahlian domain aplikasi dengan teknik yang direkomendasikan dan optimasi spesifik model.

Jupyter Notebook yang menyertai pelajaran ini menyediakan lingkungan sandbox di mana Anda dapat mencoba apa yang Anda pelajari - baik saat Anda belajar maupun sebagai bagian dari tantangan kode di akhir. Untuk menjalankan latihan, Anda akan membutuhkan:

  1. Kunci API Azure OpenAI - endpoint layanan untuk LLM yang telah diterapkan.
  2. Runtime Python - tempat Notebook dapat dijalankan.
  3. Variabel Lingkungan Lokal - selesaikan langkah-langkah SETUP sekarang untuk bersiap.

Notebook ini dilengkapi dengan latihan pemula - tetapi Anda didorong untuk menambahkan bagian Markdown (deskripsi) dan Kode (permintaan prompt) Anda sendiri untuk mencoba lebih banyak contoh atau ide - dan membangun intuisi Anda tentang desain prompt.

Panduan Bergambar

Ingin mendapatkan gambaran besar tentang apa yang dibahas dalam pelajaran ini sebelum Anda mendalami? Lihat panduan bergambar ini, yang memberikan gambaran tentang topik utama yang dibahas dan poin-poin penting untuk Anda pikirkan di setiap bagian. Peta jalan pelajaran membawa Anda dari memahami konsep inti dan tantangan hingga mengatasinya dengan teknik rekayasa prompt yang relevan dan praktik terbaik. Perhatikan bahwa bagian "Teknik Lanjutan" dalam panduan ini merujuk pada konten yang dibahas dalam bab berikutnya dari kurikulum ini.

Panduan Bergambar Rekayasa Prompt

Startup Kami

Sekarang, mari kita bahas bagaimana topik ini berkaitan dengan misi startup kami untuk membawa inovasi AI ke pendidikan. Kami ingin membangun aplikasi pembelajaran personalized yang didukung AI - jadi mari kita pikirkan bagaimana berbagai pengguna aplikasi kami mungkin "merancang" prompt:

  • Administrator mungkin meminta AI untuk menganalisis data kurikulum untuk mengidentifikasi kekurangan dalam cakupan. AI dapat merangkum hasil atau memvisualisasikannya dengan kode.
  • Pendidik mungkin meminta AI untuk menghasilkan rencana pelajaran untuk audiens dan topik tertentu. AI dapat membuat rencana yang dipersonalisasi dalam format yang ditentukan.
  • Siswa mungkin meminta AI untuk membimbing mereka dalam mata pelajaran yang sulit. AI sekarang dapat membimbing siswa dengan pelajaran, petunjuk, & contoh yang disesuaikan dengan tingkat mereka.

Itu hanya sebagian kecil dari kemungkinannya. Lihat Prompts For Education - perpustakaan prompt sumber terbuka yang dikurasi oleh para ahli pendidikan - untuk mendapatkan gambaran yang lebih luas tentang kemungkinan-kemungkinan! Cobalah menjalankan beberapa prompt tersebut di sandbox atau menggunakan OpenAI Playground untuk melihat apa yang terjadi!

Apa itu Rekayasa Prompt?

Kami memulai pelajaran ini dengan mendefinisikan Rekayasa Prompt sebagai proses merancang dan mengoptimalkan input teks (prompt) untuk memberikan respons yang konsisten dan berkualitas (completions) untuk tujuan aplikasi dan model tertentu. Kita dapat menganggap ini sebagai proses 2 langkah:

  • merancang prompt awal untuk model dan tujuan tertentu
  • menyempurnakan prompt secara iteratif untuk meningkatkan kualitas respons

Ini adalah proses coba-coba yang membutuhkan intuisi dan usaha pengguna untuk mendapatkan hasil yang optimal. Jadi mengapa ini penting? Untuk menjawab pertanyaan itu, pertama-tama kita perlu memahami tiga konsep:

  • Tokenisasi = bagaimana model "melihat" prompt
  • Base LLMs = bagaimana model dasar "memproses" prompt
  • Instruction-Tuned LLMs = bagaimana model sekarang dapat melihat "tugas"

Tokenisasi

LLM melihat prompt sebagai urutan token di mana model yang berbeda (atau versi model) dapat melakukan tokenisasi pada prompt yang sama dengan cara yang berbeda. Karena LLM dilatih pada token (dan bukan pada teks mentah), cara prompt ditokenisasi memiliki dampak langsung pada kualitas respons yang dihasilkan.

Untuk mendapatkan intuisi tentang bagaimana tokenisasi bekerja, coba alat seperti OpenAI Tokenizer yang ditampilkan di bawah ini. Salin prompt Anda - dan lihat bagaimana itu diubah menjadi token, perhatikan bagaimana karakter spasi dan tanda baca ditangani. Perhatikan bahwa contoh ini menunjukkan LLM yang lebih lama (GPT-3) - jadi mencoba ini dengan model yang lebih baru mungkin menghasilkan hasil yang berbeda.

Tokenisasi

Konsep: Model Dasar

Setelah prompt ditokenisasi, fungsi utama "Base LLM" (atau model dasar) adalah memprediksi token dalam urutan tersebut. Karena LLM dilatih pada dataset teks yang sangat besar, mereka memiliki pemahaman yang baik tentang hubungan statistik antar token dan dapat membuat prediksi tersebut dengan tingkat kepercayaan tertentu. Perlu dicatat bahwa mereka tidak memahami makna kata-kata dalam prompt atau token; mereka hanya melihat pola yang dapat mereka "lengkapi" dengan prediksi berikutnya. Mereka dapat terus memprediksi urutan hingga dihentikan oleh intervensi pengguna atau kondisi yang telah ditetapkan sebelumnya.

Ingin melihat bagaimana penyelesaian berbasis prompt bekerja? Masukkan prompt di atas ke dalam Azure OpenAI Studio Chat Playground dengan pengaturan default. Sistem dikonfigurasi untuk memperlakukan prompt sebagai permintaan informasi - jadi Anda harus melihat penyelesaian yang memenuhi konteks ini.

Tapi bagaimana jika pengguna ingin melihat sesuatu yang spesifik yang memenuhi beberapa kriteria atau tujuan tugas? Di sinilah instruction-tuned LLMs berperan.

Penyelesaian Obrolan Base LLM

Konsep: Instruction-Tuned LLMs

Instruction-Tuned LLM dimulai dengan model dasar dan menyempurnakannya dengan contoh atau pasangan input/output (misalnya, "pesan" multi-putaran) yang dapat berisi instruksi yang jelas - dan respons dari AI mencoba mengikuti instruksi tersebut.

Ini menggunakan teknik seperti Reinforcement Learning with Human Feedback (RLHF) yang dapat melatih model untuk mengikuti instruksi dan belajar dari umpan balik sehingga menghasilkan respons yang lebih sesuai untuk aplikasi praktis dan lebih relevan dengan tujuan pengguna.

Mari kita coba - tinjau kembali prompt di atas, tetapi sekarang ubah pesan sistem untuk memberikan instruksi berikut sebagai konteks:

Ringkas konten yang Anda berikan untuk siswa kelas dua. Batasi hasilnya menjadi satu paragraf dengan 3-5 poin.

Lihat bagaimana hasilnya sekarang disesuaikan untuk mencerminkan tujuan dan format yang diinginkan? Seorang pendidik sekarang dapat langsung menggunakan respons ini dalam slide untuk kelas tersebut.

Penyelesaian Obrolan Instruction-Tuned LLM

Mengapa kita membutuhkan Rekayasa Prompt?

Sekarang kita tahu bagaimana prompt diproses oleh LLM, mari kita bahas mengapa kita membutuhkan rekayasa prompt. Jawabannya terletak pada fakta bahwa LLM saat ini menghadirkan sejumlah tantangan yang membuat penyelesaian yang andal dan konsisten lebih sulit dicapai tanpa upaya dalam konstruksi dan optimasi prompt. Misalnya:

  1. Respons model bersifat stokastik. Prompt yang sama kemungkinan besar akan menghasilkan respons yang berbeda dengan model atau versi model yang berbeda. Dan bahkan mungkin menghasilkan hasil yang berbeda dengan model yang sama pada waktu yang berbeda. Teknik rekayasa prompt dapat membantu kita meminimalkan variasi ini dengan memberikan batasan yang lebih baik.

  2. Model dapat membuat respons fiktif. Model dilatih dengan dataset yang besar tetapi terbatas, yang berarti mereka tidak memiliki pengetahuan tentang konsep di luar cakupan pelatihan tersebut. Akibatnya, mereka dapat menghasilkan penyelesaian yang tidak akurat, imajiner, atau langsung bertentangan dengan fakta yang diketahui. Teknik rekayasa prompt membantu pengguna mengidentifikasi dan mengurangi fabrikasi semacam itu, misalnya dengan meminta AI untuk memberikan referensi atau alasan.

  3. Kemampuan model akan bervariasi. Model yang lebih baru atau generasi model yang lebih baru akan memiliki kemampuan yang lebih kaya tetapi juga membawa keunikan dan kompromi dalam hal biaya & kompleksitas. Rekayasa prompt dapat membantu kita mengembangkan praktik terbaik dan alur kerja yang mengabstraksi perbedaan dan beradaptasi dengan persyaratan spesifik model dengan cara yang skalabel dan mulus.

Mari kita lihat ini dalam aksi di OpenAI atau Azure OpenAI Playground:

  • Gunakan prompt yang sama dengan berbagai penerapan LLM (misalnya, OpenAI, Azure OpenAI, Hugging Face) - apakah Anda melihat variasinya?
  • Gunakan prompt yang sama berulang kali dengan penerapan model LLM yang sama (misalnya, Azure OpenAI Playground) - bagaimana variasi ini berbeda?

Contoh Fabrikasi

Dalam kursus ini, kami menggunakan istilah "fabrikasi" untuk merujuk pada fenomena di mana LLM terkadang menghasilkan informasi yang tidak akurat karena keterbatasan dalam pelatihan mereka atau kendala lainnya. Anda mungkin juga pernah mendengar ini disebut sebagai "halusinasi" dalam artikel populer atau makalah penelitian. Namun, kami sangat merekomendasikan menggunakan istilah "fabrikasi" agar kita tidak secara tidak sengaja mengatributkan sifat manusiawi pada hasil yang dihasilkan oleh mesin. Hal ini juga memperkuat pedoman AI yang Bertanggung Jawab dari perspektif terminologi, menghilangkan istilah yang mungkin dianggap ofensif atau tidak inklusif dalam beberapa konteks.

Ingin mendapatkan gambaran tentang bagaimana fabrikasi bekerja? Pikirkan sebuah prompt yang menginstruksikan AI untuk menghasilkan konten untuk topik yang tidak ada (untuk memastikan itu tidak ditemukan dalam dataset pelatihan). Misalnya - saya mencoba prompt ini:

Prompt: buat rencana pelajaran tentang Perang Mars tahun 2076. Pencarian web menunjukkan bahwa ada kisah fiksi (misalnya, serial televisi atau buku) tentang perang di Mars - tetapi tidak ada yang terjadi pada tahun 2076. Akal sehat juga mengatakan bahwa tahun 2076 adalah masa depan dan karenanya tidak dapat dikaitkan dengan peristiwa nyata.

Jadi, apa yang terjadi ketika kita menjalankan prompt ini dengan penyedia LLM yang berbeda?

Respons 1: OpenAI Playground (GPT-35)

Respons 1

Respons 2: Azure OpenAI Playground (GPT-35)

Respons 2

Respons 3: Hugging Face Chat Playground (LLama-2)

Respons 3

Seperti yang diharapkan, setiap model (atau versi model) menghasilkan respons yang sedikit berbeda berkat perilaku stokastik dan variasi kemampuan model. Misalnya, satu model menargetkan audiens kelas 8 sementara yang lain mengasumsikan siswa sekolah menengah. Namun, ketiga model tersebut menghasilkan respons yang dapat meyakinkan pengguna yang tidak tahu bahwa peristiwa tersebut nyata.

Teknik rekayasa prompt seperti metaprompting dan konfigurasi suhu dapat mengurangi fabrikasi model hingga tingkat tertentu. Arsitektur rekayasa prompt baru juga mengintegrasikan alat dan teknik baru secara mulus ke dalam alur prompt, untuk mengurangi atau memitigasi beberapa efek ini.

Studi Kasus: GitHub Copilot

Mari kita akhiri bagian ini dengan memahami bagaimana rekayasa prompt digunakan dalam solusi dunia nyata dengan melihat satu Studi Kasus: GitHub Copilot.

GitHub Copilot adalah "AI Pair Programmer" Anda - ia mengubah prompt teks menjadi penyelesaian kode dan terintegrasi ke dalam lingkungan pengembangan Anda (misalnya, Visual Studio Code) untuk pengalaman pengguna yang mulus. Seperti yang didokumentasikan dalam serangkaian blog di bawah ini, versi awalnya didasarkan pada model OpenAI Codex - dengan para insinyur yang dengan cepat menyadari perlunya menyempurnakan model dan mengembangkan teknik rekayasa prompt yang lebih baik untuk meningkatkan kualitas kode. Pada bulan Juli, mereka meluncurkan model AI yang lebih baik yang melampaui Codex untuk saran yang lebih cepat.

Baca postingan secara berurutan untuk mengikuti perjalanan pembelajaran mereka.

Anda juga dapat menjelajahi blog Teknik mereka untuk lebih banyak postingan seperti yang satu ini yang menunjukkan bagaimana model dan teknik ini diterapkan untuk mendorong aplikasi dunia nyata.


Konstruksi Prompt

Kita telah melihat mengapa rekayasa prompt itu penting - sekarang mari kita pahami bagaimana prompt dibangun sehingga kita dapat mengevaluasi berbagai teknik untuk desain prompt yang lebih efektif.

Prompt Dasar

Mari kita mulai dengan prompt dasar: input teks yang dikirim ke model tanpa konteks lain. Berikut adalah contohnya - ketika kita mengirim beberapa kata pertama dari lagu kebangsaan AS ke OpenAI Completion API, model langsung melengkapi respons dengan beberapa baris berikutnya, menggambarkan perilaku prediksi dasar.

Prompt (Input) Completion (Output)
Oh say can you see Sepertinya Anda sedang memulai lirik "The Star-Spangled Banner," lagu kebangsaan Amerika Serikat. Lirik lengkapnya adalah ...

Prompt Kompleks

Sekarang mari kita tambahkan konteks dan instruksi ke prompt dasar tersebut. Chat Completion API memungkinkan kita membangun prompt kompleks sebagai kumpulan pesan dengan:

  • Pasangan input/output yang mencerminkan input pengguna dan respons asisten.
  • Pesan sistem yang menetapkan konteks untuk perilaku atau kepribadian asisten.

Permintaan sekarang berbentuk seperti di bawah ini, di mana tokenisasi secara efektif menangkap informasi yang relevan dari konteks dan percakapan. Sekarang, mengubah konteks sistem dapat berdampak besar pada kualitas penyelesaian, seperti halnya input pengguna yang diberikan.

response = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

Prompt Instruksi

Dalam contoh di atas, prompt pengguna adalah kueri teks sederhana yang dapat diinterpretasikan sebagai permintaan informasi. Dengan prompt instruksi, kita dapat menggunakan teks tersebut untuk menentukan tugas secara lebih rinci, memberikan panduan yang lebih baik kepada AI. Berikut contohnya:

Prompt (Input) Completion (Output) Tipe Instruksi
Tuliskan deskripsi tentang Perang Saudara mengembalikan paragraf sederhana Sederhana
Tuliskan deskripsi tentang Perang Saudara. Sertakan tanggal dan peristiwa penting serta jelaskan signifikansinya mengembalikan paragraf diikuti dengan daftar tanggal peristiwa penting beserta deskripsinya Kompleks
Tuliskan deskripsi tentang Perang Saudara dalam 1 paragraf. Sertakan 3 poin penting dengan tanggal dan signifikansinya. Sertakan 3 poin lagi dengan tokoh sejarah penting dan kontribusinya. Kembalikan output dalam format file JSON. mengembalikan detail lebih luas dalam kotak teks, diformat sebagai JSON yang dapat Anda salin-tempel ke file dan validasi sesuai kebutuhan Kompleks. Diformat.

Konten Utama

Dalam contoh di atas, prompt masih cukup terbuka, memungkinkan LLM untuk memutuskan bagian mana dari dataset pra-latihannya yang relevan. Dengan pola desain konten utama, teks input dibagi menjadi dua bagian:

  • instruksi (aksi)
  • konten relevan (yang memengaruhi aksi)

Berikut adalah contoh di mana instruksinya adalah "ringkas ini dalam 2 kalimat".

Prompt (Input) Completion (Output)
Jupiter adalah planet kelima dari Matahari dan yang terbesar di Tata Surya. Ini adalah raksasa gas dengan massa seperseribu dari Matahari, tetapi dua setengah kali dari semua planet lain di Tata Surya digabungkan. Jupiter adalah salah satu objek paling terang yang terlihat dengan mata telanjang di langit malam, dan telah dikenal oleh peradaban kuno sejak sebelum sejarah tercatat. Ia dinamai sesuai dengan dewa Romawi Jupiter.[19] Ketika dilihat dari Bumi, Jupiter bisa cukup terang sehingga cahayanya yang dipantulkan dapat menghasilkan bayangan yang terlihat,[20] dan rata-rata merupakan objek alami ketiga paling terang di langit malam setelah Bulan dan Venus.
Ringkas ini dalam 2 kalimat pendek
Jupiter, planet kelima dari Matahari, adalah yang terbesar di Tata Surya dan dikenal sebagai salah satu objek paling terang di langit malam. Dinamai sesuai dewa Romawi Jupiter, ia adalah raksasa gas dengan massa dua setengah kali dari semua planet lain di Tata Surya digabungkan.

Segmen konten utama dapat digunakan dalam berbagai cara untuk mendorong instruksi yang lebih efektif:

  • Contoh - alih-alih memberi tahu model apa yang harus dilakukan dengan instruksi eksplisit, berikan contoh tentang apa yang harus dilakukan dan biarkan model menyimpulkan pola.
  • Petunjuk - ikuti instruksi dengan "petunjuk" yang memulai penyelesaian, membimbing model menuju respons yang lebih relevan.
  • Template - ini adalah 'resep' yang dapat diulang untuk prompt dengan placeholder (variabel) yang dapat disesuaikan dengan data untuk kasus penggunaan tertentu.

Mari kita eksplorasi ini dalam tindakan.

Menggunakan Contoh

Ini adalah pendekatan di mana Anda menggunakan konten utama untuk "memberi makan model" beberapa contoh output yang diinginkan untuk instruksi tertentu, dan biarkan model menyimpulkan pola untuk output yang diinginkan. Berdasarkan jumlah contoh yang diberikan, kita dapat memiliki prompt zero-shot, one-shot, few-shot, dll.

Prompt sekarang terdiri dari tiga komponen:

  • Deskripsi tugas
  • Beberapa contoh output yang diinginkan
  • Awal dari contoh baru (yang menjadi deskripsi tugas implisit)
Tipe Pembelajaran Prompt (Input) Completion (Output)
Zero-shot "Matahari bersinar". Terjemahkan ke Bahasa Spanyol "El Sol está brillando".
One-shot "Matahari bersinar" => ""El Sol está brillando".
"Ini adalah hari yang dingin dan berangin" =>
"Es un día frío y ventoso".
Few-shot Pemain berlari di base => Baseball
Pemain memukul ace => Tenis
Pemain memukul enam => Kriket
Pemain melakukan slam-dunk =>
Basket

Perhatikan bagaimana kita harus memberikan instruksi eksplisit ("Terjemahkan ke Bahasa Spanyol") dalam prompt zero-shot, tetapi itu dapat disimpulkan dalam contoh prompt one-shot. Contoh few-shot menunjukkan bagaimana menambahkan lebih banyak contoh memungkinkan model membuat inferensi yang lebih akurat tanpa instruksi tambahan.

Petunjuk Prompt

Teknik lain untuk menggunakan konten utama adalah memberikan petunjuk daripada contoh. Dalam hal ini, kita memberikan model dorongan ke arah yang benar dengan memulainya dengan cuplikan yang mencerminkan format respons yang diinginkan. Model kemudian "mengambil petunjuk" untuk melanjutkan dalam format tersebut.

Jumlah Petunjuk Prompt (Input) Completion (Output)
0 Jupiter adalah planet kelima dari Matahari dan yang terbesar di Tata Surya. Ini adalah raksasa gas dengan massa seperseribu dari Matahari, tetapi dua setengah kali dari semua planet lain di Tata Surya digabungkan. Jupiter adalah salah satu objek paling terang yang terlihat dengan mata telanjang di langit malam, dan telah dikenal oleh peradaban kuno sejak sebelum sejarah tercatat.
Ringkas Ini
Jupiter adalah planet terbesar di Tata Surya dan yang kelima dari Matahari. Ini adalah raksasa gas dengan massa 1/1000 dari Matahari, tetapi lebih berat daripada semua planet lain digabungkan. Peradaban kuno telah lama mengetahui tentang Jupiter, dan ia mudah terlihat di langit malam.
1 Jupiter adalah planet kelima dari Matahari dan yang terbesar di Tata Surya. Ini adalah raksasa gas dengan massa seperseribu dari Matahari, tetapi dua setengah kali lebih besar dari gabungan semua planet lain di Tata Surya. Jupiter adalah salah satu objek paling terang yang terlihat dengan mata telanjang di langit malam, dan telah dikenal oleh peradaban kuno sejak sebelum sejarah tercatat.
Ringkas Ini
Yang kita pelajari adalah bahwa Jupiter
adalah planet kelima dari Matahari dan yang terbesar di Tata Surya. Ini adalah raksasa gas dengan massa seperseribu dari Matahari, tetapi dua setengah kali lebih besar dari gabungan semua planet lainnya. Jupiter mudah terlihat dengan mata telanjang dan telah dikenal sejak zaman kuno.
2 Jupiter adalah planet kelima dari Matahari dan yang terbesar di Tata Surya. Ini adalah raksasa gas dengan massa seperseribu dari Matahari, tetapi dua setengah kali lebih besar dari gabungan semua planet lain di Tata Surya. Jupiter adalah salah satu objek paling terang yang terlihat dengan mata telanjang di langit malam, dan telah dikenal oleh peradaban kuno sejak sebelum sejarah tercatat.
Ringkas Ini
3 Fakta Utama yang Kita Pelajari:
1. Jupiter adalah planet kelima dari Matahari dan yang terbesar di Tata Surya.
2. Ini adalah raksasa gas dengan massa seperseribu dari Matahari...
3. Jupiter telah terlihat dengan mata telanjang sejak zaman kuno ...

Template Prompt

Template prompt adalah resep yang telah ditentukan untuk sebuah prompt yang dapat disimpan dan digunakan kembali sesuai kebutuhan, untuk mendorong pengalaman pengguna yang lebih konsisten dalam skala besar. Dalam bentuknya yang paling sederhana, ini hanyalah kumpulan contoh prompt seperti contoh dari OpenAI ini yang menyediakan komponen prompt interaktif (pesan pengguna dan sistem) serta format permintaan berbasis API - untuk mendukung penggunaan ulang.

Dalam bentuknya yang lebih kompleks seperti contoh dari LangChain ini, template ini berisi placeholder yang dapat diganti dengan data dari berbagai sumber (input pengguna, konteks sistem, sumber data eksternal, dll.) untuk menghasilkan prompt secara dinamis. Hal ini memungkinkan kita untuk membuat pustaka prompt yang dapat digunakan kembali untuk mendorong pengalaman pengguna yang konsisten secara programatis dalam skala besar.

Akhirnya, nilai nyata dari template terletak pada kemampuan untuk membuat dan menerbitkan pustaka prompt untuk domain aplikasi vertikal - di mana template prompt sekarang dioptimalkan untuk mencerminkan konteks atau contoh spesifik aplikasi yang membuat respons lebih relevan dan akurat untuk audiens pengguna yang ditargetkan. Repositori Prompts For Edu adalah contoh yang bagus dari pendekatan ini, mengkurasi pustaka prompt untuk domain pendidikan dengan penekanan pada tujuan utama seperti perencanaan pelajaran, desain kurikulum, bimbingan siswa, dll.

Konten Pendukung

Jika kita memikirkan konstruksi prompt sebagai memiliki instruksi (tugas) dan target (konten utama), maka konten sekunder adalah seperti konteks tambahan yang kita berikan untuk mempengaruhi output dengan cara tertentu. Ini bisa berupa parameter penyetelan, instruksi format, taksonomi topik, dll. yang dapat membantu model menyesuaikan responsnya agar sesuai dengan tujuan atau harapan pengguna yang diinginkan.

Sebagai contoh: Diberikan katalog kursus dengan metadata yang luas (nama, deskripsi, tingkat, tag metadata, instruktur, dll.) tentang semua kursus yang tersedia dalam kurikulum:

  • kita dapat mendefinisikan instruksi untuk "meringkas katalog kursus untuk Musim Gugur 2023"
  • kita dapat menggunakan konten utama untuk memberikan beberapa contoh output yang diinginkan
  • kita dapat menggunakan konten sekunder untuk mengidentifikasi 5 "tag" teratas yang diminati.

Sekarang, model dapat memberikan ringkasan dalam format yang ditunjukkan oleh beberapa contoh - tetapi jika hasil memiliki beberapa tag, model dapat memprioritaskan 5 tag yang diidentifikasi dalam konten sekunder.


Praktik Terbaik dalam Prompting

Sekarang kita tahu bagaimana prompt dapat dibangun, kita dapat mulai memikirkan bagaimana merancang mereka untuk mencerminkan praktik terbaik. Kita dapat memikirkan ini dalam dua bagian - memiliki pola pikir yang tepat dan menerapkan teknik yang tepat.

Pola Pikir Rekayasa Prompt

Rekayasa Prompt adalah proses coba-coba, jadi ingat tiga faktor panduan utama:

  1. Pemahaman Domain Penting. Akurasi dan relevansi respons adalah fungsi dari domain di mana aplikasi atau pengguna tersebut beroperasi. Gunakan intuisi dan keahlian domain Anda untuk menyesuaikan teknik lebih lanjut. Misalnya, definisikan kepribadian spesifik domain dalam prompt sistem Anda, atau gunakan template spesifik domain dalam prompt pengguna Anda. Berikan konten sekunder yang mencerminkan konteks spesifik domain, atau gunakan petunjuk dan contoh spesifik domain untuk membimbing model menuju pola penggunaan yang familiar.

  2. Pemahaman Model Penting. Kita tahu model bersifat stokastik secara alami. Tetapi implementasi model juga dapat bervariasi dalam hal dataset pelatihan yang mereka gunakan (pengetahuan yang telah dilatih sebelumnya), kemampuan yang mereka sediakan (misalnya, melalui API atau SDK) dan jenis konten yang mereka optimalkan (misalnya, kode vs. gambar vs. teks). Pahami kekuatan dan keterbatasan model yang Anda gunakan, dan gunakan pengetahuan itu untuk memprioritaskan tugas atau membangun template yang disesuaikan yang dioptimalkan untuk kemampuan model.

  3. Iterasi & Validasi Penting. Model berkembang dengan cepat, begitu juga teknik untuk rekayasa prompt. Sebagai ahli domain, Anda mungkin memiliki konteks atau kriteria lain untuk aplikasi spesifik Anda, yang mungkin tidak berlaku untuk komunitas yang lebih luas. Gunakan alat & teknik rekayasa prompt untuk "memulai" konstruksi prompt, lalu iterasi dan validasi hasil menggunakan intuisi dan keahlian domain Anda sendiri. Catat wawasan Anda dan buat basis pengetahuan (misalnya, pustaka prompt) yang dapat digunakan sebagai baseline baru oleh orang lain, untuk iterasi yang lebih cepat di masa depan.

Praktik Terbaik

Sekarang mari kita lihat praktik terbaik umum yang direkomendasikan oleh OpenAI dan praktisi Azure OpenAI.

Apa Mengapa
Evaluasi model terbaru. Generasi model baru kemungkinan memiliki fitur dan kualitas yang lebih baik - tetapi mungkin juga menimbulkan biaya yang lebih tinggi. Evaluasi dampaknya, lalu buat keputusan migrasi.
Pisahkan instruksi & konteks Periksa apakah model/penyedia Anda mendefinisikan pembatas untuk membedakan instruksi, konten utama, dan konten sekunder dengan lebih jelas. Ini dapat membantu model memberikan bobot lebih akurat pada token.
Bersikap spesifik dan jelas Berikan lebih banyak detail tentang konteks, hasil, panjang, format, gaya, dll. yang diinginkan. Ini akan meningkatkan kualitas dan konsistensi respons. Tangkap resep dalam template yang dapat digunakan kembali.
Bersifat deskriptif, gunakan contoh Model mungkin merespons lebih baik dengan pendekatan "tunjukkan dan ceritakan". Mulailah dengan pendekatan zero-shot di mana Anda memberikan instruksi (tetapi tanpa contoh) lalu coba few-shot sebagai penyempurnaan, memberikan beberapa contoh output yang diinginkan. Gunakan analogi.
Gunakan petunjuk untuk memulai penyelesaian Dorong model menuju hasil yang diinginkan dengan memberikannya beberapa kata atau frasa awal yang dapat digunakan sebagai titik awal untuk respons.
Ulangi Kadang-kadang Anda mungkin perlu mengulang instruksi kepada model. Berikan instruksi sebelum dan setelah konten utama Anda, gunakan instruksi dan petunjuk, dll. Iterasi & validasi untuk melihat apa yang berhasil.
Urutan Penting Urutan di mana Anda menyajikan informasi kepada model dapat memengaruhi output, bahkan dalam contoh pembelajaran, berkat bias kebaruan. Coba berbagai opsi untuk melihat apa yang paling berhasil.
Berikan model "jalan keluar" Berikan model respons penyelesaian cadangan yang dapat diberikan jika tidak dapat menyelesaikan tugas karena alasan apa pun. Ini dapat mengurangi kemungkinan model menghasilkan respons palsu atau dibuat-buat.

Seperti halnya praktik terbaik lainnya, ingat bahwa hasil Anda mungkin berbeda tergantung pada model, tugas, dan domain. Gunakan ini sebagai titik awal, dan iterasi untuk menemukan apa yang paling berhasil untuk Anda. Terus evaluasi ulang proses rekayasa prompt Anda saat model dan alat baru tersedia, dengan fokus pada skalabilitas proses dan kualitas respons.

Tugas

Selamat! Anda telah menyelesaikan pelajaran! Saatnya untuk menguji beberapa konsep dan teknik tersebut dengan contoh nyata!

Untuk tugas kita, kita akan menggunakan Jupyter Notebook dengan latihan yang dapat Anda selesaikan secara interaktif. Anda juga dapat memperluas Notebook dengan sel Markdown dan Kode Anda sendiri untuk mengeksplorasi ide dan teknik secara mandiri.

Untuk memulai, fork repositori, lalu

  • (Direkomendasikan) Luncurkan GitHub Codespaces
  • (Alternatif) Clone repositori ke perangkat lokal Anda dan gunakan dengan Docker Desktop
  • (Alternatif) Buka Notebook dengan lingkungan runtime Notebook pilihan Anda.

Selanjutnya, konfigurasikan variabel lingkungan Anda

  • Salin file .env.copy di root repositori ke .env dan isi nilai AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, dan AZURE_OPENAI_DEPLOYMENT. Kembali ke bagian Learning Sandbox untuk mempelajari caranya.

Selanjutnya, buka Jupyter Notebook

  • Pilih kernel runtime. Jika menggunakan opsi 1 atau 2, cukup pilih kernel Python 3.10.x default yang disediakan oleh dev container.

Anda siap menjalankan latihan. Perhatikan bahwa tidak ada jawaban benar dan salah di sini - hanya mengeksplorasi opsi melalui coba-coba dan membangun intuisi tentang apa yang berhasil untuk model dan domain aplikasi tertentu.

Karena alasan ini, tidak ada segmen Solusi Kode dalam pelajaran ini. Sebagai gantinya, Notebook akan memiliki sel Markdown berjudul "Solusi Saya:" yang menunjukkan satu contoh output untuk referensi.

Pemeriksaan Pengetahuan

Manakah dari berikut ini yang merupakan prompt yang baik mengikuti beberapa praktik terbaik yang masuk akal?

  1. Tunjukkan gambar mobil merah
  2. Tunjukkan gambar mobil merah merek Volvo dan model XC90 yang diparkir di tepi tebing dengan matahari terbenam
  3. Tunjukkan gambar mobil merah merek Volvo dan model XC90

A: 2, ini adalah prompt terbaik karena memberikan detail tentang "apa" dan masuk ke spesifik (bukan hanya mobil apa saja tetapi merek dan model tertentu) dan juga menggambarkan pengaturan keseluruhan. 3 adalah yang terbaik berikutnya karena juga berisi banyak deskripsi.

🚀 Tantangan

Coba gunakan teknik "petunjuk" dengan prompt: Lengkapi kalimat "Tunjukkan gambar mobil merah merek Volvo dan ". Apa yang direspons, dan bagaimana Anda akan meningkatkannya?

Kerja Hebat! Lanjutkan Pembelajaran Anda

Ingin belajar lebih banyak tentang berbagai konsep Rekayasa Prompt? Kunjungi halaman pembelajaran lanjutan untuk menemukan sumber daya hebat lainnya tentang topik ini.

Lanjutkan ke Pelajaran 5 di mana kita akan melihat teknik prompting lanjutan!


Penafian:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI Co-op Translator. Meskipun kami berupaya untuk memberikan hasil yang akurat, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang penting, disarankan menggunakan jasa penerjemahan manusia profesional. Kami tidak bertanggung jawab atas kesalahpahaman atau interpretasi yang keliru yang timbul dari penggunaan terjemahan ini.