Tingkatkan prompt Anda dengan Vertex AI Prompt Optimizer

SEP 26, 2024
Ivan Nardini DevRel Engineer Cloud AI
George Lee Product Manager Cloud AI Research

Desain dan rekayasa prompt merupakan salah satu metode yang paling mudah didekati untuk menghasilkan output yang signifikan dari Model Bahasa Besar (LLM). Namun, memberikan prompt pada model bahasa yang besar rasanya seperti menelusuri labirin yang rumit.

Mendesain prompt adalah disiplin ilmu yang relatif baru dengan sejumlah teknik yang perlu dieksplorasi. Untuk mendapatkan gambaran, bacalah panduan rekayasa prompt. Selain itu, untuk mendapatkan hasil terbaik dari LLM, Anda harus bereksperimen dengan berbagai kombinasi instruksi dan contoh untuk mencapai output yang diinginkan. Bahkan, jika Anda menemukan template prompt yang ideal, tidak ada jaminan bahwa prompt tersebut akan terus mencapai tugas untuk LLM yang berbeda. Akibatnya, Anda akan menghabiskan banyak waktu untuk melakukan migrasi atau menerjemahkan template prompt dari satu model ke model lainnya.

Untuk mengurangi “prompt fatigue” yang mungkin dialami saat membangun aplikasi berbasis LLM, kami mengumumkan Vertex AI Prompt Optimizer dalam Pratinjau Publik. Dalam blog ini, Anda akan mempelajari cara memulai Vertex AI Prompt Optimizer menggunakan Vertex AI SDK untuk Python. Pada akhir artikel ini, Anda akan memiliki pemahaman yang lebih baik tentang Vertex AI Prompt Optimizer dan bagaimana alat ini membantu Anda menghemat waktu dan tenaga dalam rekayasa prompt sembari memastikan prompt berkinerja tinggi siap untuk aplikasi GenAI Anda.


Vertex AI Prompt Optimizer: Dari penelitian hingga produksi

Vertex AI Prompt Optimizer adalah layanan pengoptimalan prompt yang membantu pengguna menemukan prompt (instruksi dan demonstrasi) terbaik untuk model apa pun yang dipilih di Vertex AI, di sini Instruksi mencakup instruksi sistem, konteks, dan tugas template prompt Anda, Demonstrasi adalah beberapa contoh kode yang Anda sertakan dalam prompt untuk mendapatkan gaya atau nuansa tertentu dari respons model. Vertex AI Prompt Optimizer berbasis pada makalah Tim Riset Google mengenai metode automatic prompt optimization (APO) (diterima oleh NeurIPS 2024).

Bayangkan Anda ingin menyelesaikan soal hitungan seperti di bawah ini. Anda membutuhkan instruksi dan contoh yang jelas untuk membantu menyelesaikannya. Instruksi memberi tahu kita aturan untuk menyelesaikan masalah (mis. bagaimana menangani bilangan negatif). Contoh ini menunjukkan bagaimana cara menerapkan aturan-aturan tersebut. Itulah ide di balik Vertex AI Prompt Optimizer.

Untuk menemukan instruksi dan contoh terbaik, Vertex AI Prompt Optimizer menggunakan algoritme pengoptimalan berbasis LLM iteratif, di sini model pengoptimal dan model evaluator bekerja sama untuk menghasilkan dan mengevaluasi kandidat prompt dan kemudian memilih instruksi dan demonstrasi terbaik berdasarkan metrik evaluasi yang ingin dioptimalkan oleh pengguna. Di bawah ini Anda bisa melihat ilustrasi cara kerja Vertex AI Prompt Optimizer.

Hanya dengan beberapa contoh berlabel (pasangan input dan output kebenaran dasar) dan pengaturan pengoptimalan, Vertex AI Prompt Optimizer menemukan prompt (instruksi dan demonstrasi) terbaik untuk model target, yang secara signifikan menghemat waktu dan tenaga pengguna. Pada akhirnya, produk ini menyederhanakan proses desain prompt dan rekayasa prompt serta meningkatkan kualitas aplikasi berbasis LLM secara keseluruhan. Pengguna sekarang bisa membuat prompt baru untuk tugas tertentu atau menerjemahkan prompt dari satu model ke model lainnya di Vertex AI dengan mudah.

