Mengoptimalkan perintah

Dokumen ini menjelaskan cara menggunakan pengoptimal perintah Vertex AI untuk mengoptimalkan performa perintah secara otomatis dengan meningkatkan petunjuk sistem untuk sekumpulan perintah.

Pengoptimal perintah Vertex AI dapat membantu Anda meningkatkan kualitas perintah dengan cepat dalam skala besar, tanpa menulis ulang petunjuk sistem atau perintah individual secara manual. Hal ini sangat berguna saat Anda ingin menggunakan petunjuk dan perintah sistem yang ditulis untuk satu model dengan model yang berbeda.

Pengoptimal perintah Vertex AI membantu meningkatkan kualitas perintah dengan mengevaluasi respons model terhadap contoh perintah berdasarkan metrik evaluasi yang ditentukan. Untuk menggunakan pengoptimal prompt Vertex AI, Anda harus memiliki hal berikut:

  • Sekumpulan contoh perintah
  • Petunjuk sistem yang digunakan oleh semua contoh perintah Anda
  • Template perintah yang mereferensikan perintah contoh Anda

Model yang didukung

Pengoptimal perintah mendukung semua model Gemini.

Contoh pengoptimalan perintah

Misalnya, untuk mengoptimalkan petunjuk sistem untuk serangkaian perintah yang merujuk informasi kontekstual untuk menjawab pertanyaan tentang memasak, Anda dapat menggunakan pengoptimal perintah Vertex AI. Untuk menyelesaikan tugas ini, Anda akan menyiapkan input yang mirip dengan berikut:

Petunjuk sistem

You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.

Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.

Template perintah

Question: {input_question}
Facts: {input_context}

Contoh perintah

input_question input_context
Apa saja teknik memasak daging merah dan daging babi yang dapat memaksimalkan rasa dan kelembutan sekaligus meminimalkan pembentukan senyawa tidak sehat? Daging merah dan daging babi harus dimasak hingga suhu internal 145 derajat Fahrenheit (63 derajat Celsius) untuk memastikan keamanannya. Memarinasi daging dalam bahan-bahan asam seperti jus lemon atau cuka dapat membantu melunakkan daging dengan memecah serat otot yang keras. Metode memasak dengan suhu tinggi seperti memanggang dan menggoreng di wajan dapat menghasilkan kecokelatan dan karamelisasi yang lezat, tetapi penting untuk menghindari gosong, yang dapat menghasilkan senyawa berbahaya.
Apa saja cara kreatif untuk menambahkan rasa dan nutrisi pada minuman protein tanpa menggunakan gula tambahan atau bahan buatan? Menambahkan sayuran hijau seperti bayam atau kale adalah cara yang bagus untuk meningkatkan nilai gizi minuman Anda tanpa mengubah rasanya secara drastis. Menggunakan susu almond tanpa pemanis atau air kelapa sebagai pengganti susu biasa dapat menambahkan rasa manis yang halus dan meningkatkan lemak sehat atau elektrolit. Tahukah Anda bahwa terlalu lama memblender minuman shake dapat membuatnya menjadi panas? Agar tetap dingin dan segar, blender dengan kecepatan rendah dan istirahatkan blender Anda jika diperlukan.

Petunjuk sistem yang dioptimalkan

As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with
aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given
the intern's question and some facts, provide a clear, concise, and informative answer that will help
the intern excel in their culinary journey.

Cara kerja pengoptimalan

Pengoptimal perintah Vertex AI menggunakan parameter berikut:

  • Mode pengoptimalan: menentukan apakah pengoptimal perintah Vertex AI mengoptimalkan petunjuk sistem, memilih contoh perintah untuk ditambahkan ke petunjuk sistem sebagai contoh sedikit tembakan, atau keduanya.
  • Metrik evaluasi: metrik yang digunakan pengoptimal perintah Vertex AI untuk mengoptimalkan petunjuk sistem dan/atau memilih contoh perintah.
  • Model target: Model Google yang dioptimalkan oleh pengoptimal perintah Vertex AI untuk petunjuk sistem dan memilih contoh perintah.

Saat Anda menjalankan pengoptimal perintah Vertex AI, pengoptimal ini akan mengoptimalkan petunjuk sistem berdasarkan pilihan Anda dengan menjalankan tugas pelatihan kustom yang secara iteratif mengevaluasi contoh perintah Anda dan menulis ulang petunjuk sistem Anda untuk menemukan versi yang menghasilkan skor evaluasi terbaik untuk model target.

Di akhir tugas, pengoptimal perintah Vertex AI akan menghasilkan petunjuk sistem yang dioptimalkan beserta skor evaluasinya.

Metrik evaluasi

Pengoptimal perintah Vertex AI menggunakan metrik evaluasi untuk mengoptimalkan petunjuk sistem dan memilih contoh perintah. Anda dapat menggunakan metrik evaluasi standar atau menentukan metrik evaluasi kustom Anda sendiri.

