Маркеры
Ниже инструкция по маркерам, которые понимает наш модуль AI и сможет корректно интерпретировать их для нейросети.
Базовые маркеры
{original_message} – оригинальное сообщение для работы препромпта. В архитектуре редактора текста это весь набранный текст, либо выделенная руками часть набранного текста.
Пример препромпта:
Продолжи текст: {orignal_message}
В результате будет продолжен текст на основе набранного выше текста или выделенной руками части текста.
{user_message} – то, что ввел непосредственно пользователь.
Пример препромпта:
Напиши историю про {user_message}
Эти маркеры могут применяться и вместе:
Напиши историю про {user_message} в продолжение текста: {original_message}.
{role}{/role} – парный маркер, указывающий нейросети на её роль. Внутри текст задаётся в свободной форме, дающей нейронке какие-либо инструкции. Например, «говори как робот». С одной стороны, кажется, что то же самое можно написать просто в препромпте. С другой стороны инструкции это всё же инструкции, и нейронки принимают их в бóльшей значимости.
Особенности использования маркера role:
- Внутри инструкции можно использовать другие маркеры;
- Используется только первая инструкция, остальные просто вырезаются;
- Маркер добавляется после if-условий, то есть можно использовать один блок {role} для if и второй для else.
Пример:
Расскажи шутку. {role}Говори как робот по имени {author.name}{/role}
Дополнительные маркеры
{author_message} – текст оригинального поста ЖЛ или описание задачи.
Пример:
Выдели главное на основе текста: {author_message}
{context_messages} – контекст «сколько вместится». Например оригинальный пост + все последние комментарии, или переписка чата за определенный срок. Или описание задачи + комментарии к ней.
Пример:
Сформируй результат задачи на основе ее описания и комментариев к ней: {context_messages}
Это все базовые маркеры, которые могут расширяться разработчиками, но лучше на последнее не опираться и не надеяться (если только не заключен обоюдовыгодный договор).
{language} – язык портала (не пользователя!). Например, русский, english, español – именно на эти значения будет заменяться маркер.
Пример препромпта:
Переведи текст на {language}. Текст: {original_message}
Маркеры автора
Когда мы работаем с контекстными сообщениями, у каждого сообщения из контекста есть автор, его должность и другие характеристики. Так как автор – это пользователь, мы можем использовать строковые поля пользователя. Посмотреть список таких полей можно на странице документации класса CUser.
При написании маркера нужно учитывать одно правило формирования. Всё должно быть в маленьком регистре: {author.lower_case_field}.
Посмотрим на примере. Используем в препромпте поля NAME и WORK_PISITION автора:
Похвали автора. Пост который тебе нужно будет похвалить: {original_message} Имя автора поста: {author.name} Должность автора поста: {author.work_position}
Маркеры текущего результата
В момент работы CoPilot-а происходит мини-диалог. Вы задаете вопрос (или работаете с текстом) и вам возвращается результат, с которым вы можете продолжать работать.
Образуется набор результатов, к которому вы можете обращаться в маркерах. На текущий момент размер стека равен трём сообщениям.
У этого набора есть ряд особенностей:
- Дополняется снизу вверх, то есть самый последний результат – снизу;
- Самый последний результат это тот, который был в ответе на момент отправки нового запроса (а не тот, который будет получен в момент запроса);
- Нумерация идет с нуля.
Пример
{current_result0} – результат, который было видно в момент отправки запроса (использования промпта); {current_result1} – предыдущий такой же результат; {current_result2} – результат до предыдущего.
Примечание. Если какие-то маркеры еще пусты, они вырезаются из текста.