Sekarang, setelah Anda memiliki pemahaman yang lebih baik tentang cara kerja Vertex AI Prompt Optimizer, mari kita lihat cara menyempurnakan prompt untuk menggunakannya dengan model Google di Vertex AI.


Memulai dengan Vertex AI Prompt Optimizer

Bayangkan Anda membuat asisten memasak AI sederhana yang memberikan saran tentang cara memasak hidangan yang lebih sehat. Misalnya, Anda bertanya, “Bagaimana cara membuat makanan penutup yang sehat, tetap lezat, dan mengenyangkan, sekaligus meminimalkan gula tambahan dan lemak tidak sehat?”. Dan asisten memasak AI menjawab: “Berikut adalah beberapa tips tentang cara mencapai keseimbangan ini dalam resep Anda, meminimalkan gula tambahan dan lemak tidak sehat: ...”. Di bawah ini adalah contoh jawaban yang dihasilkan.

Example of user question, context, prompt, answer

Versi awal asisten memasak AI menggunakan LLM dengan template prompt sederhana berikut ini:

Diberikan sebuah pertanyaan dengan beberapa konteks, berikan jawaban yang benar untuk pertanyaan tersebut. \nPertanyaan: {{question}}\nKonteks:{{context}}\nJawaban: {{target}}

Berdasarkan set data evaluasi Q&A yang Anda kumpulkan dan metrik evaluasi Q&A yang dikalkulasi menggunakan Vertex AI GenAI Evaluation, versi awal asisten memasak AI Anda bisa menghasilkan jawaban yang berkualitas tinggi dan relevan secara kontekstual. Berikut adalah ringkasan laporan metrik evaluasi.

Graph of evaluation metrics, showing question_answering_quality/mean is 4 times as high in mean value as groundedness/mean

Tidak buruk. Namun masih ada ruang untuk peningkatan mengenai kualitas jawaban yang dihasilkan sehubungan dengan pertanyaan terkait. Bayangkan Anda ingin menggunakan Gemini 1.5 Flash sebagai LLM yang lebih efisien untuk asisten Anda, tetapi Anda tidak memiliki pengalaman sebelumnya dengan keluarga model Gemini untuk menemukan template prompt yang berkinerja lebih baik untuk menyelesaikan tugas dengan Gemini 1.5 Flash. Di sinilah Vertex AI Prompt Optimizer sangat berguna.

Untuk menggunakan Vertex AI Prompt Optimizer guna menyempurnakan template prompt Anda, ikuti langkah-langkah berikut:

  1. Siapkan template prompt
  2. Upload contoh berlabel ke bucket Cloud Storage
  3. Konfigurasi setelan pengoptimalan
  4. Jalankan tugas pengoptimalan
  5. Dapatkan prompt yang dioptimalkan dan evaluasi pengoptimalan


1. Siapkan template prompt

Untuk memulai, siapkan template prompt yang ingin Anda optimalkan. Vertex AI Prompt Optimizer mengharapkan prompt dengan template instruksi yang merupakan bagian tetap dari template prompt yang digunakan bersama di semua kueri untuk tugas dan konteks tertentu, serta template tugas yang merupakan bagian dinamis dari template prompt yang berubah berdasarkan tugas. Di bawah ini Anda bisa melihat template asli yang Anda siapkan yang akan digunakan dengan Vertex AI Prompt Optimizer dalam tugas Q&A.

INSTRUCTION_TEMPLATE = """
Given a question with some context, provide the correct answer to the question.
"""
 
CONTEXT_TASK_TEMPLATE = """
Question: {{question}}
Answer: {{target}}
"""

2. Upload contoh berlabel ke bucket Cloud Storage

Berikutnya, Vertex AI Prompt optimizer membutuhkan file CSV atau JSONL yang berisi contoh berlabel (pasangan input, output kebenaran dasar) yang akan digunakan selama proses pengoptimalan. Dalam kasus penggunaan ini, disarankan untuk melabeli contoh dari model sumber yang menjadi masalah bagi model target. Ini akan membantu mengidentifikasi area peningkatan. Di bawah ini Anda bisa menemukan contoh sampel berlabel yang Anda upload ke bucket Google Cloud.