Anda dapat menggunakan beberapa metrik sekaligus. Namun, metrik kustom hanya dapat digunakan satu per satu. Jika Anda menggunakan metrik standar dan kustom secara bersamaan, hanya satu metrik yang dapat berupa metrik kustom. Metrik lainnya harus berupa metrik standar.

Untuk mempelajari cara menentukan metrik satu per satu atau secara bersamaan, lihat EVALUATION_METRIC_PARAMETERS di tab SDK dalam Membuat template perintah dan petunjuk sistem.

Metrik evaluasi kustom

Metrik kustom berguna jika metrik standar tidak sesuai dengan aplikasi Anda. Perhatikan bahwa pengoptimal perintah Vertex AI hanya mendukung satu metrik kustom dalam satu waktu.

Untuk mempelajari cara membuat metrik kustom, lihat Membuat metrik kustom.

Metrik evaluasi standar

Pengoptimal perintah Vertex AI mendukung metrik evaluasi kustom, dan juga mendukung metrik evaluasi berikut:

Jenis metrik Kasus penggunaan Metrik Deskripsi
Berbasis model Perangkuman summarization_quality Mendeskripsikan kemampuan model untuk menjawab pertanyaan berdasarkan sekumpulan teks yang akan dirujuk.
Question answering question_answering_correctness* Mendeskripsikan kemampuan model untuk menjawab pertanyaan dengan benar.
question_answering_quality Mendeskripsikan kemampuan model untuk menjawab pertanyaan berdasarkan sekumpulan teks yang akan dirujuk.
Coherence coherence Mendeskripsikan kemampuan model untuk memberikan respons yang koheren dan mengukur seberapa baik teks yang dihasilkan mengalir secara logis dan masuk akal.
Keselamatan safety Mendeskripsikan tingkat keamanan model, yaitu apakah respons berisi teks yang tidak aman.
Kefasihan fluency Menjelaskan penguasaan bahasa model.
Perujukan (Groundedness) groundedness Mendeskripsikan kemampuan model untuk memberikan atau merujuk informasi yang hanya disertakan dalam teks input.
Berbasis komputasi Penggunaan alat dan pemanggilan fungsi tool_call_valid* Mendeskripsikan kemampuan model untuk memprediksi panggilan alat yang valid.
tool_name_match* Menjelaskan kemampuan model untuk memprediksi panggilan alat dengan nama alat yang benar. Hanya panggilan alat pertama yang diperiksa.
tool_parameter_key_match* Menjelaskan kemampuan model untuk memprediksi panggilan alat dengan nama parameter yang benar.
tool_parameter_kv_match* Menjelaskan kemampuan model untuk memprediksi panggilan alat dengan nama parameter dan nilai kunci yang benar.
Pembuatan teks umum bleu* Menyimpan hasil algoritma untuk mengevaluasi kualitas prediksi, yang telah diterjemahkan dari satu bahasa alami ke bahasa alami lainnya. Kualitas prediksi dianggap sebagai korespondensi antara parameter prediksi dan parameter referensinya.
exact_match* Menghitung apakah parameter prediksi sama persis dengan parameter rujukan.
rouge_1* Digunakan untuk membandingkan parameter prediksi yang diberikan dengan parameter rujukan.
rouge_2*
rouge_l*
rouge_l_sum*

* Jika Anda ingin mengoptimalkan perintah menggunakan evaluasi berbasis komputasi atau question_answering_correctness, Anda harus melakukan salah satu hal berikut:

  • Tambahkan variabel yang merepresentasikan respons kebenaran dasar untuk perintah Anda ke template perintah Anda.
  • Jika Anda tidak memiliki respons kebenaran nyata untuk perintah, tetapi sebelumnya menggunakan perintah dengan model Google dan mencapai hasil yang diinginkan, Anda dapat menambahkan parameter source_model ke konfigurasi, bukan menambahkan respons kebenaran nyata. Jika parameter source_model ditetapkan, Vertex AI akan menjalankan contoh perintah pada model sumber untuk menghasilkan respons kebenaran dasar bagi Anda.

Sebelum memulai

Untuk memastikan bahwa akun layanan default Compute Engine memiliki izin yang diperlukan untuk mengoptimalkan perintah, minta administrator untuk memberikan peran IAM berikut kepada akun layanan default Compute Engine di project:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun layanan default Compute Engine melalui peran khusus atau peran bawaan lainnya.

Mengoptimalkan perintah

Anda dapat mengoptimalkan perintah dengan menjalankan notebook pengoptimal perintah Vertex AI, atau dengan menggunakan Vertex AI API. Untuk mengoptimalkan perintah, pilih metode yang ingin Anda gunakan untuk menjalankan pengoptimal perintah Vertex AI, lalu selesaikan langkah-langkah seperti yang dijelaskan secara mendetail di bagian berikut:

  1. Membuat template perintah dan petunjuk sistem
  2. Menyiapkan contoh perintah
  3. Opsional: buat metrik kustom
  4. Membuat konfigurasi
  5. Jalankan tugas pengoptimalan perintah
  6. Menganalisis hasil dan melakukan iterasi

Membuat template perintah dan petunjuk sistem

