В этом блокноте представлены магические команды Colab для PaLM. Magics позволяет легко разрабатывать, тестировать, сравнивать и оценивать подсказки прямо в блокноте 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 API
Чтобы использовать API PaLM, вам необходимо создать ключ 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 Sheet.
Войдите в систему и разрешите доступ к Таблицам.
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
Передайте идентификатор или URL-адрес Google Sheet в флаг --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"
.
Объединение входных данных Таблиц с входными данными Python
Входные данные листов также можно комбинировать с --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
из предыдущей версии .
%%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
модель, которая вернет вам подсказку. Он не выполняет никаких вызовов API и не использует вашу квоту, поэтому может быть быстрым и простым способом протестировать выходные данные или постобработку.
%%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
. Их можно принудительно включить в словарь Python или фрейм данных явно, вызвав 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, используя --sheets_output_names
. Вы должны войти в систему и иметь соответствующие разрешения для доступа к личным таблицам.
Чтобы попробовать это, создайте новый лист и назовите его 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
, исходные выходные данные модели используются для расчета количества слов. Если вы поменяете их местами, количество слов вместо этого будет количеством слов в извлеченном первом предложении.
Дальнейшее чтение
- Чтобы узнать больше о LLM, обратитесь к руководству по концепциям LLM .
- Ознакомьтесь с рекомендациями по подсказкам , чтобы узнать больше о создании подсказок, чтобы получить максимальную отдачу от работы с PaLM.
- Чтобы создать прототип и поэкспериментировать с различными подсказками, воспользуйтесь Google AI Studio . Кроме того, для получения дополнительной информации обратитесь к краткому руководству по Google AI Studio .