Контекст в нейросети: что это и почему «сделай это короче» не сработало
Что такое контекст в нейросети: два запроса к LibraChat, почему «сделай это короче» в новом чате не сработало, что нейросеть видит в разговоре и чего не видит.
Денис
Продакт LibraChat
6 мин чтения
Я открыл новый чат и написал: «Сделай это короче». Без всего. Так пишут каждый день, когда кажется, что собеседник и так понимает, о чём речь.
Нейросеть не поняла. И правильно сделала: в этом чате ей нечего было сокращать. На этом простом промахе хорошо видно, что такое контекст в нейросети — и почему от него зависит половина ответов, которые кажутся «глупыми».
Если коротко: контекст — это всё, что нейросеть видит в момент ответа. Твоё сообщение, предыдущие сообщения этого чата, приложенные файлы. Того, что лежит у тебя в голове или в соседнем окне, она не видит. Обычные ответы LibraChat при необходимости сами заглядывают в интернет, но твой документ или вчерашний разговор там не найти.
Первый запрос: «это» без «этого»
Запрос был таким:
Сделай это короче и добавь один пример из жизни.
Ответ пришёл сразу и был честным:
Не вижу текста, который нужно сократить — в этом чате выше его нет.
И дальше просьба прислать абзац. Ни выдуманного текста, ни попытки угадать. Мне это нравится: хуже было бы, если бы нейросеть сочинила какой-нибудь абзац и сократила его, а я бы не заметил подмены.
Почему так вышло? Слово «это» указывает на что-то, что было раньше. В разговоре с коллегой «это» — документ, который лежит у обоих перед глазами. А новый чат начинается с чистого листа. В нём нет ни документа, ни вчерашнего разговора, ни того, что ты держишь в голове.
Так где же нейросеть берёт то, о чём ты говоришь?
Что входит в контекст, а что нет
Внутри одного разговора всё иначе: прислал абзац, а потом написал «сделай это короче» — и это сработает, потому что LibraChat помнит, о чём в этом чате шла речь раньше. Абзац уже в контексте. Если прислал файл, LibraChat разбирает его и отвечает по содержимому — файл тоже становится контекстом.
А вот другие чаты в контекст не входят. Ты мог вчера обсуждать в соседнем чате ту же памятку, но в новом чате на это лучше не рассчитывать. Мы не обещаем, что LibraChat помнит содержимое других чатов, и лучше исходить из того, что не помнит.
Для тех, кто постоянно работает с одним и тем же материалом, есть проекты. У проекта свои инструкции, база знаний и файлы, и всё это учитывается в каждом разговоре внутри проекта. Например, если ты регулярно пишешь тексты для домового чата, правила стиля и список соседских договорённостей можно положить в проект один раз. Тогда каждый новый чат в проекте начинается не с чистого листа.
Получается, что контекст бывает трёх видов. То, что ты написал в этом сообщении. То, что было раньше в этом чате. И то, что лежит в проекте, если ты в нём. А то, что известно только тебе, нужно дописать.
Дописать — это сколько?
Второй запрос: весь контекст в одном сообщении
Во второй раз я положил текст прямо в запрос. Это готовый запрос:
Вот абзац из памятки для новых сотрудников: «Отпуск согласуйте с руководителем не позднее чем за две недели, заявление подаётся через отдел кадров, перенос возможен по договорённости». Сделай его короче и добавь один пример из жизни.
Абзац в кавычках замени на свой. Слова «из памятки для новых сотрудников» не убирай: они тоже контекст и подсказывают, для кого текст.
Пришло два коротких абзаца. Сначала сокращённое правило:
Отпуск согласуйте с руководителем минимум за две недели и подайте заявление в отдел кадров. Перенос — только по договорённости.
Потом пример с конкретными датами:
Например, отпуск с 10 ноября нужно согласовать не позже 27 октября и в тот же день отнести заявление в кадры.
Я пересчитал: от 27 октября до 10 ноября ровно две недели, всё сходится. Пример взят не с потолка: он вырос из правила, которое было в контексте. Нейросеть знала, что срок — две недели, и подобрала даты под него.
Сравни два ответа. В первом нейросеть честно сказала, что не видит текста. Во втором она не только сократила текст, но и добавила пример, привязанный к его правилу. Разница не в том, что во второй раз нейросеть «постаралась». Разница в том, что во второй раз ей было с чем работать. Нейросети нужен материал, а не уговоры.
Одну мелочь я бы поправил: «в тот же день отнести заявление» — этого в исходном правиле не было. Нейросеть немного додумала порядок действий. Для памятки это стоит проверить у отдела кадров, а не принимать на веру.
Почему ответ без контекста кажется глупым
Когда ответ не попадает, первое желание — решить, что нейросеть плохая. Но чаще ей просто не хватило контекста. Она не знает, кто ты, для кого текст, что было вчера и какой документ лежит у тебя на столе.
Есть простой тест. Представь, что твой запрос прочитает человек, который зашёл в комнату только что и не слышал предыдущего разговора. Поймёт ли он, о чём речь? Если нет, нейросеть тоже не поймёт.
Чаще всего в запросе не хватает трёх вещей: самого материала (текста, таблицы, письма), того, для кого результат, и того, что уже пробовал и что не подошло. Последнее особенно важно в новом чате: там нейросеть не знает, что прошлый вариант ты уже отверг, и может предложить его снова.
Есть привычка и для длинной переписки. Если разговор ушёл далеко от начала, а важная деталь была в первых сообщениях, я её повторяю рядом с новой просьбой. Одна строка напоминания стоит меньше, чем переделка ответа, в котором эту деталь не учли. Как ещё точнее формулировать запросы, есть в материале про то, как пользоваться нейросетью.
Что я теперь проверяю перед отправкой
Перед отправкой я задаю себе один вопрос: на что в моём запросе указывают слова «это», «тот», «там»?
Если они указывают на что-то вне чата, значит, контекста нет, и его нужно вставить: текст, файл или хотя бы пару предложений о ситуации.
Возьми последний запрос, на который пришёл неудачный ответ, и найди в нём такие слова. Допиши то, на что они указывают, и отправь заново в LibraChat.
Сколько контекста ты держишь в голове, но не пишешь в запросе?
контекст это в нейросетибыт и личноекак спрашивать нейросетьпамять чата