কোলাব ম্যাজিক

এই নোটবুকটি 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 ম্যাজিক চারটি ভিন্ন কমান্ড প্রদান করে:

  1. run
  2. compile
  3. compare
  4. 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 শীটে আউটপুট লিখতে পারেন।

লগ ইন করুন এবং পত্রক অ্যাক্সেস অনুমোদন করুন

PaLM ম্যাজিকের সাথে ব্যবহারের জন্য একটি স্প্রেডশীট ফর্ম্যাট করা

টেমপ্লেট ডেটা হিসাবে লোড করার জন্য একটি Google পত্রকের ID বা URL --sheets_input_names পতাকায় পাস করুন৷

একটি প্রম্পট টেমপ্লেটে ডেটা ব্যবহার করতে আপনার স্প্রেডশীটে নিম্নলিখিত বিন্যাসটি ব্যবহার করুন:

  1. শীটের প্রথম সারিতে ভেরিয়েবলের নাম (আপনার প্রম্পট টেমপ্লেটের) রাখুন।
  2. নীচের সারিতে প্রতিটি ভেরিয়েবলের পরিবর্তে ডেটা রাখুন।

উদাহরণস্বরূপ, যদি আপনার প্রম্পট টেমপ্লেটে দুটি ভেরিয়েবল থাকে, 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 আহ্বান করা হয়, তখন মূল মডেল আউটপুট শব্দের সংখ্যা গণনা করতে ব্যবহৃত হয়। আপনি যদি এগুলিকে চারপাশে অদলবদল করেন, তবে শব্দ গণনা পরিবর্তে বের করা প্রথম বাক্যে শব্দের সংখ্যা হবে।

আরও পড়া