{"target":"Here\'s how to tackle those delicious red meats and pork while keeping things healthy:\\n\\n**Prioritize Low and Slow:**\\n\\n* **Braising and Stewing:** These techniques involve gently simmering meat in liquid over low heat for an extended period. This breaks down tough collagen, resulting in incredibly tender and flavorful meat. Plus, since the cooking temperature is lower, it minimizes the formation of potentially harmful compounds associated with high-heat cooking. \\n\\n* **Sous Vide:** This method involves sealing meat in a vacuum bag and immersing it in a precisely temperature-controlled water bath...","question":"What are some techniques for cooking red meat and pork that maximize flavor and tenderness while minimizing the formation of unhealthy compounds? \\n\\nnContext:\\nRed meat and pork should be cooked to an internal temperature of 145\\u00b0F (63\\u00b0C) to ensure safety. \\nMarinating meat in acidic ingredients like lemon juice or vinegar can help tenderize it by breaking down tough muscle fibers. \\nHigh-heat cooking methods like grilling and pan-searing can create delicious browning and caramelization, but it\'s important to avoid charring, which can produce harmful compounds. \\n"}

3. Konfigurasi setelan pengoptimalan

Untuk menjalankan tugas pengoptimalan prompt, Vertex AI prompt optimizer juga perlu mengonfigurasi setelan pengoptimalan. Tugas Vertex AI Prompt Optimizer berjalan sebagai Tugas Khusus Pelatihan Vertex AI. Ini mendukung semua model Google yang didukung oleh Vertex LLM API dan berbagai metrik evaluasi, berbasis komputasi, berbasis LLM, atau bahkan yang ditetapkan oleh pengguna. Hal ini dikarenakan Vertex AI Prompt Optimizer terintegrasi dengan Vertex Rapid Evaluation Service. Untuk meneruskan konfigurasi ini, Vertex AI Prompt Optimizer menerima daftar argumen atau jalur file Google Cloud Bucket dari file konfigurasi JSON. Berikut adalah beberapa contoh konfigurasi dasar dalam Vertex AI Prompt Optimizer.

params = {
    'num_steps': OPTIMIZATION_STEPS,
    'system_instruction': SYSTEM_INSTRUCTION,
    'prompt_template': PROMPT_TEMPLATE,
    'target_model': TARGET_MODEL,
    'eval_metrics_types': EVALUATION_METRICS,
    'optimization_mode': OPTIMIZATION_MODE,
    'num_template_eval_per_step': OPTIMIZATION_PROMPT_PER_STEPS,
    'num_demo_set_candidates': DEMO_OPTIMIZATION_STEPS,
    'demo_set_size': DEMO_OPTIMIZATION_PROMPT_PER_STEPS,
    'input_data_path': INPUT_DATA_FILE_URI,
    'output_data_path': OUTPUT_DATA_FILE_URI,
 
}

Vertex AI Prompt Optimizer memungkinkan Anda mengoptimalkan prompt dengan mengoptimalkan instruksi saja, demonstrasi saja, atau keduanya (optimization_mode), dan setelah Anda mengatur instruksi sistem, template prompt yang akan dioptimalkan (system_instruction, prompt_template), dan model yang ingin dioptimalkan (target_model), ia bisa mengondisikan proses pengoptimalan dengan mengatur metrik evaluasi, jumlah iterasi yang digunakan untuk meningkatkan prompt, dan lainnya. Lihat dokumentasi untuk mengetahui lebih lanjut tentang parameter pengoptimalan yang didukung.

Setelah Anda memiliki contoh dan konfigurasi, upload di bucket Google Cloud seperti yang ditunjukkan di bawah ini.

from etils import epath
 
# upload configuration
with epath.Path(CONFIG_FILE_URI).open('w') as config_file:
      json.dump(args, config_file)
config_file.close()
 
