Bu not defterinde, PaLM için Colab sihirli komutları tanıtılmaktadır. Sihirler sayesinde Colab not defterinden istemleri kolayca geliştirebilir, test edebilir, karşılaştırabilir ve değerlendirebilirsiniz.
ai.google.dev'de görüntüleyin | Google Colab'de çalıştır | Kaynağı GitHub'da görüntüleyin |
Kurulum
Sihirleri yükleyip test etmek için aşağıdaki adımları uygulayın.
PaLM sihrini yükleme
Colab veya başka bir IPython ortamında PaLM sihirli komutlarını kullanmak için önce google-generativeai
Python paketini indirip yüklemeniz gerekir.
%pip install -q google-generativeai
PaLM'nin büyüsü yükleniyor
Ardından, %load_ext
sihrini kullanarak %%palm
sihrini yükleyin:
%load_ext google.generativeai.notebook
Yüklemeyi test etme
Sihirli komutların doğru yüklenip yüklenmediğini test etmek için %%palm --help
komutunu çalıştırın. Henüz yoksa PaLM API anahtarına da ihtiyacınız olacağını unutmayın (sonraki adıma bakın).
%%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 anahtarı alma
PaLM API'yi kullanmak için bir API anahtarı oluşturmanız gerekir. (Bu adımı yalnızca bir kez yapmanız gerekir.)
Not defterinde API anahtarını ayarlama
Aşağıdaki hücreyi çalıştırarak API anahtarınızı ayarlayın.
%env GOOGLE_API_KEY=YOUR PALM KEY
PaLM sihirli komutları: run
, compile
, compare
ve evaluate
PaLM sihirleri dört farklı komut sağlar:
run
compile
compare
evaluate
Komut: palm run
run
komutu, hücrenin içeriğini modele gönderir.
İstem çalıştırmak çok yaygın olduğu için herhangi bir komut sağlanmadığında PaLM sihirleri varsayılan olarak run
komutuna ayarlanır. Örneğin, sonraki iki hücre aynı.
%%palm run
The opposite of hot is
%%palm
The opposite of hot is
Sonucu anlama
Prompt
sütunu modele gönderilen metni, text_result
sütununda ise sonuç gösterilir. Bu kılavuzda ilerledikçe diğer sütunlar kullanıma sunulacaktır.
İstem şablonları
İstemlerin sabit dizeler olması gerekmez. {curly braces}
kullanarak şablon yer tutucularını kullanarak bir isteme değer ekleyebilirsiniz.
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
Sonucu anlama
Input Num
sütunu, listelerdeki giriş kelimesinin dizinini izler. Bu örneklerde, Input Num
/0
'hot'
ve 1
'cold'
değerine eşittir.
Birden fazla giriş grubu belirtme
Ayrıca, aynı anda birden fazla giriş grubu da belirtebilirsiniz.
extreme_temperatures = {
'word': ['hot', 'cold']
}
minor_temperatures = {
'word': ['warm', 'chilly']
}
%%palm --inputs extreme_temperatures minor_temperatures
The opposite of {word} is
Google E-Tablolar'daki veriler okunuyor
PaLM sihri, Google E-Tablolar'da okuma ve yazma işlemleri de yapabilir. E-Tablolar verilerine erişmek için giriş yapmanız gerekir. Bu bölüm, E-Tablolar'daki verilerin okunmasına odaklanır. Sonraki bölümde, bir Google E-Tablosuna nasıl çıkış yazabileceğiniz gösterilmektedir.
Giriş yapın ve E-Tablolar'a erişim yetkisi verin
Bir e-tabloyu PaLM sihriyle kullanmak üzere biçimlendirme
Şablon verisi olarak yüklemek için bir Google e-tablosunun kimliğini veya URL'sini --sheets_input_names
işaretine iletin.
Verileri bir istem şablonunda kullanmak için e-tablonuzda aşağıdaki biçimi kullanın:
- Sayfanın ilk satırına değişkenlerin (istem şablonunuzun) adlarını girin.
- Aşağıdaki satırlarda, her bir değişkenin yerine kullanılacak verileri yerleştirin.
Örneğin, istem şablonunuzda değiştirilecek iki değişken (name
ve temperament
) varsa e-tablonuzu şu şekilde yazarsınız:
ad | mizaç |
---|---|
Milo Dili | arsız |
Bigsly | rahat |
Subra | utangaç |
%%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.
Kendiniz deneyin!
Kendi verilerinizi kullanarak bu özelliği denemek için yeni e-tablo oluşturup kimliği --sheets_input_names
hizmetine iletin. Kimlik ve URL'nin yanı sıra e-tablolarınızı başlığa göre de arayabilirsiniz (ör. %%palm --sheets_input_names "Animal adjectives"
).
E-Tablolar girişlerini Python girişleriyle birleştirme
E-Tablolar girişleri --inputs
ile de birleştirilebilir:
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.
Komut: palm eval
İstemin sonucunu bilinen kesin referans verileriyle karşılaştırmak için %%palm eval
özelliğini kullanın.
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:
Post işleme modeli çıkışları
Kesin referans testi yapmak için model çıkışını son işleme tabi tutmanız gerekebilir.
İşleme sonrası işlevleri, model çıkışını işleyen bir işlev tanımlamanıza olanak tanır. eval
komutunda ise son eşitlik kontrolünde yalnızca sonuç sütunu kullanılır.
Sonuçları işlemek için bir işlev tanımlamak üzere post_process_replace_fn
tasarımcısını kullanın:
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()
Yukarıda tanımlanan extract_and_normalize
işlevi, modelden çıktıyı alır ve tekrarlanan dil çiftlerini kırpar. Böylece, yalnızca ilk yanıt kalır. İşleme sonrası süreci hakkında daha fazla bilgi edinmek için işleme sonrası bölümüne göz atın.
%%palm eval --inputs test_data --ground_truth ground_truth | extract_and_normalize
English: Hello
French: Bonjour
English: {word}
French:
Komut: palm compile
Yer tutucu içeren bir istemi Python'dan çağrılabilen bir işleve dönüştürmek için %%palm compile
komutunu kullanın.
Tüm işaretler ve son işlemeler, işlevde "derlenir" ve çağrıldıklarında kullanılır.
Bu örnekte, önce gerçekleşen extract_and_normalize
işleme sonrası işlevi kullanılarak translate_en_to_fr
adında bir işlev oluşturulmuştur.
%%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})
Çıkış biçimleri
Varsayılan olarak "derlenmiş" bir işlev, çıktısını Pandas DataFrame
olarak görüntülenecek bir nesne olarak döndürür. Ancak, sonuç nesnesini sırasıyla .as_dict()
ya da .as_dataframe()
ile bir DataFrame
veya sözlüğe dönüştürebilirsiniz.
Daha fazla bilgi için --outputs
işaretini inceleyin.
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
Komut: palm compare
%%palm compare
, derlenmiş istemleri çalıştırır ve karşılaştırma sonuçlarının yan yana gösterildiği bir tablo oluşturur. Böylece farkları inceleyebilirsiniz.
%%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
Özel karşılaştırma işlevleri
Varsayılan olarak compare
, döndürülen sonuçlarda eşitliği kontrol eder. Ancak --compare_fn
işaretiyle bir veya daha fazla özel işlev belirtebilirsiniz:
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
Diğer komutlar
Yardım
--help
işareti, doğrudan %%palm
öğesine aktarabileceğiniz desteklenen komutları gösterir
Her komutla ilgili ayrıntılı belgeleri görüntülemek için --help
ekleyin. Örneğin,
%%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.
Modeller
Kullanmak istediğiniz PaLM modeli varyantını belirtmek için --model
işaretini kullanın.
Desteklenen modelleri almak için list_models()
yöntemine bakın. PaLM sihri, generateText
yöntemini destekleyen tüm modellerle kullanılabilir.
%%palm run --model models/text-bison-001
My favourite color is
Model parametreleri
--candidate_count
ve --temperature
gibi model parametrelerini de yapılandırabilirsiniz.
%%palm run --model models/text-bison-001 --temperature 0.5
My favourite color is
Hata ayıklama: Yankı modeli
İstemi tekrar size hatırlatacak bir echo
modeli de mevcut. Herhangi bir API çağrısı yapmaz veya kotanızı tüketmediğinden, çıkışı veya son işlemi test etmenin hızlı ve basit bir yolu olabilir.
%%palm --model_type echo
A duck's quack does not echo.
Çıkışı Python'a aktarın
PaLM sihri, tablo çıktısını görüntülemenin yanı sıra model çıktısını Python değişkenlerine kaydederek bunları daha fazla değiştirmenize veya sonuçlarınızı dışa aktarmanıza olanak tanır.
Bu örnekte, çıkış bir Python değişkenine kaydedilmiştir: fave_colors
%%palm --outputs fave_colors
The best colors to wear in spring-time are
Çıkış değişkenleri, varsayılan olarak Pandas DataFrame
biçiminde görüntülenecek özel nesnelerdir. as_dict()
veya as_pandas_dataframe()
çağrılarıyla açıkça bir Python sözlüğüne ya da veri çerçevesine getirilebilirler.
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 E-Tablolar'a yazma
--sheets_output_names
kullanarak çıktıyı tekrar Google E-Tablolar'a kaydedebilirsiniz. Gizli E-Tablolar'a erişmek için giriş yapmış olmanız ve gerekli izinlere sahip olmanız gerekir.
Bunu denemek için yeni bir E-Tablo oluşturup Translation results
olarak adlandırın. Giriş işareti gibi, --sheets_output_names
işareti de metin adının yerine sayfa URL'sini veya kimliğini kabul eder.
%%palm --inputs english_words --sheets_output_names "Translation results"
English: Hello
French: Bonjour
English: {word}
French:
Sonuçlar yeni bir sekmeye kaydedilir ve burada Colab'de gördüğünüz verilerin aynısını içerir.
Birden çok aday oluşturma
Tek bir istem için birden fazla çıkış oluşturmak isterseniz --candidate_count
parametresini modele iletebilirsiniz. Bu değer varsayılan olarak 1 değerine ayarlanır ve yalnızca en iyi sonucu verir.
Bazen model, adaylar arasında aynı çıkışı oluşturur. Bunlar, aday grubundan sonuçların yinelenmesini sağlayan (birden fazla istemde değil) --unique
işaretiyle filtrelenebilir.
%%palm run --temperature 1.0 --candidate_count 8 --unique
In a single word, my favourite color is
Result Num
sütunu, aynı istemden oluşturulan birden fazla adayı ayırt eder.
İşleme sonrası model çıkışı
Olası çıktıların ve yapıların çok çeşitli olması, model çıktısının sorunlu alanınıza uygun hale getirilmesini zorlaştırabilir. PaLM sihri, Python kodunu kullanarak model çıkışını değiştirmenize veya işlemenize olanak tanıyan son işleme seçenekleri sunar.
Son işleme işlevleri, çıkışa yeni bir sütun ekleyebilir veya text_result
sütununu değiştirebilir. text_result
sütunu son sütundur ve nihai çıkışı belirlemek için eval
ve compare
komutları tarafından kullanılır.
Son işlemede kullanılacak bazı örnek işlevler aşağıda verilmiştir. Biri yeni bir sütun ekler, diğeri ise post_process_replace_fn
tasarımcısını kullanarak sonuç sütununu günceller.
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
Bu işlevleri kullanmak için dikey çizgi (|
) operatörünü kullanarak bunları %%palm
komutuna ekleyin.
%%palm run | word_count | extract_first_sentence
The happiest thing I can imagine is
Burada düzen önemlidir. word_count
çağrıldığında, kelime sayısını hesaplamak için orijinal model çıkışı kullanılır. Bunları değiştirirseniz kelime sayısı, ayıklanan ilk cümledeki kelime sayısı olacaktır.
Daha fazla bilgi
- LLM'ler hakkında daha fazla bilgi edinmek için LLM kavramları rehberini inceleyin.
- PaLM ile çalışmaktan en iyi şekilde yararlanmak için istem oluşturma hakkında daha fazla bilgi edinmek üzere istem kurallarına göz atın.
- Farklı istemlerle prototip oluşturmak ve denemeler yapmak için Google AI Studio'ya göz atın. Daha fazla bilgi için Google AI Studio hızlı başlangıç kılavuzunu da inceleyin.