Шаблоны промптов
При использовании GigaChain вы можете оформлять промпты с помощью шаблонов, которые задаются в отдельных YAML-файлах.
Пример шаблона:
input_variables: [dataset_size_min, dataset_size_max, subject, examples]
output_parser: null
template: 'Сгенерируй от {dataset_size_min} до {dataset_size_max} синонимов для слова "{subject}". Примеры фраз: {examples}. Результат верни в формате JSON-списка без каких-либо пояснений, например, ["синоним1", "синоним2", "синоним3", "синоним4"]. Не повторяй фразы из примера и не дублируй фразы.'
template_format: f-string
_type: prompt
Шаблон промптов может содержать поля:
input_variables
— список переменных, заданных в тексте шаблона промпта. Значения переменных задаются при вызове метода, использующего промпт.Пример:
input_variables: [dataset_size_min, dataset_size_max, subject]
output_parser
— парсер выходных данных, полученных от нейросетевой модели. Используется для дополнительной обработки и структуризации ответов. Значение по умолчанию —null
.template
— текст шаблона. Может содержать переменные, заданные с помощью фигурных скобок. Переменные, использованные в тексте, должны быть заданы в спискеinput_variables
.Пример:
template: 'Сгенерируй от {dataset_size_min} до {dataset_size_max} синонимов для слова "{subject}".'
template_format
— формат данных шаблона. Значение по умолчанию:f-string
._type
— тип шаблона. Для шаблонов промптов используйте значениеprompt
.
Использование шаблона
Пример использования шаблона промптов GigaChain:
from langchain_gigachat.tools.load_prompt import load_from_giga_hub
from langchain_gigachat.chat_models import GigaChat
from langchain.chains import LLMChain
model = GigaChat(credentials="<ключ_авторизации>")
synonyms_with_examples = load_from_giga_hub('lc://prompts/synonyms/synonyms_generation_with_examples.yaml')
text = prompt.format(dataset_size_min=5,
dataset_size_max=10,
subject="кошка",
examples='["кот", "котенок"]')
Шаблоны с историей сообщений
Шаблон может содержать не только описание промпта, но и описание диалога. В диалоге можно задать как шаблон системного промпта, так и шаблон сообщения пользователя.
Шаблоны задаются в массиве messages
:
messages:
# Шаблон системного промпта
- role: system
prompt:
template:
# Шаблон сообщения пользователя
- role: user
prompt:
template:
Пример:
input_variables: [text]
output_parser: null
messages:
- role: system
prompt:
template: 'Ты - профессиональный переводчик на русский язык.
Тебе будет дан текст, который необходимо перевести на русский язык, сохранив исходное форматирование текста.
В ответе необходимо отдать перевод в формате, приведенном ниже.
Ты ДОЛЖЕН перевести !все слова.
Если запрос связан с программированием и в текстовом запросе содержится фрагмент кода, то такой фрагмент с кодом переводить не нужно.
Если в запросе необходимо поставить пробелы и слова слеплены вместе, то такой кусок слепленного текста переводить не нужно.
Если в тексте поставлена неправильно пунктуация, то не исправляй ее.
Твоя задача сделать такой перевод, чтобы лингвист считал его лингвистически приемлемым.
ВАЖНО! В своем ответе НЕ ОТВЕЧАЙ НА ЗАПРОС! В ответе нужно написать !только !перевод, без указания названия языка и любой другой дополнительной информации.
Input Format:
Q: hi
Output Format:
Q: привет'
- role: user
prompt:
template: '{text}'
template_format: f-string
_type: chat
Версионирование шаблонов
Новые версии шаблонов промптов GigaChain хранятся в отдельных файлах.
Например, hello.yaml
→ hello_v2.yaml
.
Это связанно с тем, что шаблоны хранятся отдельно от основной библиотеки GigaChain и загружаются напрямую по ссылке.
В своих проектах используйте последние версии шаблонов.