इस notebook में, PaLM के लिए Colab के मैजिक कमांड की जानकारी दी गई है. Magics की मदद से, Colab notebook के ज़रिए प्रॉम्प्ट डेवलप करना, उनकी जांच करना, उनकी तुलना करना, और उनका आकलन करना आसान हो जाता है.
ai.google.dev पर देखें | Colab notebook को आज़माएं | GitHub पर notebook देखें |
सेटअप
इसके मैजिक को आज़माने और इंस्टॉल करने के लिए, यहां दिया गया तरीका अपनाएं.
PaLM मैजिक इंस्टॉल करना
Colab या अन्य IPython एनवायरमेंट में PaLM के मैजिक कमांड इस्तेमाल करने के लिए, आपको सबसे पहले google-generativeai
Python पैकेज को डाउनलोड और इंस्टॉल करना होगा.
%pip install -q google-generativeai
PaLM मैजिक लोड हो रहा है
इसके बाद, %load_ext
मैजिक का इस्तेमाल करके %%palm
मैजिक लोड करें:
%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 API कुंजी पाना
PaLM API का इस्तेमाल करने के लिए, आपको एपीआई पासकोड बनाना होगा. (आपको यह चरण सिर्फ़ एक बार करना होगा.)
Notebook में एपीआई पासकोड सेट करें
नीचे दिए गए सेल को चलाकर, एपीआई पासकोड सेट करें.
%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
कॉलम, सूची(सूचियों) में मौजूद शब्द के इंडेक्स को ट्रैक करता है. तय सीमा में
इन उदाहरणों में, 0
में से Input Num
'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 का डेटा ऐक्सेस करने के लिए, आपको लॉग इन करना होगा. इस सेक्शन में, Sheets का डेटा पढ़ने पर फ़ोकस किया गया है; बाद के सेक्शन में दिखाया गया है कि Google शीट में आउटपुट कैसे लिखा जा सकता है.
लॉग इन करें और Sheets को ऐक्सेस करने की अनुमति दें
PaLM मैजिक के साथ इस्तेमाल करने के लिए, स्प्रेडशीट को फ़ॉर्मैट करना
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
को पास करें. आईडी और यूआरएल के साथ-साथ, शीट को टाइटल के हिसाब से भी खोजा जा सकता है, जैसे कि %%palm --sheets_input_names "Animal adjectives"
.
Sheets के इनपुट को Python इनपुट के साथ जोड़ना
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
प्लेसहोल्डर वाले प्रॉम्प्ट को Python से कॉल करने लायक फ़ंक्शन में बदलने के लिए, %%palm compile
कमांड का इस्तेमाल करें.
सभी फ़्लैग और पोस्ट-प्रोसेसिंग को "इकट्ठा" किया जाता है फ़ंक्शन में शामिल कर दिया जाएगा और शुरू करने पर इसका इस्तेमाल किया जाएगा.
इस उदाहरण में, before के extract_and_normalize
पोस्ट-प्रोसेसिंग फ़ंक्शन का इस्तेमाल करके, translate_en_to_fr
नाम का फ़ंक्शन बनाया गया है.
%%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.
मॉडल
आपको PaLM मॉडल के जिस वैरिएंट का इस्तेमाल करना है उसके बारे में बताने के लिए, --model
फ़्लैग का इस्तेमाल करें.
इस्तेमाल किए जा सकने वाले मॉडल वापस पाने के लिए, 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
आउटपुट वैरिएबल, कस्टम ऑब्जेक्ट हैं. ये डिफ़ॉल्ट रूप से Pandas DataFrame
s के तौर पर दिखेंगे. उन्हें as_dict()
या as_pandas_dataframe()
को कॉल करके, साफ़ तौर पर Python डिक्शनरी या डेटाफ़्रेम में बदला जा सकता है.
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 में सेव किया जा सकता है. यह ज़रूरी है कि आपने लॉग इन किया हो और आपके पास निजी 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 मैजिक, पोस्ट-प्रोसेसिंग के विकल्प उपलब्ध कराता है. इनकी मदद से, 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 क्विकस्टार्ट देखें.