এই নোটবুকটি PaLM-এর জন্য Colab ম্যাজিক কমান্ড প্রবর্তন করে। ম্যাজিক একটি Colab নোটবুকের মধ্যে থেকে প্রম্পট তৈরি করা, পরীক্ষা করা, তুলনা করা এবং মূল্যায়ন করা সহজ করে তোলে।
ai.google.dev-এ দেখুন | একটি Colab নোটবুক ব্যবহার করে দেখুন | GitHub এ নোটবুক দেখুন |
সেটআপ
ম্যাজিক ইনস্টল এবং পরীক্ষা করতে নীচের পদক্ষেপগুলি অনুসরণ করুন।
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 ব্যবহার করতে, আপনাকে একটি API কী তৈরি করতে হবে। (আপনাকে শুধুমাত্র একবার এই পদক্ষেপটি করতে হবে।)
নোটবুকে API কী সেট করুন
নীচের সেলটি চালিয়ে আপনার 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 Sheets-এ পড়তে ও লিখতে পারে। পত্রক ডেটা অ্যাক্সেস করতে আপনাকে লগ ইন করতে হবে৷ এই বিভাগটি পত্রক থেকে ডেটা পড়ার উপর ফোকাস করে; একটি পরবর্তী বিভাগ দেখায় কিভাবে আপনি একটি Google শীটে আউটপুট লিখতে পারেন।
লগ ইন করুন এবং পত্রক অ্যাক্সেস অনুমোদন করুন
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 ম্যাজিকের সাথে ব্যবহারের জন্য একটি স্প্রেডশীট ফর্ম্যাট করা
টেমপ্লেট ডেটা হিসাবে লোড করার জন্য একটি Google পত্রকের ID বা URL --sheets_input_names
পতাকায় পাস করুন৷
একটি প্রম্পট টেমপ্লেটে ডেটা ব্যবহার করতে আপনার স্প্রেডশীটে নিম্নলিখিত বিন্যাসটি ব্যবহার করুন:
- শীটের প্রথম সারিতে ভেরিয়েবলের নাম (আপনার প্রম্পট টেমপ্লেটের) রাখুন।
- নীচের সারিতে প্রতিটি ভেরিয়েবলের পরিবর্তে ডেটা রাখুন।
উদাহরণস্বরূপ, যদি আপনার প্রম্পট টেমপ্লেটে দুটি ভেরিয়েবল থাকে, 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"
৷
পাইথন ইনপুটগুলির সাথে শীট ইনপুটগুলিকে একত্রিত করা৷
শীট ইনপুটগুলিও --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
কমান্ড ব্যবহার করুন।
সমস্ত পতাকা এবং পোস্ট-প্রসেসিং ফাংশনে "সংকলিত" হয় এবং যখন আহ্বান করা হয় তখন ব্যবহার করা হবে।
এই উদাহরণে, আগে থেকে 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
মডেলও পাওয়া যায় যা আপনার কাছে প্রম্পটটি প্রতিধ্বনিত করবে। এটি কোনও 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
s হিসাবে প্রদর্শিত হবে। এগুলিকে 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.']}
গুগল শীটে লিখুন
আপনি --sheets_output_names
ব্যবহার করে Google শীটে আউটপুট ফেরত সংরক্ষণ করতে পারেন। আপনাকে অবশ্যই লগ ইন করতে হবে, এবং ব্যক্তিগত পত্রক অ্যাক্সেস করার জন্য আপনার অবশ্যই উপযুক্ত অনুমতি থাকতে হবে৷
এটি চেষ্টা করার জন্য, একটি নতুন পত্রক তৈরি করুন এবং এটির নাম দিন Translation results
৷ ইনপুট পতাকার মতো, --sheets_output_names
পতাকাও পাঠ্য নামের পরিবর্তে শীট URL বা ID গ্রহণ করে।
%%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 ম্যাজিক পোস্ট-প্রসেসিং বিকল্পগুলি প্রদান করে যা আপনাকে পাইথন কোড ব্যবহার করে মডেল আউটপুট পরিবর্তন বা প্রক্রিয়া করার অনুমতি দেয়।
পোস্ট-প্রসেসিং ফাংশন হয় আউটপুটে একটি নতুন কলাম যোগ করতে পারে, অথবা 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
আহ্বান করা হয়, তখন মূল মডেল আউটপুট শব্দের সংখ্যা গণনা করতে ব্যবহৃত হয়। আপনি যদি এগুলিকে চারপাশে অদলবদল করেন, তবে শব্দ গণনা পরিবর্তে বের করা প্রথম বাক্যে শব্দের সংখ্যা হবে।
আরও পড়া
- এলএলএম সম্পর্কে আরও জানতে LLMs ধারণা নির্দেশিকা পড়ুন।
- PaLM-এর সাথে কাজ করার সবচেয়ে বেশি সুবিধা পেতে প্রম্পট তৈরি করার বিষয়ে আরও জানতে প্রম্পট নির্দেশিকা দেখুন।
- প্রোটোটাইপ করতে এবং বিভিন্ন প্রম্পটের সাথে পরীক্ষা করতে, Google AI স্টুডিও দেখুন। এছাড়াও, আরও তথ্যের জন্য Google AI স্টুডিও কুইকস্টার্ট দেখুন।