# upload prompt opt dataset
prepared_prompt_df.to_json(INPUT_DATA_FILE_URI, orient="records", lines=True)

4. Jalankan tugas pengoptimalan

Pada titik ini, semuanya sudah siap untuk menjalankan tugas Vertex AI Prompt optimizer pertama Anda menggunakan Vertex AI SDK untuk Python.

WORKER_POOL_SPECS = [{
    'machine_spec': {
        'machine_type': 'n1-standard-4',
    },
    'replica_count': 1,
    'container_spec': {
        'image_uri' : APD_CONTAINER_URI,
        'args': ["--config=" + CONFIG_FILE_URI]
}}]
 
custom_job = aiplatform.CustomJob(
      display_name=PROMPT_OPTIMIZATION_JOB,
      worker_pool_specs=WORKER_POOL_SPECS,
  )
 
custom_job.run()

Perhatikan bagaimana Vertex AI Prompt Optimizer berjalan sebagai tugas Khusus Pelatihan Vertex AI menggunakan container Vertex AI Prompt Optimizer. Fakta bahwa layanan ini memanfaatkan Pelatihan Vertex AI dan Vertex AI GenAI Evaluation adalah bukti bagaimana Vertex AI menyediakan platform untuk menjalankan GenAI, bahkan yang datang langsung dari penelitian seperti dalam kasus ini.

Setelah mengirimkan tugas Vertex AI Prompt optimizer, Anda bisa memantaunya dari tampilan tugas khusus Pelatihan Vertex AI seperti yang ditunjukkan di sini.

Training custom jobs view in Vertex AI

5. Dapatkan prompt yang dioptimalkan dan evaluasi pengoptimalan

Setelah tugas pengoptimalan berhasil dijalankan, Anda bisa menemukan instruksi atau demonstrasi yang dioptimalkan atau keduanya sebagai file json di bucket Cloud Storage output. Berkat beberapa fungsi bantuan, Anda bisa mendapatkan output berikut yang menunjukkan langkah pengoptimalan ketika Anda mendapatkan instruksi terbaik sesuai dengan metrik yang ditetapkan.

Optimized instruction report in Vertex AI

Hasil yang sama Anda dapatkan untuk demonstrasi yang dioptimalkan.

Yang terakhir, Anda bisa menghasilkan respons baru dengan output yang dioptimalkan. Di bawah ini Anda dapat melihat contoh respons yang dihasilkan dengan menggunakan template instruksi sistem yang dioptimalkan.

Gemini_answer_with_apd example

Dan jika Anda menggunakannya untuk menjalankan putaran evaluasi baru dengan Vertex AI GenAI Evaluation, Anda mungkin akan mendapatkan output seperti di bawah ini di mana prompt yang dioptimalkan mengungguli model sebelumnya dengan template prompt sebelumnya yang sesuai dengan metrik evaluasi yang Anda pilih.

Graph showing increased question_answering_quality/mean

Kesimpulan

Rekayasa prompt adalah salah satu langkah yang paling penting sekaligus menantang dalam proses untuk mengoperasionalkan aplikasi berbasis LLM. Untuk membantu pembuatan template prompt Anda, Vertex AI Prompt Optimizer menemukan prompt (instruksi dan demonstrasi) terbaik untuk model apa pun yang dipilih di Vertex AI.

Artikel ini menunjukkan satu contoh bagaimana Anda bisa menggunakan Vertex AI Prompt Optimizer untuk menyempurnakan template prompt bagi model Gemini dengan menggunakan Vertex AI SDK untuk Python. Anda juga dapat menggunakan Vertex AI Prompt Optimizer melalui notebook UI di sini.

Ringkasnya, Vertex AI Prompt Optimizer bisa menghemat waktu dan tenaga dalam melakukan rekayasa prompt sekaligus memastikan Anda memiliki prompt berkinerja tinggi untuk aplikasi GenAI Anda.

Terima kasih sudah membaca!


Apa berikutnya

Apakah Anda ingin mempelajari lebih lanjut tentang Vertex AI Prompt Optimizer dan cara menggunakannya? Lihat referensi berikut ini:

Dokumentasi

Contoh Github

Blog Google Cloud