Template perintah menentukan format semua perintah Anda melalui variabel yang dapat diganti. Saat Anda menggunakan template perintah untuk mengoptimalkan perintah, variabel diganti dengan data dalam set data perintah.

Variabel template perintah harus memenuhi persyaratan berikut:

  • Variabel harus diapit dalam tanda kurung kurawal
  • Nama variabel tidak boleh berisi spasi
  • Variabel yang merepresentasikan input multimodal harus menyertakan string MIME_TYPE setelah variabel:

    @@@MIME_TYPE
    

    Ganti MIME_TYPE dengan jenis MIME gambar, video, audio, atau dokumen yang didukung oleh model target.

Buat template perintah dan petunjuk sistem menggunakan salah satu metode berikut:

Notebook

Jika Anda ingin menjalankan pengoptimal perintah Vertex AI melalui notebook, buat petunjuk sistem dan template perintah dengan melakukan hal berikut:

  1. Di Colab Enterprise, buka notebook pengoptimal perintah Vertex AI.

    Buka notebook pengoptimal perintah Vertex AI

  2. Di bagian Buat template perintah dan petunjuk sistem, lakukan hal berikut:

    1. Di kolom SYSTEM_INSTRUCTION, masukkan petunjuk sistem Anda. Contoh:

      Based on the following images and articles respond to the questions.'\n' Be concise,
      and answer \"I don't know\" if the response cannot be found in the provided articles or images.
      
    2. Di kolom PROMPT_TEMPLATE, masukkan template perintah Anda. Misalnya:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. Jika Anda ingin mengoptimalkan perintah menggunakan evaluasi berbasis komputasi atau question_answering_correctness, Anda harus melakukan salah satu hal berikut:

    • Tambahkan variabel {target} ke template perintah, untuk merepresentasikan respons kebenaran dasar perintah. Contoh:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • Jika Anda tidak memiliki respons kebenaran dasar untuk perintah, tetapi Anda sebelumnya menggunakan perintah dengan model Google dan mencapai hasil yang diinginkan, Anda dapat menambahkan parameter source_model ke konfigurasi, bukan menambahkan respons kebenaran dasar. Jika parameter source_model ditetapkan, pengoptimal perintah Vertex AI akan menjalankan perintah contoh Anda pada model sumber untuk menghasilkan respons kebenaran dasar bagi Anda.

SDK

Jika Anda ingin menjalankan pengoptimal prompt Vertex AI melalui SDK tanpa menggunakan notebook, buat file teks untuk template prompt dan petunjuk sistem dengan melakukan hal berikut:

  1. Buat file teks untuk petunjuk sistem Anda.

  2. Dalam file teks, tentukan petunjuk sistem Anda ke file teks. Misalnya:

    Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
    
  3. Buat file teks untuk template perintah Anda.

  4. Dalam file teks, tentukan template perintah yang menyertakan satu atau beberapa variabel. Contoh:

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. Jika Anda ingin mengoptimalkan perintah menggunakan evaluasi berbasis komputasi atau question_answering_correctness, Anda harus melakukan salah satu hal berikut:

    • Tambahkan variabel {target} ke template perintah, untuk merepresentasikan respons kebenaran dasar perintah. Contoh:

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • Jika Anda tidak memiliki respons kebenaran dasar untuk perintah, tetapi Anda sebelumnya menggunakan perintah dengan model Google dan mencapai hasil yang diinginkan, Anda dapat menambahkan parameter source_model ke konfigurasi, bukan menambahkan respons kebenaran dasar. Jika parameter source_model ditetapkan, pengoptimal perintah Vertex AI akan menjalankan perintah contoh Anda pada model sumber untuk menghasilkan respons kebenaran dasar bagi Anda.

Menyiapkan contoh perintah

Untuk mendapatkan hasil terbaik dari pengoptimal perintah Vertex AI, gunakan 50-100 perintah contoh.

  • Alat ini tetap efektif dengan sedikitnya 5 contoh perintah.
  • Contoh terbaik mencakup contoh saat model target berperforma buruk.

Contoh perintah berisi data yang menggantikan variabel dalam template perintah. Anda dapat menggunakan file JSONL atau CSV untuk menyimpan contoh perintah.

