Notebook ini memperkenalkan perintah ajaib Colab untuk PaLM. Magic memudahkan Anda mengembangkan, menguji, membandingkan, dan mengevaluasi perintah dari dalam notebook Colab.
Lihat di ai.google.dev | Coba notebook Colab | Lihat notebook di GitHub |
Penyiapan
Ikuti langkah-langkah di bawah untuk menginstal dan menguji fitur tersebut.
Menginstal magic PaLM
Untuk menggunakan perintah ajaib 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
menggunakan keajaiban %load_ext
:
%load_ext google.generativeai.notebook
Menguji penginstalan
Untuk menguji penginstalan perintah ajaib yang benar, jalankan %%palm --help
. Perlu diperhatikan 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 ini.
%env GOOGLE_API_KEY=YOUR PALM KEY
Perintah ajaib PaLM: run
, compile
, compare
, dan evaluate
PaLM Magic menyediakan empat perintah yang berbeda:
run
compile
compare
evaluate
Perintah: palm run
Perintah run
mengirimkan konten sel ke model.
Karena menjalankan prompt adalah hal yang sangat umum, keajaiban PaLM akan ditetapkan secara default 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. Di beberapa
contoh ini, Input Num
dari 0
adalah 'hot'
, dan 1
adalah 'cold'
.
Menentukan beberapa kumpulan input
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 {i>Sheets<i}; bagian selanjutnya menunjukkan cara menulis output ke Spreadsheet Google.
Login dan izinkan akses ke Spreadsheet
Memformat spreadsheet untuk digunakan dengan PaLM magic
Teruskan ID atau URL Spreadsheet Google ke tanda --sheets_input_names
untuk memuatnya sebagai data template.
Gunakan format berikut di spreadsheet Anda untuk menggunakan data dalam template perintah:
- Letakkan nama variabel (dari {i>template<i} perintah Anda) di baris pertama {i>sheet<i}.
- Masukkan data sebagai pengganti setiap variabel pada baris di bawah ini.
Misalnya, jika template perintah Anda memiliki dua variabel untuk diganti, name
dan temperament
, Anda akan menulis spreadsheet seperti ini:
nama | temperamen |
---|---|
Milo | licik |
Besar-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, mis. %%palm --sheets_input_names "Animal adjectives"
.
Menggabungkan input Spreadsheet dengan input Python
Input sheet juga dapat dikombinasikan 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 perintah 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 terhadap 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 hasil pascapemrosesan:
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 pasca-pemrosesan 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 prompt dengan placeholder menjadi fungsi callable dari dalam Python.
Semua tanda dan pascapemrosesan "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 sebelum.
%%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 keluaran
Secara default, "dikompilasi" menampilkan output-nya sebagai objek yang akan ditampilkan sebagai DataFrame
Panda. Namun, Anda dapat mengonversi objek hasil ke DataFrame
atau kamus dengan .as_dict()
atau .as_dataframe()
, masing-masing.
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 dalam hasil yang ditampilkan. Namun, Anda dapat menentukan satu atau beberapa fungsi kustom dengan tanda --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. Magic 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
Proses debug: Model echo
Model echo
juga tersedia yang akan menggemakan perintah kembali kepada Anda. Class ini tidak melakukan panggilan API apa pun atau menghabiskan kuota Anda, sehingga dapat menjadi cara yang cepat dan mudah untuk menguji output atau pascapemrosesan.
%%palm --model_type echo
A duck's quack does not echo.
Mengekspor output ke Python
Selain menampilkan output tabulasi, magic PaLM dapat menyimpan output model ke variabel Python, sehingga Anda dapat memanipulasinya lebih lanjut atau mengekspor hasil Anda.
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 dataframe 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.']}
Tulis 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:
Hasil akan disimpan ke tab baru dan berisi data yang sama dengan yang Anda lihat di sini di Colab.
Membuat beberapa kandidat
Untuk menghasilkan lebih dari satu output untuk satu perintah, Anda dapat meneruskan --candidate_count
ke model. Nilai ini ditetapkan ke 1 secara default, yang hanya menampilkan hasil teratas.
Terkadang model akan menghasilkan output yang sama di seluruh kandidat. Ini dapat difilter dengan tanda --unique
, yang akan 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 dibuat dari perintah yang sama.
Output model pascapemrosesan
Luasnya kemungkinan output dan struktur dapat menyulitkan penyesuaian output model dengan domain masalah Anda. PaLM Magic menyediakan opsi pascapemrosesan yang memungkinkan Anda memodifikasi 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, serta digunakan oleh perintah eval
dan compare
untuk menentukan output akhir.
Berikut adalah beberapa contoh fungsi untuk digunakan dalam pascapemrosesan. Yang satu menambahkan kolom baru dan yang lain 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 pipa (|
), 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
- Lihat panduan konsep LLM untuk mempelajari LLM lebih lanjut.
- Lihat panduan perintah untuk mempelajari lebih lanjut cara membuat perintah agar dapat mengoptimalkan penggunaan PaLM.
- Untuk membuat prototipe dan bereksperimen dengan berbagai perintah, lihat Google AI Studio. Selain itu, lihat panduan memulai Google AI Studio untuk mengetahui informasi selengkapnya.