Notebook ini memperkenalkan perintah ajaib Colab untuk PaLM. Dengan fitur ajaib, Anda dapat mengembangkan, menguji, membandingkan, dan mengevaluasi perintah dari dalam notebook Colab dengan mudah.
Lihat di ai.google.dev | Menjalankan di Google Colab | Lihat sumber di GitHub |
Penyiapan
Ikuti langkah-langkah di bawah untuk menginstal dan menguji keajaibannya.
Menginstal keajaiban PaLM
Untuk menggunakan perintah magic PaLM di Colab atau lingkungan IPython, Anda harus mendownload dan menginstal paket Python google-generativeai
terlebih dahulu.
%pip install -q google-generativeai
Memuat keajaiban PaLM
Selanjutnya, muat keajaiban %%palm
dengan menggunakan sihir %load_ext
:
%load_ext google.generativeai.notebook
Menguji penginstalan
Untuk menguji penginstalan perintah ajaib yang benar, jalankan %%palm --help
. Perhatikan bahwa Anda juga akan memerlukan kunci PaLM API, jika belum memilikinya (lihat langkah berikutnya).
%%palm --help
usage: palm [-h] {run,compile,compare,eval} ... A system for interacting with LLMs. positional arguments: {run,compile,compare,eval} options: -h, --help show this help message and exit
Mendapatkan kunci PaLM API
Untuk menggunakan PaLM API, Anda harus membuat kunci API. (Anda hanya perlu melakukan langkah ini satu kali.)
Menetapkan kunci API di notebook
Tetapkan kunci API Anda dengan menjalankan sel di bawah.
%env GOOGLE_API_KEY=YOUR PALM KEY
Perintah magic PaLM: run
, compile
, compare
, dan evaluate
PaLM Magic menyediakan empat perintah yang berbeda:
run
compile
compare
evaluate
Perintah: palm run
Perintah run
mengirim konten sel ke model.
Karena menjalankan prompt sangat umum, PaLM Magic secara default disetel ke perintah run
jika tidak ada perintah yang diberikan. Misalnya, dua sel berikutnya identik.
%%palm run
The opposite of hot is
%%palm
The opposite of hot is
Memahami output
Kolom Prompt
menampilkan teks yang dikirim ke model, dan kolom text_result
menampilkan hasilnya. Kolom lainnya akan diperkenalkan saat Anda mempelajari panduan ini.
Template perintah
Perintah tidak harus berupa string tetap. Anda dapat memasukkan nilai ke dalam perintah menggunakan placeholder template menggunakan {curly braces}
.
english_words = {
# Each value here (hot, cold) will be substituted in for {word} in the prompt
'word': ['hot', 'cold']
}
%%palm --inputs english_words
The opposite of {word} is
Memahami output
Kolom Input Num
melacak indeks kata input dalam daftar. Dalam
contoh ini, Input Num
dari 0
adalah 'hot'
, dan 1
adalah 'cold'
.
Menentukan beberapa kumpulan {i>input<i}
Anda juga dapat menentukan beberapa kumpulan input sekaligus.
extreme_temperatures = {
'word': ['hot', 'cold']
}
minor_temperatures = {
'word': ['warm', 'chilly']
}
%%palm --inputs extreme_temperatures minor_temperatures
The opposite of {word} is
Membaca data dari Google Spreadsheet
Keajaiban PaLM juga dapat membaca dan menulis ke Google Spreadsheet. Anda harus masuk untuk mengakses data Spreadsheet. Bagian ini berfokus pada pembacaan data dari Spreadsheet; bagian selanjutnya menunjukkan cara menulis output ke Spreadsheet Google.
Login dan izinkan akses ke Spreadsheet
Memformat {i>spreadsheet<i} untuk digunakan dengan keajaiban PaLM
Teruskan ID atau URL Spreadsheet Google ke tanda --sheets_input_names
untuk memuatnya sebagai data template.
Gunakan format berikut di {i>spreadsheet<i} Anda untuk menggunakan data dalam {i>template<i} petunjuk:
- Letakkan nama variabel (dari {i>template<i} perintah Anda) di baris pertama pada {i>sheet<i}.
- Tempatkan data untuk menggantikan setiap variabel pada baris di bawah.
Misalnya, jika template perintah Anda memiliki dua variabel untuk diganti, name
dan temperament
, Anda akan menulis spreadsheet seperti ini:
name | temperamen |
---|---|
Milo | nakal |
Sangat besar | santai |
Subra | malu |
%%palm --sheets_input_names https://docs.google.com/spreadsheets/d/1UHfpkmBqIX5RjeJcGXOevIEhMmEoKlf5f9teqwQyHqc/edit
Create a single sentence description of a monkey's personality. The monkey's name is {name} and it has a {temperament} temperament.
Cobalah sendiri!
Untuk mencobanya menggunakan data Anda sendiri, buat Sheet baru dan teruskan ID ke --sheets_input_names
. Selain ID dan URL, Anda juga dapat menelusuri sheet berdasarkan judul, misalnya, %%palm --sheets_input_names "Animal adjectives"
.
Menggabungkan input Spreadsheet dengan input Python
Input Spreadsheet juga dapat digabungkan dengan --inputs
:
new_monkeys = {
'name': ['Hackerella'],
'temperament': ['clever'],
}
%%palm --inputs new_monkeys --sheets_input_names 1UHfpkmBqIX5RjeJcGXOevIEhMmEoKlf5f9teqwQyHqc 1UHfpkmBqIX5RjeJcGXOevIEhMmEoKlf5f9teqwQyHqc
Create a single sentence description of a monkey's personality. The monkey's name is {name} and it has a {temperament} temperament.
Perintah: palm eval
Gunakan %%palm eval
untuk membandingkan output prompt dengan data kebenaran dasar yang diketahui.
test_data = {
"word": ["dog", "cat", "house"]
}
ground_truth = ["chien", "chat", "maison"]
%%palm eval --inputs test_data --ground_truth ground_truth
English: Hello
French: Bonjour
English: {word}
French:
Output model pascapemrosesan
Untuk melakukan pengujian kebenaran dasar, Anda mungkin perlu melakukan pascapemrosesan pada output model.
Fungsi pascapemrosesan memungkinkan Anda menentukan fungsi yang memproses output model. Dalam kasus perintah eval
, hanya kolom hasil yang digunakan dalam pemeriksaan kesetaraan akhir.
Gunakan dekorator post_process_replace_fn
untuk menentukan fungsi guna pasca-proses:
from google.generativeai.notebook import magics
# Define a function to extract only the first response.
@magics.post_process_replace_fn
def extract_and_normalize(input):
first_line, *unused = input.split('English:')
return first_line.strip().lower()
Fungsi extract_and_normalize
yang ditentukan di atas akan mengambil output dari model dan memangkas pasangan bahasa berulang, sehingga hanya menyisakan respons pertama. Lihat bagian pascapemrosesan untuk mempelajari pascapemrosesan lebih lanjut.
%%palm eval --inputs test_data --ground_truth ground_truth | extract_and_normalize
English: Hello
French: Bonjour
English: {word}
French:
Perintah: palm compile
Gunakan perintah %%palm compile
untuk mengonversi perintah dengan placeholder menjadi fungsi callable dari dalam Python.
Semua tanda dan pasca-pemrosesan "dikompilasi" ke dalam fungsi dan akan digunakan saat dipanggil.
Dalam contoh ini, fungsi bernama translate_en_to_fr
dibuat, menggunakan fungsi pascapemrosesan extract_and_normalize
dari sebelumnya.
%%palm compile translate_en_to_fr | extract_and_normalize
English: Hello
French: Bonjour
English: {word}
French:
'Saved function to Python variable: translate_en_to_fr'
en_words = ['cat', 'dog']
translate_en_to_fr({'word': en_words})
Format output
Secara default, fungsi "dikompilasi" menampilkan output-nya sebagai objek yang akan ditampilkan sebagai DataFrame
Panda. Namun, Anda dapat mengonversi objek hasil menjadi DataFrame
atau kamus dengan .as_dict()
atau .as_dataframe()
.
Untuk mengetahui informasi selengkapnya, lihat flag --outputs
.
results = translate_en_to_fr({'word': en_words}).as_dict()
fr_words = results['text_result']
for en, fr in zip(en_words, fr_words):
print(f'{fr} is French for {en}')
chat is French for cat chien is French for dog
Perintah: palm compare
%%palm compare
menjalankan perintah yang dikompilasi dan menghasilkan tabel yang berisi hasil perbandingan secara berdampingan, sehingga Anda dapat memeriksa perbedaannya.
%%palm compile few_shot_prompt
English: Hello
French: Bonjour
English: {word}
French:
'Saved function to Python variable: few_shot_prompt'
%%palm compile zero_shot_prompt
{word} translated to French is:
'Saved function to Python variable: zero_shot_prompt'
words = {
"word": ["dog", "cat", "house"]
}
%%palm compare few_shot_prompt zero_shot_prompt --inputs words
Fungsi perbandingan kustom
Secara default, compare
hanya memeriksa kesetaraan di hasil yang ditampilkan. Namun, Anda dapat menentukan satu atau beberapa fungsi kustom dengan flag --compare_fn
:
def average_word_length(lhs, rhs):
"""Count the average number of words used across prompts."""
return (len(lhs.split(' ')) + len(rhs.split(' '))) / 2
def shortest_answer(lhs, rhs):
"""Label the prompt that generated the shortest output."""
if len(lhs) < len(rhs):
return 'first'
elif len(lhs) > len(rhs):
return 'second'
else:
return 'same'
%%palm compare few_shot_prompt zero_shot_prompt --inputs words --compare_fn average_word_length shortest_answer
Perintah lainnya
Bantuan
Tanda --help
menampilkan perintah yang didukung yang dapat Anda teruskan langsung ke %%palm
Tambahkan --help
untuk melihat dokumentasi mendetail untuk setiap perintah. Misalnya,
%%palm run --help
usage: palm run [-h] [--model_type {echo,text}] [--temperature TEMPERATURE] [--model MODEL] [--candidate_count CANDIDATE_COUNT] [--unique] [--inputs INPUTS [INPUTS ...]] [--sheets_input_names SHEETS_INPUT_NAMES [SHEETS_INPUT_NAMES ...]] [--outputs OUTPUTS [OUTPUTS ...]] [--sheets_output_names SHEETS_OUTPUT_NAMES [SHEETS_OUTPUT_NAMES ...]] options: -h, --help show this help message and exit --model_type {echo,text}, -mt {echo,text} The type of model to use. --temperature TEMPERATURE, -t TEMPERATURE Controls the randomness of the output. Must be positive. Typical values are in the range: [0.0, 1.0]. Higher values produce a more random and varied response. A temperature of zero will be deterministic. --model MODEL, -m MODEL The name of the model to use. If not provided, a default model will be used. --candidate_count CANDIDATE_COUNT, -cc CANDIDATE_COUNT The number of candidates to produce. --unique Whether to dedupe candidates returned by the model. --inputs INPUTS [INPUTS ...], -i INPUTS [INPUTS ...] Optional names of Python variables containing inputs to use to instantiate a prompt. The variable must be either: a dictionary {'key1': ['val1', 'val2'] ...}, or an instance of LLMFnInputsSource such as SheetsInput. --sheets_input_names SHEETS_INPUT_NAMES [SHEETS_INPUT_NAMES ...], -si SHEETS_INPUT_NAMES [SHEETS_INPUT_NAMES ...] Optional names of Google Sheets to read inputs from. This is equivalent to using --inputs with the names of variables that are instances of SheetsInputs, just more convenient to use. --outputs OUTPUTS [OUTPUTS ...], -o OUTPUTS [OUTPUTS ...] Optional names of Python variables to output to. If the Python variable has not already been defined, it will be created. If the variable is defined and is an instance of LLMFnOutputsSink, the outputs will be written through the sink's write_outputs() method. --sheets_output_names SHEETS_OUTPUT_NAMES [SHEETS_OUTPUT_NAMES ...], -so SHEETS_OUTPUT_NAMES [SHEETS_OUTPUT_NAMES ...] Optional names of Google Sheets to write inputs to. This is equivalent to using --outputs with the names of variables that are instances of SheetsOutputs, just more convenient to use.
Model
Gunakan flag --model
untuk menentukan varian model PaLM yang ingin Anda gunakan.
Lihat metode list_models()
untuk mengambil model yang didukung. Keajaiban PaLM dapat digunakan dengan model apa pun yang mendukung metode generateText
.
%%palm run --model models/text-bison-001
My favourite color is
Parameter model
Anda juga dapat mengonfigurasi parameter model, seperti --candidate_count
dan --temperature
.
%%palm run --model models/text-bison-001 --temperature 0.5
My favourite color is
Debug: Model echo
Model echo
juga tersedia yang akan mengulangi perintah tersebut kepada Anda. Aplikasi ini tidak membuat panggilan API atau menghabiskan kuota Anda sehingga ini bisa menjadi cara cepat dan sederhana untuk menguji output atau pasca-pemrosesan.
%%palm --model_type echo
A duck's quack does not echo.
Mengekspor output ke Python
Selain menampilkan output berbentuk tabel, keajaiban PaLM dapat menyimpan output model ke variabel Python, yang memungkinkan Anda memanipulasinya lebih lanjut atau mengekspor hasil.
Dalam contoh ini, output disimpan ke variabel Python: fave_colors
%%palm --outputs fave_colors
The best colors to wear in spring-time are
Variabel output adalah objek kustom yang akan ditampilkan sebagai DataFrame
Panda secara default. Fungsi tersebut dapat dikonversi menjadi kamus atau {i>dataframe<i} Python secara eksplisit dengan memanggil as_dict()
atau as_pandas_dataframe()
.
from pprint import pprint
pprint(fave_colors.as_dict())
{'Input Num': [0], 'Prompt': ['The best colors to wear in spring-time are'], 'Prompt Num': [0], 'Result Num': [0], 'text_result': ['* Pastels: These soft, muted colors are perfect for the ' 'springtime, as they are fresh and airy. Some popular pastel ' 'colors include baby blue, mint green, and pale pink.\n' '* Brights: If you want to make a statement, bright colors ' 'are a great option for spring. Some popular bright colors ' 'include fuchsia, cobalt blue, and yellow.\n' '* Neutrals: Neutral colors are always a good choice, as they ' 'can be easily dressed up or down. Some popular neutrals ' 'include beige, gray, and white.\n' '\n' 'When choosing colors to wear in the spring, it is important ' 'to consider the occasion and your personal style. For ' 'example, if you are attending a formal event, you may want ' 'to choose a more muted color palette, such as pastels or ' 'neutrals. If you are going for a more casual look, you may ' 'want to choose brighter colors, such as brights or pastels.']}
Menulis ke Google Spreadsheet
Anda dapat menyimpan output kembali ke Google Spreadsheet, menggunakan --sheets_output_names
. Anda harus login, dan harus memiliki izin yang sesuai untuk mengakses Spreadsheet pribadi.
Untuk mencobanya, buat Sheet baru dan beri nama Translation results
. Seperti tanda input, tanda --sheets_output_names
juga menerima URL atau ID sheet sebagai pengganti nama tekstual.
%%palm --inputs english_words --sheets_output_names "Translation results"
English: Hello
French: Bonjour
English: {word}
French:
Hasilnya akan disimpan ke tab baru dan berisi data yang sama dengan yang Anda lihat di Colab.
Membuat beberapa kandidat
Untuk menghasilkan lebih dari satu output untuk satu perintah, Anda dapat meneruskan --candidate_count
ke model. Nilai ini disetel ke 1 secara default, yang hanya menampilkan hasil teratas.
Terkadang model akan menghasilkan output yang sama pada seluruh kandidat. Pengujian ini dapat difilter dengan flag --unique
, yang menghapus duplikat hasil dari batch kandidat (tetapi tidak di beberapa perintah).
%%palm run --temperature 1.0 --candidate_count 8 --unique
In a single word, my favourite color is
Kolom Result Num
membedakan beberapa kandidat yang dihasilkan dari prompt yang sama.
Output model pascapemrosesan
Berbagai kemungkinan output dan struktur dapat menyulitkan penyesuaian output model dengan domain masalah Anda. Keajaiban PaLM menyediakan opsi pascapemrosesan yang memungkinkan Anda mengubah atau memproses output model menggunakan kode Python.
Fungsi pascapemrosesan dapat menambahkan kolom baru ke output, atau mengubah kolom text_result
. Kolom text_result
adalah kolom terakhir, dan digunakan oleh perintah eval
dan compare
untuk menentukan output akhir.
Berikut adalah beberapa fungsi contoh untuk digunakan dalam pascapemrosesan. Satu kolom menambahkan kolom baru dan kolom lainnya memperbarui kolom hasil, menggunakan dekorator post_process_replace_fn
.
import re
from google.generativeai.notebook import magics
# Add a new column.
def word_count(result):
return len(result.split(' '))
# Modify the text_result column
@magics.post_process_replace_fn
def extract_first_sentence(result):
"""Extracts the first word from the raw result."""
first, *_ = re.split(r'\.\s*', result)
return first
Untuk menggunakan fungsi ini, tambahkan ke perintah %%palm
menggunakan operator pipe (|
), seperti itu.
%%palm run | word_count | extract_first_sentence
The happiest thing I can imagine is
Urutan penting di sini. Saat word_count
dipanggil, output model asli digunakan untuk menghitung jumlah kata. Jika Anda menukarnya, jumlah kata akan menjadi jumlah kata dalam kalimat pertama yang diekstrak.
Bacaan lebih lanjut
- Baca panduan konsep LLM untuk mempelajari LLM lebih lanjut.
- Lihat panduan perintah untuk mempelajari lebih lanjut cara membuat perintah untuk mengoptimalkan penggunaan PaLM.
- Untuk membuat prototipe dan bereksperimen dengan berbagai perintah, lihat Google AI Studio. Selain itu, baca panduan memulai Google AI Studio untuk informasi selengkapnya.