File JSONL

  1. Buat file JSONL.
  2. Dalam file JSONL, tambahkan data perintah yang menggantikan setiap variabel. Misalnya:

    {"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."}
    
    {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
    
  3. Upload file JSONL ke bucket Cloud Storage.

File CSV

  1. Buat file CSV.
  2. Di baris pertama, tambahkan variabel dari template perintah Anda.
  3. Di baris berikut, tambahkan data sampel yang menggantikan setiap variabel.
  4. Upload file CSV ke bucket Cloud Storage.

Opsional: Membuat metrik kustom

Buat metrik kustom dengan melakukan langkah berikut:

  1. Buat file teks bernama requirements.txt.

  2. Dalam file requirements.txt, tentukan library yang diperlukan untuk fungsi metrik evaluasi kustom. Semua fungsi memerlukan paket functions-framework.

    Misalnya, file requirements.txt untuk metrik kustom yang menghitung ROUGE-L akan terlihat mirip dengan berikut ini:

    functions-framework==3.*
    rouge-score
    
  3. Buat file Python bernama main.py.

  4. Dalam file main.py, tulis fungsi evaluasi kustom Anda. Fungsi harus menerima hal berikut:

    • Permintaan POST HTTP
    • Input JSON yang berisi response, yang merupakan output dari LLM, dan target, yang merupakan respons kebenaran nyata untuk perintah.

    Misalnya, file main.py untuk metrik kustom yang menghitung ROUGE-L akan terlihat mirip dengan berikut:

    from typing import Any
    import json
    import functions_framework
    from rouge_score import rouge_scorer
    
    # Register an HTTP function with the Functions Framework
    @functions_framework.http
    def main(request):
       request_json = request.get_json(silent=True)
       if not request_json:
           raise ValueError('Can not find request json.')
    
       """Extract 'response' and 'target' from the request payload. 'response'
       represents the model's response, while 'target' represents the ground
       truth response."""
       response = request_json['response']
       reference = request_json['target']
    
       # Compute ROUGE-L F-measure
       scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True)
       scores = scorer.score(reference, response)
       final_score = scores['rougeL'].fmeasure
    
       # Return the custom score in the response
       return json.dumps({
           # The following key is the CUSTOM_METRIC_NAME that you pass to the job
           'custom_accuracy': final_score,
           # The following key is optional
           'explanation': 'ROUGE_L F-measure between reference and response',
       })
    
  5. Deploy fungsi evaluasi kustom Anda sebagai fungsi Cloud Run dengan menjalankan perintah gcloud functions deploy:

    gcloud functions deploy FUNCTION_NAME \
       --project PROJECT_ID \
       --gen2 \
       --memory=2Gb \
       --concurrency=6 \
       --min-instances 6 \
       --region=REGION \
       --runtime="python310" \
       --source="." \
       --entry-point main \
       --trigger-http \
       --timeout=3600 \
       --quiet
    

    Ganti kode berikut:

    • FUNCTION_NAME: nama untuk metrik evaluasi kustom.
    • PROJECT_ID: project ID Anda.
    • REGION: region tempat Anda ingin men-deploy fungsi.

Membuat konfigurasi

Konfigurasi pengoptimal perintah Vertex AI menentukan parameter yang ingin Anda tetapkan untuk tugas pengoptimalan perintah.

Buat konfigurasi menggunakan salah satu opsi berikut:

Notebook

