ym88659208ym87991671
Шаблоны промптов | Документация для разработчиков

Шаблоны промптов

Обновлено 3 октября 2024

При использовании 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.prompts import load_prompt
from langchain.chat_models import GigaChat
from langchain.chains import LLMChain

giga = GigaChat(credentials="<ключ_авторизации>")
synonyms_with_examples = load_prompt('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.yamlhello_v2.yaml.

Это связанно с тем, что шаблоны хранятся отдельно от основной библиотеки GigaChain и загружаются напрямую по ссылке.

В своих проектах используйте последние версии шаблонов.

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.