Modul ini merangkumi konsep dan teknik penting untuk mencipta prompt yang berkesan dalam model AI generatif. Cara anda menulis prompt kepada LLM juga memainkan peranan. Prompt yang dirancang dengan teliti boleh menghasilkan respons yang lebih berkualiti. Tetapi apa sebenarnya maksud istilah seperti prompt dan kejuruteraan prompt? Dan bagaimana saya boleh memperbaiki input prompt yang saya hantar kepada LLM? Ini adalah soalan yang akan kita cuba jawab dalam bab ini dan bab seterusnya.
AI generatif mampu mencipta kandungan baharu (contohnya, teks, imej, audio, kod, dll.) sebagai respons kepada permintaan pengguna. Ia mencapai ini menggunakan Model Bahasa Besar seperti siri GPT ("Generative Pre-trained Transformer") OpenAI yang dilatih untuk menggunakan bahasa semula jadi dan kod.
Pengguna kini boleh berinteraksi dengan model ini menggunakan paradigma yang biasa seperti sembang, tanpa memerlukan kepakaran teknikal atau latihan. Model ini adalah berasaskan prompt - pengguna menghantar input teks (prompt) dan menerima respons AI (penyelesaian). Mereka kemudian boleh "bersembang dengan AI" secara berulang, dalam perbualan berbilang giliran, memperhalusi prompt mereka sehingga respons memenuhi jangkaan mereka.
"Prompt" kini menjadi antara muka pengaturcaraan utama untuk aplikasi AI generatif, memberitahu model apa yang perlu dilakukan dan mempengaruhi kualiti respons yang dikembalikan. "Kejuruteraan Prompt" adalah bidang kajian yang berkembang pesat yang memberi tumpuan kepada reka bentuk dan pengoptimuman prompt untuk memberikan respons yang konsisten dan berkualiti pada skala besar.
Dalam pelajaran ini, kita akan belajar apa itu Kejuruteraan Prompt, mengapa ia penting, dan bagaimana kita boleh mencipta prompt yang lebih berkesan untuk model dan objektif aplikasi tertentu. Kita akan memahami konsep asas dan amalan terbaik untuk kejuruteraan prompt - dan belajar tentang persekitaran "sandbox" interaktif Jupyter Notebooks di mana kita boleh melihat konsep ini diterapkan pada contoh sebenar.
Pada akhir pelajaran ini, kita akan dapat:
- Menerangkan apa itu kejuruteraan prompt dan mengapa ia penting.
- Menghuraikan komponen prompt dan bagaimana ia digunakan.
- Mempelajari amalan terbaik dan teknik untuk kejuruteraan prompt.
- Menerapkan teknik yang dipelajari pada contoh sebenar, menggunakan endpoint OpenAI.
Kejuruteraan Prompt: Amalan mereka bentuk dan memperhalusi input untuk membimbing model AI menghasilkan output yang diingini.
Tokenisasi: Proses menukar teks kepada unit yang lebih kecil, dipanggil token, yang boleh difahami dan diproses oleh model.
LLM Ditala Arahan: Model Bahasa Besar (LLM) yang telah ditala dengan arahan khusus untuk meningkatkan ketepatan dan relevansi respons mereka.
Kejuruteraan prompt pada masa ini lebih kepada seni daripada sains. Cara terbaik untuk meningkatkan intuisi kita mengenainya adalah dengan berlatih lebih banyak dan mengamalkan pendekatan cuba-jaya yang menggabungkan kepakaran domain aplikasi dengan teknik yang disyorkan dan pengoptimuman khusus model.
Notebook Jupyter yang disertakan dengan pelajaran ini menyediakan persekitaran sandbox di mana anda boleh mencuba apa yang anda pelajari - semasa anda belajar atau sebagai sebahagian daripada cabaran kod di akhir. Untuk melaksanakan latihan, anda akan memerlukan:
- Kunci API Azure OpenAI - endpoint perkhidmatan untuk LLM yang telah diterapkan.
- Runtime Python - di mana Notebook boleh dilaksanakan.
- Pembolehubah Persekitaran Tempatan - selesaikan langkah SETUP sekarang untuk bersedia.
Notebook ini dilengkapi dengan latihan permulaan - tetapi anda digalakkan untuk menambah bahagian Markdown (penerangan) dan Kod (permintaan prompt) anda sendiri untuk mencuba lebih banyak contoh atau idea - dan membina intuisi anda untuk reka bentuk prompt.
Ingin mendapatkan gambaran besar tentang apa yang diliputi dalam pelajaran ini sebelum anda mendalami? Lihat panduan bergambar ini, yang memberikan anda gambaran tentang topik utama yang diliputi dan perkara penting untuk difikirkan dalam setiap satu. Peta jalan pelajaran membawa anda dari memahami konsep asas dan cabaran kepada menangani mereka dengan teknik kejuruteraan prompt yang relevan dan amalan terbaik. Perhatikan bahawa bahagian "Teknik Lanjutan" dalam panduan ini merujuk kepada kandungan yang diliputi dalam bab seterusnya kurikulum ini.
Sekarang, mari kita bincangkan bagaimana topik ini berkaitan dengan misi startup kami untuk membawa inovasi AI ke pendidikan. Kami ingin membina aplikasi pembelajaran peribadi yang dikuasakan oleh AI - jadi mari kita fikirkan bagaimana pengguna yang berbeza dari aplikasi kami mungkin "mereka bentuk" prompt:
- Pentadbir mungkin meminta AI untuk menganalisis data kurikulum untuk mengenal pasti jurang dalam liputan. AI boleh meringkaskan hasil atau memvisualisasikannya dengan kod.
- Pendidik mungkin meminta AI untuk menghasilkan rancangan pelajaran untuk audiens dan topik tertentu. AI boleh membina rancangan peribadi dalam format yang ditentukan.
- Pelajar mungkin meminta AI untuk mengajar mereka dalam subjek yang sukar. AI kini boleh membimbing pelajar dengan pelajaran, petunjuk & contoh yang disesuaikan dengan tahap mereka.
Itu hanya permulaan. Lihat Prompts Untuk Pendidikan - perpustakaan prompt sumber terbuka yang dikurasi oleh pakar pendidikan - untuk mendapatkan gambaran yang lebih luas tentang kemungkinan! Cuba jalankan beberapa prompt tersebut dalam sandbox atau menggunakan OpenAI Playground untuk melihat apa yang berlaku!
Kami memulakan pelajaran ini dengan mendefinisikan Kejuruteraan Prompt sebagai proses mereka bentuk dan mengoptimumkan input teks (prompt) untuk memberikan respons yang konsisten dan berkualiti (penyelesaian) untuk objektif aplikasi dan model tertentu. Kita boleh menganggap ini sebagai proses 2 langkah:
- mereka bentuk prompt awal untuk model dan objektif tertentu
- memperhalusi prompt secara berulang untuk meningkatkan kualiti respons
Ini semestinya proses cuba-jaya yang memerlukan intuisi dan usaha pengguna untuk mendapatkan hasil yang optimum. Jadi mengapa ia penting? Untuk menjawab soalan itu, kita perlu memahami tiga konsep:
- Tokenisasi = bagaimana model "melihat" prompt
- Base LLMs = bagaimana model asas "memproses" prompt
- LLM Ditala Arahan = bagaimana model kini boleh melihat "tugas"
LLM melihat prompt sebagai urutan token di mana model yang berbeza (atau versi model) boleh men-tokenkan prompt yang sama dengan cara yang berbeza. Oleh kerana LLM dilatih pada token (dan bukan pada teks mentah), cara prompt ditokenkan mempunyai kesan langsung pada kualiti respons yang dihasilkan.
Untuk mendapatkan intuisi tentang bagaimana tokenisasi berfungsi, cuba alat seperti OpenAI Tokenizer yang ditunjukkan di bawah. Salin prompt anda - dan lihat bagaimana ia ditukar menjadi token, perhatikan bagaimana watak ruang kosong dan tanda baca ditangani. Perhatikan bahawa contoh ini menunjukkan LLM lama (GPT-3) - jadi mencuba ini dengan model yang lebih baru mungkin menghasilkan hasil yang berbeza.
Setelah prompt ditokenkan, fungsi utama "Base LLM" (atau model asas) adalah untuk meramalkan token dalam urutan tersebut. Oleh kerana LLM dilatih pada dataset teks yang besar, mereka mempunyai pemahaman yang baik tentang hubungan statistik antara token dan boleh membuat ramalan itu dengan keyakinan tertentu. Perhatikan bahawa mereka tidak memahami makna perkataan dalam prompt atau token; mereka hanya melihat pola yang boleh mereka "lengkapkan" dengan ramalan seterusnya. Mereka boleh terus meramalkan urutan sehingga dihentikan oleh campur tangan pengguna atau beberapa syarat yang telah ditetapkan.
Ingin melihat bagaimana penyelesaian berasaskan prompt berfungsi? Masukkan prompt di atas ke dalam Chat Playground Studio Azure OpenAI dengan tetapan lalai. Sistem dikonfigurasikan untuk merawat prompt sebagai permintaan maklumat - jadi anda sepatutnya melihat penyelesaian yang memenuhi konteks ini.
Tetapi bagaimana jika pengguna ingin melihat sesuatu yang spesifik yang memenuhi beberapa kriteria atau objektif tugas? Di sinilah LLM ditala arahan memainkan peranan.
LLM Ditala Arahan bermula dengan model asas dan menala halusnya dengan contoh atau pasangan input/output (contohnya, "mesej" berbilang giliran) yang boleh mengandungi arahan yang jelas - dan respons daripada AI cuba mengikuti arahan tersebut.
Ini menggunakan teknik seperti Pembelajaran Pengukuhan dengan Maklum Balas Manusia (RLHF) yang boleh melatih model untuk mengikuti arahan dan belajar daripada maklum balas supaya ia menghasilkan respons yang lebih sesuai untuk aplikasi praktikal dan lebih relevan dengan objektif pengguna.
Mari cuba - ulangi prompt di atas, tetapi kini ubah mesej sistem untuk memberikan arahan berikut sebagai konteks:
Ringkaskan kandungan yang diberikan untuk pelajar darjah dua. Kekalkan hasil kepada satu perenggan dengan 3-5 poin utama.
Lihat bagaimana hasilnya kini disesuaikan untuk mencerminkan matlamat dan format yang diingini? Seorang pendidik kini boleh menggunakan respons ini secara langsung dalam slaid mereka untuk kelas tersebut.
Sekarang kita tahu bagaimana prompt diproses oleh LLM, mari kita bincangkan mengapa kita memerlukan kejuruteraan prompt. Jawapannya terletak pada fakta bahawa LLM semasa menghadapi beberapa cabaran yang menjadikan penyelesaian yang boleh dipercayai dan konsisten lebih sukar dicapai tanpa usaha dalam pembinaan dan pengoptimuman prompt. Sebagai contoh:
-
Respons model adalah stokastik. Prompt yang sama mungkin menghasilkan respons yang berbeza dengan model atau versi model yang berbeza. Dan ia mungkin menghasilkan hasil yang berbeza dengan model yang sama pada masa yang berbeza. Teknik kejuruteraan prompt boleh membantu kita meminimumkan variasi ini dengan menyediakan panduan yang lebih baik.
-
Model boleh mencipta respons. Model dilatih dengan dataset besar tetapi terhad, yang bermaksud mereka kekurangan pengetahuan tentang konsep di luar skop latihan tersebut. Akibatnya, mereka boleh menghasilkan penyelesaian yang tidak tepat, rekaan, atau bercanggah dengan fakta yang diketahui. Teknik kejuruteraan prompt membantu pengguna mengenal pasti dan mengurangkan rekaan seperti ini contohnya, dengan meminta AI untuk rujukan atau penalaran.
-
Keupayaan model akan berbeza. Model yang lebih baru atau generasi model akan mempunyai keupayaan yang lebih kaya tetapi juga membawa keunikan dan kompromi dalam kos & kerumitan. Kejuruteraan prompt boleh membantu kita membangunkan amalan terbaik dan aliran kerja yang mengabstrakkan perbezaan dan menyesuaikan keperluan khusus model dengan cara yang boleh diskalakan dan lancar.
Mari lihat ini dalam tindakan di OpenAI atau Azure OpenAI Playground:
- Gunakan prompt yang sama dengan penerapan LLM yang berbeza (contohnya, OpenAI, Azure OpenAI, Hugging Face) - adakah anda melihat variasi?
- Gunakan prompt yang sama berulang kali dengan penerapan LLM yang sama (contohnya, Azure OpenAI Playground) - bagaimana variasi ini berbeza?
Dalam kursus ini, kami menggunakan istilah "rekaan" untuk merujuk kepada fenomena di mana LLM kadang-kadang menghasilkan maklumat yang tidak tepat secara fakta kerana batasan dalam latihan mereka atau kekangan lain. Anda mungkin juga pernah mendengar ini dirujuk sebagai "halusinasi" dalam artikel popular atau kertas penyelidikan. Walau bagaimanapun, kami sangat mengesyorkan menggunakan istilah "rekaan" supaya kita tidak secara tidak sengaja mengaitkan sifat seperti manusia kepada hasil yang didorong oleh mesin. Ini juga memperkuatkan panduan AI Bertanggungjawab dari perspektif terminologi, menghapuskan istilah yang mungkin dianggap menyinggung atau tidak inklusif dalam beberapa konteks.
Ingin mendapatkan gambaran tentang bagaimana rekaan berfungsi? Fikirkan prompt yang mengarahkan AI untuk menghasilkan kandungan untuk topik yang tidak wujud (untuk memastikan ia tidak terdapat dalam dataset latihan). Sebagai contoh - saya mencuba prompt ini:
Prompt: hasilkan rancangan pelajaran tentang Perang Martian tahun 2076. Carian web menunjukkan terdapat kisah fiksyen (contohnya, siri televisyen atau buku) tentang peperangan di Marikh - tetapi tiada yang berlaku pada tahun 2076. Akal logik juga memberitahu kita bahawa tahun 2076 adalah masa depan dan oleh itu, tidak boleh dikaitkan dengan peristiwa sebenar.
Jadi, apa yang berlaku apabila kita menjalankan arahan ini dengan penyedia LLM yang berbeza?
Respons 1: OpenAI Playground (GPT-35)
Respons 2: Azure OpenAI Playground (GPT-35)
Respons 3: Hugging Face Chat Playground (LLama-2)
Seperti yang dijangka, setiap model (atau versi model) menghasilkan respons yang sedikit berbeza disebabkan oleh tingkah laku stokastik dan variasi keupayaan model. Sebagai contoh, satu model menyasarkan audiens pelajar darjah 8 manakala yang lain menganggap pelajar sekolah menengah. Tetapi ketiga-tiga model menghasilkan respons yang boleh meyakinkan pengguna yang tidak berpengetahuan bahawa peristiwa itu adalah benar.
Teknik kejuruteraan arahan seperti metaprompting dan konfigurasi suhu mungkin dapat mengurangkan fabrikasi model hingga tahap tertentu. Seni bina kejuruteraan arahan yang baru juga menggabungkan alat dan teknik baru secara lancar ke dalam aliran arahan, untuk mengurangkan atau mengatasi beberapa kesan ini.
Mari kita akhiri bahagian ini dengan memahami bagaimana kejuruteraan arahan digunakan dalam penyelesaian dunia nyata dengan melihat satu Kajian Kes: GitHub Copilot.
GitHub Copilot adalah "Rakan Pengaturcara AI" anda - ia menukar arahan teks kepada pelengkap kod dan diintegrasikan ke dalam persekitaran pembangunan anda (contohnya, Visual Studio Code) untuk pengalaman pengguna yang lancar. Seperti yang didokumentasikan dalam siri blog di bawah, versi terawal berdasarkan model OpenAI Codex - dengan jurutera cepat menyedari keperluan untuk menyesuaikan model dan membangunkan teknik kejuruteraan arahan yang lebih baik, untuk meningkatkan kualiti kod. Pada bulan Julai, mereka melancarkan model AI yang lebih baik yang melangkaui Codex untuk cadangan yang lebih pantas.
Baca pos-pos ini mengikut urutan, untuk mengikuti perjalanan pembelajaran mereka.
- Mei 2023 | GitHub Copilot Semakin Baik Memahami Kod Anda
- Mei 2023 | Di Dalam GitHub: Bekerja dengan LLM di belakang GitHub Copilot.
- Jun 2023 | Cara Menulis Arahan yang Lebih Baik untuk GitHub Copilot.
- Jul 2023 | .. GitHub Copilot melangkaui Codex dengan model AI yang lebih baik
- Jul 2023 | Panduan Pengembang untuk Kejuruteraan Arahan dan LLM
- Sep 2023 | Cara Membina Aplikasi LLM Perusahaan: Pelajaran dari GitHub Copilot
Anda juga boleh melayari blog Kejuruteraan mereka untuk lebih banyak pos seperti yang ini yang menunjukkan bagaimana model dan teknik ini digunakan untuk mendorong aplikasi dunia nyata.
Kita telah melihat mengapa kejuruteraan arahan itu penting - sekarang mari kita fahami bagaimana arahan dibina supaya kita dapat menilai teknik yang berbeza untuk reka bentuk arahan yang lebih berkesan.
Mari kita mulakan dengan arahan asas: input teks yang dihantar kepada model tanpa konteks lain. Berikut adalah contoh - apabila kita menghantar beberapa perkataan pertama lagu kebangsaan AS kepada OpenAI Completion API, ia segera melengkapkan respons dengan beberapa baris seterusnya, menggambarkan tingkah laku ramalan asas.
| Arahan (Input) | Pelengkap (Output) |
|---|---|
| Oh say can you see | Nampaknya anda memulakan lirik "The Star-Spangled Banner," lagu kebangsaan Amerika Syarikat. Lirik penuh adalah ... |
Sekarang mari kita tambahkan konteks dan arahan kepada arahan asas itu. Chat Completion API membolehkan kita membina arahan kompleks sebagai koleksi mesej dengan:
- Pasangan input/output yang mencerminkan input pengguna dan respons pembantu.
- Mesej sistem yang menetapkan konteks untuk tingkah laku atau personaliti pembantu.
Permintaan kini dalam bentuk di bawah, di mana pengekodan token secara efektif menangkap maklumat yang relevan daripada konteks dan perbualan. Kini, mengubah konteks sistem boleh memberi kesan besar pada kualiti pelengkap, seperti 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?"}
]
)Dalam contoh di atas, arahan pengguna adalah pertanyaan teks mudah yang boleh ditafsirkan sebagai permintaan maklumat. Dengan arahan berpanduan, kita boleh menggunakan teks itu untuk menentukan tugas dengan lebih terperinci, memberikan panduan yang lebih baik kepada AI. Berikut adalah contoh:
| Arahan (Input) | Pelengkap (Output) | Jenis Arahan |
|---|---|---|
| Tulis penerangan tentang Perang Saudara | mengembalikan perenggan ringkas | Mudah |
| Tulis penerangan tentang Perang Saudara. Sertakan tarikh dan peristiwa penting serta terangkan kepentingannya | mengembalikan perenggan diikuti senarai tarikh peristiwa penting dengan penerangan | Kompleks |
| Tulis penerangan tentang Perang Saudara dalam 1 perenggan. Sertakan 3 poin utama dengan tarikh penting dan kepentingannya. Sertakan 3 lagi poin utama dengan tokoh sejarah penting dan sumbangan mereka. Kembalikan output dalam format fail JSON | mengembalikan butiran lebih terperinci dalam kotak teks, diformatkan sebagai JSON yang boleh disalin-tampal ke fail dan disahkan seperti yang diperlukan | Kompleks. Berformat. |
Dalam contoh di atas, arahan masih agak terbuka, membolehkan LLM memutuskan bahagian dataset pra-latihannya yang relevan. Dengan corak reka bentuk kandungan utama, teks input dibahagikan kepada dua bahagian:
- arahan (tindakan)
- kandungan relevan (yang mempengaruhi tindakan)
Berikut adalah contoh di mana arahan adalah "ringkaskan ini dalam 2 ayat".
| Arahan (Input) | Pelengkap (Output) |
|---|---|
| Jupiter adalah planet kelima dari Matahari dan yang terbesar dalam Sistem Suria. Ia adalah gergasi gas dengan jisim satu per seribu daripada Matahari, tetapi dua setengah kali daripada semua planet lain dalam Sistem Suria digabungkan. Jupiter adalah salah satu objek paling terang yang dapat dilihat dengan mata kasar di langit malam, dan telah diketahui oleh tamadun purba sejak sebelum sejarah tercatat. Ia dinamakan sempena dewa Rom Jupiter.[19] Apabila dilihat dari Bumi, Jupiter boleh cukup terang sehingga cahaya pantulannya dapat menghasilkan bayang-bayang yang kelihatan,[20] dan secara purata adalah objek semula jadi ketiga paling terang di langit malam selepas Bulan dan Venus. Ringkaskan ini dalam 2 ayat pendek |
Jupiter, planet kelima dari Matahari, adalah yang terbesar dalam Sistem Suria dan terkenal sebagai salah satu objek paling terang di langit malam. Dinamakan sempena dewa Rom Jupiter, ia adalah gergasi gas dengan jisim dua setengah kali daripada semua planet lain dalam Sistem Suria digabungkan. |
Segmen kandungan utama boleh digunakan dalam pelbagai cara untuk mendorong arahan yang lebih berkesan:
- Contoh - bukannya memberitahu model apa yang perlu dilakukan dengan arahan eksplisit, berikan contoh apa yang perlu dilakukan dan biarkan ia menyimpulkan corak.
- Petunjuk - ikuti arahan dengan "petunjuk" yang memulakan pelengkap, membimbing model ke arah respons yang lebih relevan.
- Templat - ini adalah 'resipi' arahan yang boleh diulang dengan tempat kosong (pembolehubah) yang boleh disesuaikan dengan data untuk kes penggunaan tertentu.
Mari kita terokai ini dalam tindakan.
Ini adalah pendekatan di mana anda menggunakan kandungan utama untuk "memberi makan model" beberapa contoh output yang diinginkan untuk arahan tertentu, dan biarkan ia menyimpulkan corak untuk output yang diinginkan. Berdasarkan jumlah contoh yang diberikan, kita boleh mempunyai arahan zero-shot, one-shot, few-shot dan sebagainya.
Arahan kini terdiri daripada tiga komponen:
- Penerangan tugas
- Beberapa contoh output yang diinginkan
- Permulaan contoh baru (yang menjadi penerangan tugas secara implisit)
| Jenis Pembelajaran | Arahan (Input) | Pelengkap (Output) |
|---|---|---|
| Zero-shot | "The Sun is Shining". Terjemahkan ke Bahasa Sepanyol | "El Sol está brillando". |
| One-shot | "The Sun is Shining" => ""El Sol está brillando". "It's a Cold and Windy Day" => |
"Es un día frío y ventoso". |
| Few-shot | Pemain berlari di pangkalan => Besbol Pemain memukul ace => Tenis Pemain memukul enam => Kriket Pemain membuat slam-dunk => |
Bola Keranjang |
Perhatikan bagaimana kita perlu memberikan arahan eksplisit ("Terjemahkan ke Bahasa Sepanyol") dalam arahan zero-shot, tetapi ia disimpulkan dalam contoh arahan one-shot. Contoh few-shot menunjukkan bagaimana menambahkan lebih banyak contoh membolehkan model membuat inferens yang lebih tepat tanpa arahan tambahan.
Teknik lain untuk menggunakan kandungan utama adalah memberikan petunjuk dan bukannya contoh. Dalam kes ini, kita memberikan model dorongan ke arah yang betul dengan memulakannya dengan petikan yang mencerminkan format respons yang diinginkan. Model kemudian "mengambil petunjuk" untuk meneruskan dalam arah tersebut.
| Bilangan Petunjuk | Arahan (Input) | Pelengkap (Output) |
|---|---|---|
| 0 | Jupiter adalah planet kelima dari Matahari dan yang terbesar dalam Sistem Suria. Ia adalah gergasi gas dengan jisim satu per seribu daripada Matahari, tetapi dua setengah kali daripada semua planet lain dalam Sistem Suria digabungkan. Jupiter adalah salah satu objek paling terang yang dapat dilihat dengan mata kasar di langit malam, dan telah diketahui oleh tamadun purba sejak sebelum sejarah tercatat. Ringkaskan Ini |
Jupiter adalah planet terbesar dalam Sistem Suria dan yang kelima dari Matahari. Ia adalah gergasi gas dengan jisim 1/1000 daripada Matahari, tetapi lebih berat daripada semua planet lain digabungkan. Tamadun purba telah lama mengetahui tentang Jupiter, dan ia mudah dilihat di langit malam. |
| 1 | Jupiter adalah planet kelima dari Matahari dan yang terbesar dalam Sistem Suria. Ia adalah gergasi gas dengan jisim satu per seribu daripada Matahari, tetapi dua setengah kali lebih besar daripada semua planet lain dalam Sistem Suria digabungkan. Jupiter adalah salah satu objek paling terang yang dapat dilihat dengan mata kasar di langit malam, dan telah diketahui oleh tamadun purba sejak sebelum sejarah direkodkan. Ringkaskan Ini Apa yang kita pelajari ialah Jupiter |
adalah planet kelima dari Matahari dan yang terbesar dalam Sistem Suria. Ia adalah gergasi gas dengan jisim satu per seribu daripada Matahari, tetapi dua setengah kali lebih besar daripada semua planet lain digabungkan. Ia mudah dilihat dengan mata kasar dan telah diketahui sejak zaman purba. |
| 2 | Jupiter adalah planet kelima dari Matahari dan yang terbesar dalam Sistem Suria. Ia adalah gergasi gas dengan jisim satu per seribu daripada Matahari, tetapi dua setengah kali lebih besar daripada semua planet lain dalam Sistem Suria digabungkan. Jupiter adalah salah satu objek paling terang yang dapat dilihat dengan mata kasar di langit malam, dan telah diketahui oleh tamadun purba sejak sebelum sejarah direkodkan. Ringkaskan Ini 3 Fakta Utama Yang Kita Pelajari: |
1. Jupiter adalah planet kelima dari Matahari dan yang terbesar dalam Sistem Suria. 2. Ia adalah gergasi gas dengan jisim satu per seribu daripada Matahari... 3. Jupiter telah dapat dilihat dengan mata kasar sejak zaman purba ... |
Templat prompt adalah resipi pra-takrif untuk prompt yang boleh disimpan dan digunakan semula apabila diperlukan, untuk memberikan pengalaman pengguna yang lebih konsisten pada skala besar. Dalam bentuk yang paling mudah, ia hanyalah koleksi contoh prompt seperti contoh ini dari OpenAI yang menyediakan komponen prompt interaktif (mesej pengguna dan sistem) serta format permintaan yang didorong oleh API - untuk menyokong penggunaan semula.
Dalam bentuk yang lebih kompleks seperti contoh ini dari LangChain ia mengandungi placeholder yang boleh digantikan dengan data dari pelbagai sumber (input pengguna, konteks sistem, sumber data luaran dll.) untuk menghasilkan prompt secara dinamik. Ini membolehkan kita mencipta perpustakaan prompt yang boleh digunakan semula untuk memberikan pengalaman pengguna yang konsisten secara programatik pada skala besar.
Akhirnya, nilai sebenar templat terletak pada keupayaan untuk mencipta dan menerbitkan perpustakaan prompt untuk domain aplikasi vertikal - di mana templat prompt kini dioptimumkan untuk mencerminkan konteks atau contoh khusus aplikasi yang menjadikan respons lebih relevan dan tepat untuk audiens pengguna yang disasarkan. Repositori Prompts For Edu adalah contoh hebat pendekatan ini, mengumpulkan perpustakaan prompt untuk domain pendidikan dengan penekanan pada objektif utama seperti perancangan pelajaran, reka bentuk kurikulum, bimbingan pelajar dll.
Jika kita memikirkan pembinaan prompt sebagai mempunyai arahan (tugas) dan sasaran (kandungan utama), maka kandungan sekunder adalah seperti konteks tambahan yang kita berikan untuk mempengaruhi output dengan cara tertentu. Ia boleh menjadi parameter penalaan, arahan pemformatan, taksonomi topik dll. yang boleh membantu model menyesuaikan responsnya agar sesuai dengan objektif atau jangkaan pengguna yang diinginkan.
Sebagai contoh: Diberikan katalog kursus dengan metadata yang luas (nama, deskripsi, tahap, tag metadata, pengajar dll.) pada semua kursus yang tersedia dalam kurikulum:
- kita boleh menentukan arahan untuk "meringkaskan katalog kursus untuk Musim Gugur 2023"
- kita boleh menggunakan kandungan utama untuk memberikan beberapa contoh output yang diinginkan
- kita boleh menggunakan kandungan sekunder untuk mengenal pasti 5 "tag" utama yang menarik.
Sekarang, model boleh memberikan ringkasan dalam format yang ditunjukkan oleh beberapa contoh - tetapi jika hasilnya mempunyai pelbagai tag, ia boleh memprioritaskan 5 tag yang dikenal pasti dalam kandungan sekunder.
Sekarang kita tahu bagaimana prompt boleh dibina, kita boleh mula memikirkan bagaimana untuk merancang mereka agar mencerminkan amalan terbaik. Kita boleh memikirkan ini dalam dua bahagian - mempunyai mindset yang betul dan menerapkan teknik yang betul.
Kejuruteraan Prompt adalah proses cuba dan ralat, jadi ingat tiga faktor panduan utama:
-
Pemahaman Domain Penting. Ketepatan dan relevansi respons adalah fungsi domain di mana aplikasi atau pengguna itu beroperasi. Gunakan intuisi dan kepakaran domain anda untuk menyesuaikan teknik lebih lanjut. Sebagai contoh, tentukan personaliti khusus domain dalam prompt sistem anda, atau gunakan templat khusus domain dalam prompt pengguna anda. Berikan kandungan sekunder yang mencerminkan konteks khusus domain, atau gunakan petunjuk dan contoh khusus domain untuk membimbing model ke arah pola penggunaan yang biasa.
-
Pemahaman Model Penting. Kita tahu model bersifat stokastik secara semula jadi. Tetapi pelaksanaan model juga boleh berbeza dari segi dataset latihan yang mereka gunakan (pengetahuan pra-latihan), kemampuan yang mereka sediakan (contohnya, melalui API atau SDK) dan jenis kandungan yang mereka dioptimumkan (contohnya, kod vs. imej vs. teks). Fahami kekuatan dan batasan model yang anda gunakan, dan gunakan pengetahuan itu untuk memprioritaskan tugas atau membina templat khusus yang dioptimumkan untuk kemampuan model.
-
Iterasi & Validasi Penting. Model berkembang dengan cepat, begitu juga teknik untuk kejuruteraan prompt. Sebagai pakar domain, anda mungkin mempunyai konteks atau kriteria lain untuk aplikasi anda yang mungkin tidak berlaku kepada komuniti yang lebih luas. Gunakan alat & teknik kejuruteraan prompt untuk "memulakan" pembinaan prompt, kemudian iterasi dan validasi hasilnya menggunakan intuisi dan kepakaran domain anda sendiri. Rekodkan wawasan anda dan cipta pangkalan pengetahuan (contohnya, perpustakaan prompt) yang boleh digunakan sebagai asas baru oleh orang lain, untuk iterasi yang lebih cepat pada masa depan.
Sekarang mari kita lihat amalan terbaik yang biasa disarankan oleh OpenAI dan pengamal Azure OpenAI.
| Apa | Mengapa |
|---|---|
| Menilai model terkini. | Generasi model baru mungkin mempunyai ciri dan kualiti yang lebih baik - tetapi mungkin juga menanggung kos yang lebih tinggi. Nilai kesannya, kemudian buat keputusan migrasi. |
| Pisahkan arahan & konteks | Periksa jika model/pembekal anda menentukan pemisah untuk membezakan arahan, kandungan utama dan sekunder dengan lebih jelas. Ini boleh membantu model memberikan berat lebih tepat kepada token. |
| Bersikap spesifik dan jelas | Berikan lebih banyak butiran tentang konteks, hasil, panjang, format, gaya dll. yang diinginkan. Ini akan meningkatkan kualiti dan konsistensi respons. Tangkap resipi dalam templat yang boleh digunakan semula. |
| Bersifat deskriptif, gunakan contoh | Model mungkin bertindak balas lebih baik kepada pendekatan "tunjuk dan ceritakan". Mulakan dengan pendekatan zero-shot di mana anda memberikannya arahan (tetapi tiada contoh) kemudian cuba few-shot sebagai penambahbaikan, memberikan beberapa contoh output yang diinginkan. Gunakan analogi. |
| Gunakan petunjuk untuk memulakan penyelesaian | Dorong ke arah hasil yang diinginkan dengan memberikannya beberapa kata atau frasa awal yang boleh digunakan sebagai titik permulaan untuk respons. |
| Ulangi | Kadang-kadang anda mungkin perlu mengulang kepada model. Berikan arahan sebelum dan selepas kandungan utama anda, gunakan arahan dan petunjuk, dll. Iterasi & validasi untuk melihat apa yang berkesan. |
| Susunan Penting | Susunan di mana anda menyampaikan maklumat kepada model mungkin mempengaruhi output, bahkan dalam contoh pembelajaran, kerana bias kebaruan. Cuba pilihan yang berbeza untuk melihat apa yang paling berkesan. |
| Berikan model "jalan keluar" | Berikan model respons penyelesaian fallback yang boleh disediakan jika ia tidak dapat menyelesaikan tugas atas sebarang sebab. Ini boleh mengurangkan peluang model menghasilkan respons palsu atau rekaan. |
Seperti mana-mana amalan terbaik, ingat bahawa hasil anda mungkin berbeza bergantung pada model, tugas dan domain. Gunakan ini sebagai titik permulaan, dan iterasi untuk mencari apa yang paling berkesan untuk anda. Sentiasa menilai semula proses kejuruteraan prompt anda apabila model dan alat baru tersedia, dengan fokus pada skalabilitas proses dan kualiti respons.
Tahniah! Anda telah sampai ke penghujung pelajaran! Kini tiba masanya untuk menguji beberapa konsep dan teknik tersebut dengan contoh sebenar!
Untuk tugasan kami, kami akan menggunakan Jupyter Notebook dengan latihan yang boleh anda lengkapkan secara interaktif. Anda juga boleh memperluaskan Notebook dengan sel Markdown dan Kod anda sendiri untuk meneroka idea dan teknik secara bebas.
- (Disarankan) Lancarkan GitHub Codespaces
- (Alternatif) Clone repo ke peranti tempatan anda dan gunakan dengan Docker Desktop
- (Alternatif) Buka Notebook dengan persekitaran runtime Notebook pilihan anda.
- Salin fail
.env.copydi root repo ke.envdan isi nilaiAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTdanAZURE_OPENAI_DEPLOYMENT. Kembali ke bahagian Learning Sandbox untuk belajar bagaimana.
- Pilih kernel runtime. Jika menggunakan pilihan 1 atau 2, hanya pilih kernel Python 3.10.x lalai yang disediakan oleh dev container.
Anda sudah bersedia untuk menjalankan latihan. Perhatikan bahawa tiada jawapan betul dan salah di sini - hanya meneroka pilihan melalui proses cuba dan ralat dan membina intuisi untuk apa yang berkesan untuk model dan domain aplikasi tertentu.
Oleh itu, tiada segmen Penyelesaian Kod dalam pelajaran ini. Sebaliknya, Notebook akan mempunyai sel Markdown bertajuk "My Solution:" yang menunjukkan satu contoh output untuk rujukan.
Yang manakah merupakan prompt yang baik mengikut beberapa amalan terbaik yang munasabah?
- Tunjukkan saya imej kereta merah
- Tunjukkan saya imej kereta merah jenama Volvo dan model XC90 yang diparkir di tepi tebing dengan matahari terbenam
- Tunjukkan saya imej kereta merah jenama Volvo dan model XC90
A: 2, ia adalah prompt terbaik kerana memberikan butiran tentang "apa" dan masuk ke dalam spesifik (bukan sekadar kereta tetapi jenama dan model tertentu) dan ia juga menerangkan suasana keseluruhan. 3 adalah yang terbaik seterusnya kerana ia juga mengandungi banyak deskripsi.
Cuba lihat jika anda boleh memanfaatkan teknik "petunjuk" dengan prompt: Lengkapkan ayat "Tunjukkan saya imej kereta merah jenama Volvo dan ". Apa yang ia balas, dan bagaimana anda akan memperbaikinya?
Ingin belajar lebih lanjut tentang pelbagai konsep Kejuruteraan Prompt? Pergi ke halaman pembelajaran berterusan untuk mencari sumber hebat lain tentang topik ini.
Pergi ke Pelajaran 5 di mana kita akan melihat teknik prompt lanjutan!
Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.