Jika Anda ingin menjalankan pengoptimal perintah Vertex AI melalui notebook, buat konfigurasi dengan melakukan hal berikut:

  1. Di Colab Enterprise, buka notebook pengoptimal perintah Vertex AI.

    Buka notebook pengoptimal perintah Vertex AI

  2. Di bagian Configure project settings, lakukan hal berikut:

    1. Di kolom PROJECT_ID, masukkan project ID Anda.
    2. Di kolom LOCATION, masukkan lokasi tempat Anda ingin menjalankan pengoptimal perintah Vertex AI.
    3. Di kolom OUTPUT_PATH, masukkan URI untuk bucket Cloud Storage tempat Anda ingin pengoptimal perintah Vertex AI menulis petunjuk sistem yang dioptimalkan dan/atau contoh beberapa cuplikan. Contoh, gs://bucket-name/output-path.
    4. Di kolom INPUT_PATH, masukkan URI untuk contoh perintah di bucket Cloud Storage Anda. Contoh, gs://bucket-name/sample-prompts.jsonl.
  3. Di bagian Konfigurasi setelan pengoptimalan, lakukan hal berikut:

    1. Di kolom TARGET_MODEL, masukkan model yang ingin Anda optimalkan prompt-nya.
    2. Di OPTIMIZATION_MODE, masukkan mode pengoptimalan yang ingin Anda gunakan. Harus salah satu dari instruction, demonstration, atau instruction_and_demo.
    3. Di kolom EVAL_METRIC, masukkan metrik evaluasi yang ingin Anda optimalkan untuk perintah Anda.
    4. Opsional: Di kolom SOURCE_MODEL, masukkan model Google yang sebelumnya digunakan dengan petunjuk dan perintah sistem. Jika parameter source_model disetel, pengoptimal prompt Vertex AI akan menjalankan contoh prompt Anda pada model sumber untuk menghasilkan respons kebenaran dasar bagi Anda, untuk metrik evaluasi yang memerlukan respons kebenaran dasar. Jika sebelumnya Anda tidak menjalankan perintah dengan model Google atau Anda tidak mencapai hasil target, tambahkan respons data sebenarnya ke perintah Anda. Untuk mengetahui informasi selengkapnya, lihat bagian Membuat perintah dan petunjuk sistem dalam dokumen ini.
  4. Opsional: Di bagian Konfigurasi setelan pengoptimalan lanjutan, Anda juga dapat menambahkan parameter opsional ke konfigurasi.

  5. Melihat parameter opsional
    • Di kolom NUM_INST_OPTIMIZATION_STEPS, masukkan jumlah iterasi yang digunakan pengoptimal perintah Vertex AI dalam mode pengoptimalan perintah. Durasi meningkat secara linear saat Anda menaikkan nilai ini. Harus berupa bilangan bulat antara 10 dan 20. Jika tidak disetel, defaultnya adalah 10.
    • Di kolom NUM_TEMPLATES_PER_STEP, masukkan jumlah petunjuk sistem yang dihasilkan dan dievaluasi oleh pengoptimal perintah Vertex AI. Digunakan dengan mode pengoptimalan instruction dan instruction_and_demo. Harus berupa bilangan bulat antara 1 dan 4. Jika tidak disetel, defaultnya adalah 2.
    • Di kolom NUM_DEMO_OPTIMIZATION_STEPS, masukkan jumlah demonstrasi yang dievaluasi oleh pengoptimal perintah Vertex AI. Digunakan dengan mode pengoptimalan demonstration dan instruction_and_demo. Harus berupa bilangan bulat antara 10 dan 30. Jika tidak disetel, defaultnya adalah 10.
    • Di kolom NUM_DEMO_PER_PROMPT, masukkan jumlah demonstrasi yang dibuat per perintah. Harus berupa bilangan bulat antara 3 dan 6. Jika tidak disetel, defaultnya adalah 3.
    • Di kolom TARGET_MODEL_QPS, masukkan kueri per detik (QPS) yang dikirimkan pengoptimal perintah Vertex AI ke model target. Waktu proses menurun secara linear saat Anda meningkatkan nilai ini. Harus berupa float yang 3.0 atau lebih besar, tetapi kurang dari kuota QPS yang Anda miliki pada model target. Jika tidak disetel, defaultnya adalah 3.0.
    • Di kolom SOURCE_MODEL_QPS, masukkan kueri per detik (QPS) yang dikirimkan pengoptimal perintah Vertex AI ke model sumber. Harus berupa float yang 3.0 atau lebih besar, tetapi kurang dari kuota QPS yang Anda miliki pada model sumber. Jika tidak disetel, defaultnya adalah 3.0.
    • Di kolom EVAL_QPS, masukkan kueri per detik (QPS) yang dikirimkan pengoptimal perintah Vertex AI ke model evaluasi, gemini-1.5-pro.
      • Untuk metrik berbasis model, harus berupa float yang 3.0 atau lebih besar, tetapi kurang dari kuota yang Anda miliki untuk gemini-1.5-pro. Jika tidak disetel, defaultnya adalah 3.0.
      • Untuk metrik kustom, harus berupa float yang 3.0 atau lebih besar. Hal ini menentukan kecepatan pemanggilan fungsi Cloud Run metrik kustom oleh pengoptimal prompt Vertex AI.
    • Jika Anda ingin menggunakan lebih dari satu metrik evaluasi, lakukan hal berikut:
      1. Di kolom EVAL_METRIC_1, masukkan metrik evaluasi yang ingin Anda gunakan.
      2. Di kolom EVAL_METRIC_1_WEIGHT, masukkan bobot yang Anda inginkan agar pengoptimal perintah Vertex AI gunakan saat menjalankan pengoptimalan.
      3. Di kolom EVAL_METRIC_2, masukkan metrik evaluasi yang ingin Anda gunakan.
      4. Di kolom EVAL_METRIC_2_WEIGHT, masukkan bobot yang Anda inginkan agar pengoptimal perintah Vertex AI gunakan saat menjalankan pengoptimalan.
      5. Di kolom EVAL_METRIC_3, masukkan metrik evaluasi yang ingin Anda gunakan (opsional).
      6. Di kolom EVAL_METRIC_3_WEIGHT, masukkan bobot yang Anda inginkan untuk digunakan oleh pengoptimal perintah Vertex AI saat menjalankan pengoptimalan secara opsional.
      7. Di kolom METRIC_AGGREGATION_TYPE, masukkan bobot yang Anda inginkan agar pengoptimal perintah Vertex AI gunakan saat menjalankan pengoptimalan.
    • Di kolom PLACEHOLDER_TO_VALUE, masukkan informasi yang menggantikan variabel apa pun dalam petunjuk sistem. Informasi yang disertakan dalam tanda ini tidak dioptimalkan oleh pengoptimal perintah Vertex AI.
    • Di kolom RESPONSE_MIME_TYPE, masukkan jenis respons MIME yang digunakan oleh model target. Harus salah satu dari text/plain atau application/json. Jika tidak disetel, defaultnya adalah text/plain.
    • Di kolom TARGET_LANGUAGE, masukkan bahasa petunjuk sistem. Jika tidak disetel, defaultnya adalah bahasa Inggris.

SDK

