Sổ tay này giới thiệu các lệnh ma thuật trong Colab cho PaLM. Các tính năng kỳ diệu giúp bạn dễ dàng phát triển, thử nghiệm, so sánh và đánh giá các câu lệnh ngay trong một sổ tay Colab.
Xem trên ai.google.dev | Dùng thử sổ tay Colab | Xem sổ tay trên GitHub |
Thiết lập
Hãy làm theo các bước bên dưới để cài đặt và thử nghiệm các tính năng kỳ diệu.
Cài đặt phép thuật PaLM
Để sử dụng các lệnh ma thuật PaLM trong Colab hoặc môi trường IPython khác, trước tiên, bạn cần tải xuống và cài đặt gói Python google-generativeai
.
%pip install -q google-generativeai
Tải PaLM kỳ diệu
Tiếp theo, hãy tải phép thuật của %%palm
bằng cách sử dụng phép thuật của %load_ext
:
%load_ext google.generativeai.notebook
Kiểm tra việc cài đặt
Để kiểm tra nhằm đảm bảo cài đặt đúng các lệnh ma thuật, hãy chạy %%palm --help
. Xin lưu ý rằng bạn cũng sẽ cần một khoá PaLM API nếu bạn chưa có khoá (xem bước tiếp theo).
%%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
Nhận khoá PaLM API
Để sử dụng PaLM API, bạn cần tạo khoá API. (Bạn chỉ cần thực hiện bước này một lần.)
Đặt khoá API trên sổ tay
Đặt khoá API bằng cách chạy ô bên dưới.
%env GOOGLE_API_KEY=YOUR PALM KEY
Các lệnh ma thuật PaLM: run
, compile
, compare
và evaluate
Phép thuật PaLM cung cấp 4 lệnh khác nhau:
run
compile
compare
evaluate
Lệnh: palm run
Lệnh run
gửi nội dung của ô đến mô hình.
Vì việc chạy lời nhắc rất phổ biến nên phép thuật PaLM mặc định áp dụng lệnh run
nếu không có lệnh nào được đưa ra. Ví dụ: hai ô tiếp theo giống hệt nhau.
%%palm run
The opposite of hot is
%%palm
The opposite of hot is
Tìm hiểu kết quả
Cột Prompt
cho thấy văn bản đã được gửi đến mô hình và cột text_result
cho thấy kết quả. Các cột khác sẽ xuất hiện khi bạn làm theo hướng dẫn này.
Mẫu câu lệnh
Lời nhắc không nhất thiết phải là chuỗi cố định. Bạn có thể chèn các giá trị vào câu lệnh thông qua phần giữ chỗ mẫu bằng cách sử dụng {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
Tìm hiểu kết quả
Cột Input Num
theo dõi chỉ mục của từ nhập trong(các) danh sách. Ngang bằng
các ví dụ này, Input Num
trong 0
là 'hot'
và 1
là 'cold'
.
Chỉ định nhiều nhóm dữ liệu đầu vào
Bạn cũng có thể chỉ định nhiều nhóm dữ liệu đầu vào cùng một lúc.
extreme_temperatures = {
'word': ['hot', 'cold']
}
minor_temperatures = {
'word': ['warm', 'chilly']
}
%%palm --inputs extreme_temperatures minor_temperatures
The opposite of {word} is
Đọc dữ liệu trong Google Trang tính
Phép màu PaLM cũng có thể đọc và ghi vào Google Trang tính. Bạn sẽ cần phải đăng nhập để truy cập vào dữ liệu trên Trang tính. Phần này tập trung vào việc đọc dữ liệu trong Trang tính; phần sau sẽ hướng dẫn bạn cách ghi kết quả vào Google Trang tính.
Đăng nhập và cho phép truy cập vào Trang tính
Định dạng bảng tính để sử dụng với phép thuật PaLM
Truyền mã nhận dạng hoặc URL của một tệp Google Trang tính vào cờ --sheets_input_names
để tải trang tính đó lên dưới dạng dữ liệu mẫu.
Sử dụng định dạng sau trong bảng tính của bạn để sử dụng dữ liệu trong mẫu câu lệnh:
- Đặt tên của các biến (trong mẫu câu lệnh của bạn) vào hàng đầu tiên của trang tính.
- Đặt dữ liệu để thay thế cho từng biến trong các hàng bên dưới.
Ví dụ: nếu mẫu câu lệnh của bạn có hai biến để thay thế, name
và temperament
, bạn sẽ viết bảng tính như sau:
tên | tính khí |
---|---|
Milo | táo tợn |
Bigsly | thư giãn |
Sao Subra | e thẹn |
%%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.
Hãy thử ngay nào!
Để thử thực hiện việc này bằng dữ liệu của riêng bạn, hãy tạo một Trang tính mới rồi truyền mã nhận dạng vào --sheets_input_names
. Cũng như mã nhận dạng và URL, bạn cũng có thể tìm kiếm trang tính theo tiêu đề, ví dụ: %%palm --sheets_input_names "Animal adjectives"
.
Kết hợp dữ liệu đầu vào trong Trang tính với dữ liệu đầu vào Python
Bạn cũng có thể kết hợp dữ liệu nhập trong Trang tính với --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.
Lệnh: palm eval
Sử dụng %%palm eval
để so sánh kết quả của một câu lệnh với dữ liệu thực tế đã biết.
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:
Đầu ra của mô hình xử lý hậu kỳ
Để kiểm thử thực tế, có thể bạn cần xử lý hậu kỳ đầu ra của mô hình.
Các hàm hậu xử lý cho phép bạn xác định một hàm xử lý đầu ra của mô hình. Trong trường hợp lệnh eval
, chỉ cột kết quả được sử dụng trong kiểm tra đẳng thức cuối cùng.
Sử dụng trình trang trí post_process_replace_fn
để xác định một hàm nhằm xử lý kết quả:
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()
Hàm extract_and_normalize
được xác định ở trên sẽ lấy kết quả từ mô hình và cắt bỏ mọi cặp ngôn ngữ lặp lại, chỉ để lại phản hồi đầu tiên. Hãy xem phần quy trình hậu xử lý để tìm hiểu thêm về quy trình hậu xử lý.
%%palm eval --inputs test_data --ground_truth ground_truth | extract_and_normalize
English: Hello
French: Bonjour
English: {word}
French:
Lệnh: palm compile
Dùng lệnh %%palm compile
để chuyển đổi câu lệnh có phần giữ chỗ thành một hàm có thể gọi trong Python.
Tất cả cờ và khâu xử lý hậu kỳ đều được "biên dịch" vào hàm và sẽ được sử dụng khi được gọi.
Trong ví dụ này, một hàm có tên là translate_en_to_fr
sẽ được tạo bằng cách sử dụng hàm hậu xử lý extract_and_normalize
từ trước.
%%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})
Định dạng đầu ra
Theo mặc định, tệp "đã biên dịch" hàm trả về kết quả dưới dạng một đối tượng sẽ được hiển thị dưới dạng Gấu trúc DataFrame
. Tuy nhiên, bạn có thể chuyển đổi đối tượng kết quả thành DataFrame
hoặc từ điển với .as_dict()
hoặc .as_dataframe()
tương ứng.
Để biết thêm thông tin, hãy xem cờ --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
Lệnh: palm compare
%%palm compare
chạy các câu lệnh đã biên dịch và tạo một bảng có kết quả so sánh song song để bạn có thể kiểm tra sự khác biệt.
%%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
Hàm so sánh tuỳ chỉnh
Theo mặc định, compare
chỉ kiểm tra sự ngang bằng trong các kết quả trả về. Tuy nhiên, bạn có thể chỉ định một hoặc nhiều hàm tuỳ chỉnh bằng cờ --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
Các lệnh khác
Trợ giúp
Cờ --help
hiện các lệnh được hỗ trợ mà bạn có thể truyền trực tiếp đến %%palm
Thêm --help
để xem tài liệu chi tiết cho từng lệnh. Ví dụ:
%%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.
Mô hình
Sử dụng cờ --model
để chỉ định biến thể mô hình PaLM mà bạn muốn dùng.
Hãy xem phương thức list_models()
để truy xuất các mô hình được hỗ trợ. Bạn có thể sử dụng phép thuật PaLM với bất kỳ mô hình nào hỗ trợ phương thức generateText
.
%%palm run --model models/text-bison-001
My favourite color is
Thông số mô hình
Bạn cũng có thể định cấu hình các tham số của mô hình, chẳng hạn như --candidate_count
và --temperature
.
%%palm run --model models/text-bison-001 --temperature 0.5
My favourite color is
Gỡ lỗi: Mô hình tiếng vọng
Bạn cũng có thể sử dụng một mô hình echo
sẽ lặp lại lời nhắc cho bạn. Công cụ này không thực hiện bất kỳ lệnh gọi API nào hay tiêu thụ hạn mức của bạn, vì vậy, đây có thể là một cách nhanh chóng và đơn giản để kiểm thử đầu ra hoặc xử lý hậu kỳ.
%%palm --model_type echo
A duck's quack does not echo.
Xuất dữ liệu đầu ra sang Python
Ngoài việc hiển thị đầu ra dạng bảng, phép thuật PaLM có thể lưu đầu ra của mô hình vào các biến Python, cho phép bạn điều chỉnh thêm hoặc xuất kết quả.
Trong ví dụ này, dữ liệu đầu ra được lưu vào biến Python: fave_colors
%%palm --outputs fave_colors
The best colors to wear in spring-time are
Biến đầu ra là các đối tượng tuỳ chỉnh sẽ hiển thị dưới dạng Gấu trúc DataFrame
theo mặc định. Bạn có thể chuyển đổi các đối số này thành từ điển Python hoặc khung dữ liệu một cách rõ ràng bằng cách gọi as_dict()
hoặc 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.']}
Ghi vào Google Trang tính
Bạn có thể lưu kết quả trở lại Google Trang tính bằng --sheets_output_names
. Bạn phải đăng nhập và phải có quyền thích hợp để truy cập vào Trang tính riêng tư.
Để dùng thử, hãy tạo một Trang tính mới rồi đặt tên là Translation results
. Giống như cờ nhập, cờ --sheets_output_names
cũng chấp nhận URL hoặc mã trang tính thay cho tên dạng văn bản.
%%palm --inputs english_words --sheets_output_names "Translation results"
English: Hello
French: Bonjour
English: {word}
French:
Kết quả được lưu vào một thẻ mới và chứa dữ liệu mà bạn thấy ở đây trong Colab.
Tạo nhiều đề xuất
Để tạo nhiều đầu ra cho một câu lệnh, bạn có thể truyền --candidate_count
vào mô hình. Theo mặc định, thuộc tính này được đặt thành 1 và chỉ trả về kết quả hàng đầu.
Đôi khi mô hình này sẽ tạo ra cùng một kết quả cho các đề xuất. Bạn có thể lọc các sự kiện này bằng cờ --unique
để loại bỏ các kết quả trùng lặp ngoài lô đề xuất (nhưng không bị trùng lặp trên nhiều lời nhắc).
%%palm run --temperature 1.0 --candidate_count 8 --unique
In a single word, my favourite color is
Cột Result Num
phân biệt nhiều đề xuất được tạo trong cùng một câu lệnh.
Đầu ra của mô hình xử lý hậu kỳ
Phạm vi kết quả đầu ra và cấu trúc rộng có thể khiến bạn gặp khó khăn trong việc điều chỉnh kết quả của mô hình cho phù hợp với miền của vấn đề. Phép màu PaLM cung cấp các tuỳ chọn xử lý hậu kỳ cho phép bạn sửa đổi hoặc xử lý đầu ra của mô hình bằng mã Python.
Các hàm hậu xử lý có thể thêm một cột mới vào kết quả hoặc sửa đổi cột text_result
. Cột text_result
là cột cuối cùng và được lệnh eval
và compare
sử dụng để xác định kết quả cuối cùng.
Dưới đây là một số hàm mẫu để sử dụng trong quá trình hậu xử lý. Một cột thêm một cột mới và cột còn lại cập nhật cột kết quả bằng cách sử dụng trình trang trí 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
Để sử dụng các hàm này, hãy thêm chúng vào lệnh %%palm
bằng toán tử dấu gạch đứng (|
).
%%palm run | word_count | extract_first_sentence
The happiest thing I can imagine is
Đặt hàng ở đây rất quan trọng. Khi word_count
được gọi, dữ liệu đầu ra của mô hình ban đầu sẽ được dùng để tính toán số từ. Nếu bạn hoán đổi những từ này, số từ sẽ là số từ trong câu đầu tiên được trích xuất.
Tài liệu đọc thêm
- Hãy tham khảo hướng dẫn về khái niệm của các LLM để tìm hiểu thêm về các LLM.
- Hãy xem hướng dẫn nhắc để tìm hiểu thêm về cách tạo câu lệnh nhằm khai thác tối đa khi sử dụng PaLM.
- Để tạo nguyên mẫu và thử nghiệm với nhiều câu lệnh, hãy tham khảo Google AI Studio. Ngoài ra, hãy tham khảo hướng dẫn bắt đầu nhanh về Google AI Studio để biết thêm thông tin.