این نوت بوک دستورات جادویی Colab را برای PalM معرفی می کند. Magic توسعه، آزمایش، مقایسه و ارزیابی درخواستها را از داخل یک دفترچه یادداشت Colab آسان میکند.
مشاهده در ai.google.dev | یک نوت بوک کولب را امتحان کنید | مشاهده نوت بوک در GitHub |
راه اندازی
برای نصب و تست ماژیک مراحل زیر را دنبال کنید.
نصب ماژیک PalM
برای استفاده از دستورات جادویی PalM در Colab یا سایر محیط های IPython، ابتدا باید بسته google-generativeai
Python را دانلود و نصب کنید.
%pip install -q google-generativeai
بارگذاری جادوی PalM
سپس با استفاده از جادوی %load_ext
ماژیک %%palm
را بارگیری کنید:
%load_ext google.generativeai.notebook
نصب را تست کنید
برای آزمایش نصب صحیح دستورات جادویی، %%palm --help
را اجرا کنید. توجه داشته باشید که اگر قبلاً آن را ندارید، به یک کلید API PalM نیز نیاز خواهید داشت (مرحله بعدی را ببینید).
%%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
دریافت کلید Palm API
برای استفاده از Palm API، باید یک کلید API ایجاد کنید . (این مرحله را فقط یک بار باید انجام دهید.)
کلید API را در نوت بوک تنظیم کنید
کلید API خود را با اجرای سلول زیر تنظیم کنید.
%env GOOGLE_API_KEY=YOUR PALM KEY
دستورات جادویی PalM: run
، compile
، compare
و evaluate
جادوهای PalM چهار دستور مختلف را ارائه می دهند:
-
run
-
compile
-
compare
-
evaluate
دستور: palm run
دستور run
محتویات سلول را به مدل ارسال می کند.
از آنجایی که اعلانهای اجرا بسیار رایج هستند، در صورتی که دستوری داده نشود، Palm magic به صورت پیشفرض دستور run
میکند. به عنوان مثال، دو سلول بعدی یکسان هستند.
%%palm run
The opposite of hot is
%%palm
The opposite of hot is
درک خروجی
ستون Prompt
متن ارسال شده به مدل را نشان می دهد و ستون text_result
نتیجه را نشان می دهد. ستون های دیگر با پیشرفت در این راهنما معرفی خواهند شد.
الگوهای سریع
درخواست ها نباید رشته های ثابت باشند. با استفاده از {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
درک خروجی
ستون Input Num
نمایه کلمه ورودی را در لیست(ها) ردیابی می کند. در این مثالها، Input Num
0
'hot'
و 1
'cold'
است.
تعیین مجموعه های متعدد ورودی
همچنین می توانید چندین مجموعه ورودی را در یک زمان مشخص کنید.
extreme_temperatures = {
'word': ['hot', 'cold']
}
minor_temperatures = {
'word': ['warm', 'chilly']
}
%%palm --inputs extreme_temperatures minor_temperatures
The opposite of {word} is
خواندن دادهها از Google Sheets
جادوی PalM همچنین میتواند در برگههای Google بخواند و بنویسد. برای دسترسی به داده های Sheets باید وارد سیستم شوید. این بخش بر خواندن داده ها از Sheets تمرکز دارد. بخش بعدی نشان می دهد که چگونه می توانید خروجی را در برگه Google بنویسید.
وارد شوید و اجازه دسترسی به Sheets را بدهید
from google.colab import auth
auth.authenticate_user()
import google.auth
creds, _ = google.auth.default()
from google.generativeai.notebook import magics
magics.authorize(creds)
قالببندی صفحهگسترده برای استفاده با جادوی PalM
شناسه یا URL یک برگه Google را به پرچم --sheets_input_names
ارسال کنید تا آن را به عنوان داده الگو بارگیری کنید.
از قالب زیر در صفحه گسترده خود برای استفاده از داده ها در قالب درخواست استفاده کنید:
- نام متغیرها (الگوی prompt خود) را در ردیف اول برگه قرار دهید.
- داده ها را به جای هر متغیر در ردیف های زیر قرار دهید.
به عنوان مثال، اگر الگوی درخواست شما دو متغیر برای جایگزینی دارد، name
و temperament
، صفحه گسترده خود را به این صورت بنویسید:
نام | خلق و خوی |
---|---|
میلو | گستاخ |
به شدت | آرام |
سوبرا | خجالتی |
%%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.
خودتان آن را امتحان کنید!
برای امتحان کردن این کار با استفاده از دادههای خود، یک برگه جدید ایجاد کنید و شناسه را به --sheets_input_names
ارسال کنید. علاوه بر شناسه و URL، میتوانید برگههای خود را بر اساس عنوان جستجو کنید، به عنوان مثال %%palm --sheets_input_names "Animal adjectives"
.
ترکیب ورودی Sheets با ورودی پایتون
ورودیهای شیت را میتوان با --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.
فرمان: palm eval
از %%palm eval
برای مقایسه خروجی یک اعلان با داده های زمین-حقیقت شناخته شده استفاده کنید.
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:
خروجی های مدل پس پردازش
برای انجام تست حقیقت زمینی، ممکن است لازم باشد خروجی مدل را پس پردازش کنید.
توابع پس از پردازش به شما امکان می دهند تابعی را تعریف کنید که خروجی مدل را پردازش می کند. در مورد دستور eval
، فقط از ستون نتیجه در بررسی تساوی نهایی استفاده می شود.
از دکوراتور post_process_replace_fn
برای تعریف یک تابع برای نتایج پس از پردازش استفاده کنید:
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()
تابع extract_and_normalize
که در بالا تعریف شده است، خروجی را از مدل می گیرد و هر جفت زبان تکرار شده را برش می دهد و فقط اولین پاسخ را باقی می گذارد. برای کسب اطلاعات بیشتر در مورد پس پردازش، بخش پس از پردازش را بررسی کنید.
%%palm eval --inputs test_data --ground_truth ground_truth | extract_and_normalize
English: Hello
French: Bonjour
English: {word}
French:
دستور: palm compile
از دستور %%palm compile
برای تبدیل یک دستور با متغیرهایی به یک تابع قابل فراخوانی از داخل پایتون استفاده کنید.
همه پرچمها و پردازشهای بعدی در تابع "کامپایل" میشوند و هنگام فراخوانی از آنها استفاده میشود.
در این مثال، تابعی به نام translate_en_to_fr
با استفاده از تابع extract_and_normalize
پس از پردازش از قبل ایجاد می شود.
%%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})
فرمت های خروجی
بهطور پیشفرض، یک تابع «کامپایلشده» خروجی خود را بهعنوان یک شی برمیگرداند که بهعنوان Pandas DataFrame
نمایش داده میشود. با این حال، میتوانید شی نتایج را به ترتیب با .as_dict()
یا .as_dataframe()
به DataFrame
یا فرهنگ لغت تبدیل کنید.
برای اطلاعات بیشتر، پرچم --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
دستور: palm compare
%%palm compare
دستورهای کامپایل شده را اجرا میکند و جدولی با نتایج مقایسه در کنار هم تولید میکند، بنابراین میتوانید تفاوتها را بررسی کنید.
%%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
توابع مقایسه سفارشی
به طور پیشفرض، چکهای فقط برای برابری در نتایج برگشتی compare
. با این حال، می توانید یک یا چند تابع سفارشی را با پرچم --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
دستورات دیگر
کمک کنید
پرچم --help
دستورات پشتیبانی شده را نمایش می دهد که می توانید مستقیماً به %%palm
ارسال کنید
ضمیمه --help
برای مشاهده مستندات دقیق برای هر دستور. به عنوان مثال،
%%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
برای تعیین نوع مدل PalM که می خواهید استفاده کنید استفاده کنید.
برای بازیابی مدل های پشتیبانی شده، متد list_models()
را ببینید. جادوی PALM را می توان با هر مدلی که از متد generateText
پشتیبانی می کند استفاده کرد.
%%palm run --model models/text-bison-001
My favourite color is
پارامترهای مدل
همچنین می توانید پارامترهای مدل مانند --candidate_count
و --temperature
را پیکربندی کنید.
%%palm run --model models/text-bison-001 --temperature 0.5
My favourite color is
اشکال زدایی: مدل پژواک
یک مدل echo
نیز موجود است که اعلان را به شما بازتاب می دهد. هیچ تماس API برقرار نمی کند یا سهمیه شما را مصرف نمی کند، بنابراین می تواند راهی سریع و ساده برای آزمایش خروجی یا پس پردازش باشد.
%%palm --model_type echo
A duck's quack does not echo.
خروجی را به پایتون صادر کنید
علاوه بر نمایش خروجی جدولی، جادوی PalM می تواند خروجی مدل را در متغیرهای پایتون ذخیره کند و به شما امکان می دهد آنها را بیشتر دستکاری کنید یا نتایج خود را صادر کنید.
در این مثال، خروجی در یک متغیر پایتون ذخیره میشود: fave_colors
%%palm --outputs fave_colors
The best colors to wear in spring-time are
متغیرهای خروجی اشیایی سفارشی هستند که به صورت پیش فرض به صورت Pandas DataFrame
نمایش داده می شوند. آنها را می توان با فراخوانی as_dict()
یا 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.']}
در Google Sheets بنویسید
میتوانید خروجی را با استفاده از --sheets_output_names
در Google Sheets ذخیره کنید. شما باید وارد سیستم شوید و باید مجوزهای مناسب برای دسترسی به برگه های خصوصی را داشته باشید.
برای امتحان کردن این، یک برگه جدید ایجاد کنید و نام آن را Translation results
بگذارید. مانند پرچم ورودی، پرچم --sheets_output_names
نیز آدرس صفحه یا شناسه را به جای نام متنی می پذیرد.
%%palm --inputs english_words --sheets_output_names "Translation results"
English: Hello
French: Bonjour
English: {word}
French:
نتایج در یک برگه جدید ذخیره می شوند و حاوی همان داده هایی هستند که در اینجا در Colab می بینید.
ایجاد چندین نامزد
برای تولید بیش از یک خروجی برای یک فرمان، میتوانید --candidate_count
به مدل ارسال کنید. این به طور پیش فرض روی 1 تنظیم شده است که فقط نتیجه برتر را به دست می دهد.
گاهی اوقات مدل خروجی یکسانی را در بین نامزدها ایجاد می کند. اینها را میتوان با پرچم --unique
فیلتر کرد، که نتایج را از دسته کاندید حذف میکند (اما نه در چند دستور).
%%palm run --temperature 1.0 --candidate_count 8 --unique
In a single word, my favourite color is
ستون Result Num
چندین نامزد تولید شده از یک اعلان را متمایز می کند.
خروجی مدل پس از پردازش
طیف وسیع خروجی ها و ساختارهای ممکن می تواند تطبیق خروجی مدل را با حوزه مشکل شما دشوار کند. PaLM magic گزینه های پس پردازشی را ارائه می دهد که به شما امکان می دهد خروجی مدل را با استفاده از کد پایتون اصلاح یا پردازش کنید.
توابع پس از پردازش می توانند یک ستون جدید به خروجی اضافه کنند یا ستون text_result
تغییر دهند. ستون text_result
آخرین ستون است و توسط دستورهای eval
و compare
برای تعیین خروجی نهایی استفاده می شود.
در اینجا برخی از توابع نمونه برای استفاده در پس پردازش آورده شده است. یکی یک ستون جدید اضافه می کند و دیگری ستون نتیجه را با استفاده از decorator 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
برای استفاده از این توابع، آنها را با استفاده از عملگر pipe ( |
) به فرمان %%palm
اضافه کنید.
%%palm run | word_count | extract_first_sentence
The happiest thing I can imagine is
سفارش در اینجا مهم است. هنگامی که word_count
فراخوانی می شود، خروجی مدل اصلی برای محاسبه تعداد کلمات استفاده می شود. اگر اینها را با هم عوض کنید، تعداد کلمات به جای آن تعداد کلمات در جمله اول استخراج شده خواهد بود.
در ادامه مطلب
- برای کسب اطلاعات بیشتر در مورد LLM به راهنمای مفاهیم LLM مراجعه کنید.
- دستورالعملهای فوری را بررسی کنید تا در مورد ساخت دستورات بیشتر بدانید تا از کار با PalM بیشترین بهره را ببرید.
- برای نمونهسازی اولیه و آزمایش با اعلانهای مختلف، استودیوی هوش مصنوعی Google را بررسی کنید. همچنین برای اطلاعات بیشتر به استودیوی هوش مصنوعی گوگل مراجعه کنید.