Jika Anda ingin menjalankan pengoptimal prompt Vertex AI melalui SDK, buat file JSON dengan parameter yang ingin Anda gunakan untuk mengoptimalkan prompt dengan melakukan hal berikut:

  1. Buat file JSON dengan parameter yang ingin Anda gunakan untuk mengoptimalkan perintah. Setiap file konfigurasi memerlukan parameter berikut:

    {
     "project": "PROJECT_ID",
     "system_instruction_path": "SYSTEM_INSTRUCTION_PATH",
     "prompt_template_path": "PROMPT_TEMPLATE_PATH",
     "target_model": "TARGET_MODEL",
     EVALUATION_METRIC_PARAMETERS,
     "optimization_mode": "OPTIMIZATION_MODE",
     "input_data_path": "SAMPLE_PROMPT_URI",
     "output_path": "OUTPUT_URI"
    }
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • SYSTEM_INSTRUCTION_PATH: URI untuk petunjuk sistem di bucket Cloud Storage Anda. Contoh, gs://bucket-name/system-instruction.txt.
    • PROMPT_TEMPLATE: URI untuk template perintah di bucket Cloud Storage Anda. Sebagai contoh, gs://bucket-name/prompt-template.txt
    • TARGET_MODEL: model yang ingin Anda optimalkan perintahnya.
    • EVALUATION_METRIC_PARAMETERS: parameter yang Anda tentukan bergantung pada jumlah metrik evaluasi yang Anda gunakan, dan apakah metrik Anda standar atau kustom:

      Metrik standar tunggal

      Jika Anda menggunakan satu metrik evaluasi standar, gunakan parameter berikut:

       "eval_metric": "EVALUATION_METRIC",
       

      Ganti EVALUATION_METRIC dengan metrik yang ingin Anda optimalkan perintahnya.

      Metrik kustom tunggal

      Jika Anda menggunakan satu metrik evaluasi kustom, gunakan parameter berikut:

      "eval_metric": "custom_metric",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      Ganti kode berikut:

      • CUSTOM_METRIC_NAME: nama metrik, seperti yang ditentukan oleh kunci yang sesuai dengan final_score. Contohnya, custom_accuracy.
      • FUNCTION_NAME: nama fungsi Cloud Run yang sebelumnya Anda deploy.

      Beberapa metrik standar

      Jika Anda menggunakan beberapa metrik evaluasi standar, gunakan parameter berikut:

      "eval_metrics_types": [EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      

      Ganti kode berikut:

      • EVALUATION_METRIC_LIST: daftar metrik evaluasi. Harus berupa array. Contoh, "bleu", "summarization_quality".
      • EVAL_METRICS_WEIGHTS: bobot untuk setiap metrik. Harus berupa array.
      • METRIC_AGGREGATION_TYPE: jenis agregasi yang digunakan untuk metrik evaluasi. Harus salah satu dari weighted_sum atau weighted_average. Jika tidak disetel, defaultnya adalah weighted_sum.

      Beberapa metrik standar & kustom

      Jika Anda menggunakan beberapa metrik evaluasi yang mencakup campuran dari satu metrik kustom dan satu atau beberapa metrik standar, gunakan parameter berikut:

      "eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      Ganti kode berikut:

      • EVALUATION_METRIC_LIST: daftar metrik evaluasi standar. Harus berupa array. Contoh, "bleu", "summarization_quality".
      • EVAL_METRICS_WEIGHTS: bobot untuk setiap metrik. Harus berupa array.
      • METRIC_AGGREGATION_TYPE: jenis agregasi yang digunakan untuk metrik evaluasi. Harus salah satu dari weighted_sum atau weighted_average. Jika tidak disetel, defaultnya adalah weighted_sum.
      • CUSTOM_METRIC_NAME: nama metrik, seperti yang ditentukan oleh kunci yang sesuai dengan final_score. Misalnya, custom_accuracy.
      • FUNCTION_NAME: nama fungsi Cloud Run yang sebelumnya Anda deploy.
    • OPTIMIZATION_MODE: mode pengoptimalan. Harus salah satu dari instruction, demonstration, atau instruction_and_demo.

    • SAMPLE_PROMPT_URI: URI untuk contoh perintah di bucket Cloud Storage Anda. Contoh, gs://bucket-name/sample-prompts.jsonl.

    • OUTPUT_URI: URI untuk bucket Cloud Storage tempat Anda ingin pengoptimal perintah Vertex AI menulis petunjuk sistem yang dioptimalkan dan/atau contoh beberapa cuplikan. Contoh, gs://bucket-name/output-path.

  2. Selain itu, Anda dapat menambahkan parameter opsional ke file konfigurasi.

    Parameter opsional dibagi menjadi 5 kategori:

    • Parameter proses pengoptimalan. Parameter ini mengontrol keseluruhan proses pengoptimalan, termasuk durasinya dan jumlah iterasi pengoptimalan yang dijalankannya, yang secara langsung memengaruhi kualitas pengoptimalan.
    • Pemilihan model dan parameter lokasi. Parameter ini menentukan model mana yang digunakan pengoptimal perintah Vertex AI dan lokasi tempat model tersebut digunakan.
    • Parameter latensi (QPS). Parameter ini mengontrol QPS, yang memengaruhi kecepatan proses pengoptimalan.
    • Lainnya. Parameter lain yang mengontrol struktur dan konten perintah.

      Melihat parameter opsional
      "num_steps": NUM_INST_OPTIMIZATION_STEPS,
      "num_template_eval_per_step": NUM_TEMPLATES_PER_STEP,
      "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS,
      "demo_set_size": NUM_DEMO_PER_PROMPT,
      "target_model_location": "TARGET_MODEL_LOCATION",
      "source_model": "SOURCE_MODEL",
      "source_model_location": "SOURCE_MODEL_LOCATION",
      "target_model_qps": TARGET_MODEL_QPS,
      "eval_qps": EVAL_QPS,
      "source_model_qps": SOURCE_MODEL_QPS,
      "response_mime_type": "RESPONSE_MIME_TYPE",
      "language": "TARGET_LANGUAGE",
      "placeholder_to_content": "PLACEHOLDER_TO_CONTENT",
      "data_limit": DATA_LIMIT
      

      Ganti kode berikut:

      • Parameter proses pengoptimalan:

        • NUM_INST_OPTIMIZATION_STEPS: jumlah iterasi yang digunakan pengoptimal perintah Vertex AI dalam mode pengoptimalan perintah. Durasi meningkat secara linear saat Anda menaikkan nilai ini. Harus berupa bilangan bulat antara 10 dan 20. Jika dibiarkan tidak disetel, defaultnya adalah 10.
        • NUM_TEMPLATES_PER_STEP: jumlah petunjuk sistem yang dihasilkan dan dievaluasi oleh pengoptimal prompt Vertex AI. Digunakan dengan mode pengoptimalan instruction dan instruction_and_demo. Harus berupa bilangan bulat antara 1 dan 4. Jika tidak disetel, defaultnya adalah 2.
        • NUM_DEMO_OPTIMIZATION_STEPS: jumlah demonstrasi yang dievaluasi oleh pengoptimal prompt Vertex AI. Digunakan dengan mode pengoptimalan demonstration dan instruction_and_demo. Harus berupa bilangan bulat antara 10 dan 30. Jika tidak disetel, defaultnya adalah 10.
        • NUM_DEMO_PER_PROMPT: jumlah demonstrasi yang dihasilkan per perintah. Harus berupa bilangan bulat antara 3 dan 6. Jika tidak disetel, defaultnya adalah 3.
      • Pemilihan model dan parameter lokasi:

        • TARGET_MODEL_LOCATION: lokasi tempat Anda ingin menjalankan model target. Jika tidak disetel, defaultnya adalah us-central1.
        • SOURCE_MODEL: model Google yang sebelumnya digunakan dengan petunjuk dan perintah sistem. Jika parameter source_model disetel, Vertex AI akan menjalankan perintah contoh pada model sumber untuk menghasilkan respons kebenaran nyata bagi Anda, untuk metrik evaluasi yang memerlukan respons kebenaran nyata. Jika sebelumnya Anda tidak menjalankan perintah dengan model Google atau Anda tidak mencapai hasil target, tambahkan respons kebenaran dasar ke perintah Anda. Untuk mengetahui informasi selengkapnya, lihat bagian Membuat perintah dan petunjuk sistem dalam dokumen ini.
        • SOURCE_MODEL_LOCATION: lokasi tempat Anda ingin menjalankan model sumber. Jika tidak disetel, defaultnya adalah us-central1.
      • Parameter latensi (QPS):

        • TARGET_MODEL_QPS: kueri per detik (QPS) yang dikirim oleh pengoptimal perintah Vertex AI ke model target. Waktu proses menurun secara linear saat Anda meningkatkan nilai ini. Harus berupa float yang 3.0 atau lebih besar, tetapi kurang dari kuota QPS yang Anda miliki pada model target. Jika tidak disetel, defaultnya adalah 3.0.
        • EVAL_QPS: kueri per detik (QPS) yang dikirim pengoptimal perintah Vertex AI ke model evaluasi, gemini-1.5-pro.
          • Untuk metrik berbasis model, harus berupa float yang 3.0 atau lebih besar, tetapi kurang dari kuota yang Anda miliki untuk gemini-1.5-pro. Jika tidak disetel, defaultnya adalah 3.0.
          • Untuk metrik kustom, harus berupa float yang 3.0 atau lebih besar. Hal ini menentukan kecepatan pemanggilan fungsi Cloud Run metrik kustom oleh pengoptimal prompt Vertex AI.
        • SOURCE_MODEL_QPS: kueri per detik (QPS) yang dikirim pengoptimal perintah Vertex AI ke model sumber. Harus berupa float yang 3.0 atau lebih besar, tetapi kurang dari kuota QPS yang Anda miliki pada model sumber. Jika tidak disetel, defaultnya adalah 3.0.
      • Parameter lainnya:

        • RESPONSE_MIME_TYPE: jenis respons MIME yang digunakan model target. Harus salah satu dari text/plain atau application/json. Jika tidak disetel, defaultnya adalah text/plain.
        • TARGET_LANGUAGE: bahasa petunjuk sistem. Jika tidak disetel, defaultnya adalah bahasa Inggris.
        • PLACEHOLDER_TO_CONTENT: informasi yang menggantikan variabel apa pun dalam petunjuk sistem. Informasi yang disertakan dalam tanda ini tidak dioptimalkan oleh pengoptimal perintah Vertex AI.
        • DATA_LIMIT: jumlah data yang digunakan untuk validasi. Waktu proses meningkat secara linear dengan nilai ini. Harus berupa bilangan bulat antara 5 dan 100. Jika tidak disetel, defaultnya adalah 100.
  3. Upload file JSON ke bucket Cloud Storage.

Menjalankan pengoptimal perintah

Jalankan pengoptimal perintah Vertex AI menggunakan salah satu opsi berikut:

Notebook

Jalankan pengoptimal perintah Vertex AI melalui notebook, dengan melakukan hal berikut:

  1. Di Colab Enterprise, buka notebook pengoptimal perintah Vertex AI.

    Buka notebook pengoptimal perintah Vertex AI

  2. Di bagian Run prompt optimizer, klik play_circle Run cell.

    Operasi pengoptimal perintah Vertex AI.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: lokasi tempat Anda ingin menjalankan pengoptimal prompt Vertex AI.
  • PROJECT_ID: Project ID Anda.
  • JOB_NAME: nama untuk tugas pengoptimal perintah Vertex AI.
  • PATH_TO_CONFIG: URI file konfigurasi di bucket Cloud Storage Anda. Contoh, gs://bucket-name/configuration.json.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs

Isi JSON permintaan:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "n1-standard-4"
        },
        "replicaCount": 1,
        "containerSpec": {
          "imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
          "args": ["--config=PATH_TO_CONFIG""]
        }
      }
    ]
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Responsnya akan terlihat mirip dengan berikut ini:

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from google.cloud import aiplatform

