تقدِّم ورقة الملاحظات هذه أوامر Colab السحرية لتنسيق PaLM. تسهِّل الميزات السحرية تطوير الطلبات واختبارها ومقارنتها وتقييمها من داخل ورقة ملاحظات Colab.
العرض على ai.google.dev | تجربة ورقة ملاحظات Colab | الاطّلاع على ورقة الملاحظات على GitHub |
ضبط إعدادات الجهاز
اتبع الخطوات أدناه لتثبيت الميزات السحرية واختبارها.
تثبيت نموذج PaLM
لاستخدام أوامر PaLM السحرية في Colab أو بيئة IPython أخرى، عليك أولاً تنزيل حزمة Python google-generativeai
وتثبيتها.
%pip install -q google-generativeai
جارٍ تحميل نموذج PaLM
بعد ذلك، يمكنك تحميل تأثير %%palm
باستخدام السحر %load_ext
:
%load_ext google.generativeai.notebook
اختبار التثبيت
لاختبار التثبيت الصحيح للأوامر السحرية، شغِّل %%palm --help
. يُرجى العِلم أنّك ستحتاج أيضًا إلى مفتاح PaLM API إذا لم يكن لديك مفتاح (راجِع الخطوة التالية).
%%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
لاستخدام PaLM API، عليك إنشاء مفتاح واجهة برمجة تطبيقات. (عليك تنفيذ هذه الخطوة مرة واحدة فقط).
ضبط مفتاح واجهة برمجة التطبيقات في ورقة الملاحظات
اضبط مفتاح واجهة برمجة التطبيقات عن طريق تنفيذ الخلية أدناه.
%env GOOGLE_API_KEY=YOUR PALM KEY
أوامر PaLM السحرية: run
وcompile
وcompare
وevaluate
توفّر عروض PaLM أربعة أوامر مختلفة:
run
compile
compare
evaluate
الأمر: palm run
يرسل الأمر run
محتوى الخلية إلى النموذج.
بما أنّ تنفيذ الطلبات شائع جدًا، يتم ضبط الإجراءات السحرية من PaLM على الأمر 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"
يمكن أيضًا لأداة PaLM أيضًا القراءة والكتابة في "جداول بيانات Google". ستحتاج إلى تسجيل الدخول للوصول إلى بيانات "جداول بيانات Google". يركز هذا القسم على قراءة البيانات من جداول البيانات؛ القسم التالي يعرض كيفية كتابة النتائج في "جدول بيانات Google".
تسجيل الدخول والسماح بالوصول إلى "جداول بيانات Google"
تنسيق جدول بيانات لاستخدامه مع نموذج PaLM السحري
مرِّر رقم التعريف أو عنوان URL الخاص بجدول بيانات Google إلى علامة --sheets_input_names
لتحميله كبيانات نموذج.
استخدِم التنسيق التالي في جدول البيانات لاستخدام البيانات في نموذج طلب:
- ضع أسماء المتغيرات (لقالب المطالبة) في الصف الأول من الورقة.
- ضع البيانات كبديل لكل متغير في الصفوف أدناه.
على سبيل المثال، إذا كان نموذج الطلب يحتوي على متغيّرَين لاستبدالهما، وهما name
وtemperament
، يجب كتابة جدول البيانات على النحو التالي:
الاسم | المزاج |
---|---|
Milo | ممتلئ |
كبير | مريح |
سوبرا | خجول |
%%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"
دمج إدخالات "جداول بيانات Google" مع إدخالات بايثون
يمكن أيضًا دمج إدخالات "جداول بيانات Google" مع --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
لتحويل الطلب الذي يحتوي على عناصر نائبة إلى دالة قابلة للاستدعاء من داخل Python.
جميع عمليات الإبلاغ وما بعد المعالجة "مجمّعة" إلى الدالة وسيتم استخدامها عند استدعائها.
في هذا المثال، يتم إنشاء دالة تُسمى translate_en_to_fr
، باستخدام دالة ما بعد المعالجة extract_and_normalize
من before.
%%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
. ومع ذلك، يمكنك تحويل كائن النتائج إلى DataFrame
أو قاموس يحتوي على .as_dict()
أو .as_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
لعرض الطلب. لا تُجري هذه الواجهة أي طلبات بيانات من واجهة برمجة التطبيقات أو تستهلك حصتك، لذا فهي تقدّم طريقة سريعة وبسيطة لاختبار النتائج أو ما بعد المعالجة.
%%palm --model_type echo
A duck's quack does not echo.
تصدير الناتج إلى Python
بالإضافة إلى عرض الناتج الجدولي، يمكن لأداة PaLM حفظ ناتج النموذج في متغيّرات Python، ما يتيح لك معالجة البيانات بشكل أكبر أو تصدير النتائج.
في هذا المثال، يتم حفظ الناتج في متغيّر Python: fave_colors
%%palm --outputs fave_colors
The best colors to wear in spring-time are
متغيّرات الإخراج هي كائنات مخصّصة سيتم عرضها تلقائيًا في صورة DataFrame
Pandas. ويمكن تضمينها بشكل صريح في قاموس أو إطار بيانات في قاموس بايثون عن طريق طلب السمة 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"
يمكنك إعادة حفظ النتائج في "جداول بيانات Google" باستخدام --sheets_output_names
. يجب تسجيل الدخول، ويجب أن تكون لديك الأذونات المناسبة للوصول إلى "جداول بيانات Google" الخاصة.
لتجربة هذه الميزة، يمكنك إنشاء جدول بيانات جديد واختيار اسم Translation results
لها. وكما هي الحال في علامة الإدخال، تقبل العلامة --sheets_output_names
أيضًا عنوان URL لورقة البيانات أو رقم التعريف الخاص بها بدلاً من الاسم النصي.
%%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 خيارات المعالجة اللاحقة التي تتيح لك تعديل مخرجات النموذج أو معالجتها باستخدام رمز Python.
يمكن لدوالّ المعالجة اللاحقة إما إضافة عمود جديد إلى الناتج أو تعديل عمود "text_result
". العمود text_result
هو العمود الأخير، ويستخدمه الأمران eval
وcompare
لتحديد الناتج النهائي.
في ما يلي بعض نماذج الدوال التي يجب استخدامها في مرحلة ما بعد المعالجة. يؤدّي أحدهما إلى إضافة عمود جديد والآخر يُعدِّل عمود النتيجة باستخدام أداة تصميم 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
لاستخدام هذه الدوال، ألحقها بالأمر %%palm
باستخدام عامل التشغيل الممر (|
)، هكذا.
%%palm run | word_count | extract_first_sentence
The happiest thing I can imagine is
الترتيب مهم هنا. عند استدعاء الدالة word_count
، يتم استخدام ناتج النموذج الأصلي لحساب عدد الكلمات. إذا بدّلت هذه الكلمات، فسيكون عدد الكلمات بدلاً من ذلك هو عدد الكلمات في الجملة الأولى المستخرجة.
محتوى إضافي للقراءة
- يمكنك مراجعة دليل مفاهيم النماذج اللغوية الكبيرة للاطّلاع على مزيد من المعلومات حول النماذج اللغوية الكبيرة.
- يمكنك الاطّلاع على إرشادات الطلبات لمعرفة المزيد من المعلومات حول صياغة الطلبات للاستفادة إلى أقصى حدّ من العمل باستخدام نموذج PaLM.
- لإنشاء نماذج أوّلية وتجربة طلبات مختلفة، اطّلِع على Google AI Studio. لمزيد من المعلومات، يمكنك أيضًا الاطّلاع على مقالة البدء السريع لاستخدام Google AI Studio.