# Initialize Vertex AI platform
aiplatform.init(project=PROJECT_ID, location="us-central1")

# TODO(Developer): Check and update lines below
# cloud_bucket = "gs://cloud-samples-data"
# config_path = f"{cloud_bucket}/instructions/sample_configuration.json"
# output_path = "custom_job/output/"

custom_job = aiplatform.CustomJob(
    display_name="Prompt Optimizer example",
    worker_pool_specs=[
        {
            "replica_count": 1,
            "container_spec": {
                "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
                "args": [f"--config={cloud_bucket}/{config_path}"],
            },
            "machine_spec": {
                "machine_type": "n1-standard-4",
            },
        }
    ],
    staging_bucket=cloud_bucket,
    base_output_dir=f"{cloud_bucket}/{output_path}",
)

custom_job.submit()
print(f"Job resource name: {custom_job.resource_name}")
# Example response:
#    'projects/123412341234/locations/us-central1/customJobs/12341234123412341234'

Menganalisis hasil dan melakukan iterasi

Setelah menjalankan pengoptimal perintah Vertex AI, tinjau progres tugas menggunakan salah satu opsi berikut:

Notebook

Jika Anda ingin melihat hasil pengoptimal perintah Vertex AI melalui notebook, lakukan hal berikut:

  1. Buka notebook pengoptimal perintah Vertex AI.

  2. Di bagian Periksa hasil, lakukan hal berikut:

    1. Di kolom RESULT_PATH, tambahkan URI bucket Cloud Storage yang Anda konfigurasi untuk pengoptimal perintah Vertex AI agar dapat menulis hasil ke bucket tersebut. Contoh, gs://bucket-name/output-path.

    2. Klik play_circle Run cell.

Konsol

  1. Di konsol Google Cloud , di bagian Vertex AI, buka halaman Training pipelines.

    Buka Training pipelines

  2. Klik tab Custom jobs. Tugas pelatihan kustom pengoptimal perintah Vertex AI akan muncul dalam daftar beserta statusnya.

Setelah tugas selesai, tinjau pengoptimalan dengan melakukan hal berikut:

  1. Di Google Cloud konsol, buka halaman Bucket Cloud Storage:

    Buka Buckets

  2. Klik nama bucket Cloud Storage Anda.

  3. Buka folder yang memiliki nama yang sama dengan mode pengoptimalan yang Anda gunakan untuk mengevaluasi perintah, baik instruction maupun demonstration. Jika Anda menggunakan mode instruction_and_demo, kedua folder akan muncul. Folder instruction berisi hasil dari pengoptimalan instruksi sistem, sedangkan folder demonstration berisi hasil dari pengoptimalan demonstration dan instruksi sistem yang dioptimalkan.

    Folder ini berisi file berikut:

    • config.json: konfigurasi lengkap yang digunakan pengoptimal prompt Vertex AI.
    • templates.json: setiap set petunjuk sistem dan/atau contoh beberapa shot yang dihasilkan oleh pengoptimal perintah Vertex AI dan skor evaluasinya.
    • eval_results.json: respons model target untuk setiap perintah contoh untuk setiap set petunjuk sistem yang dibuat dan/atau contoh beberapa cuplikan dan skor evaluasinya.
    • optimized_results.json: petunjuk sistem dan/atau contoh sedikit tembakan yang berperforma terbaik serta skor evaluasinya.
  4. Untuk melihat petunjuk sistem yang dioptimalkan, lihat file optimized_results.json.

Langkah berikutnya