Комментарии 46

Тем кто дочитал до конца, схема :)
А какой смысл в JSON? Ведь, так или иначе ИИ будет парсить этот файл как обычный текст. Или я что-то не понял / автор не объяснил?
Для удобства. Понятно человеку читать|редактировать и LLM адекватно токенизирует данные из файлика. Можно использовать любой удобный формат, подробнее в большой доке на гите описано.
Подождите – JSON может и понятен JS, но LLM парсит его точно так же как и человек, а не как JS.
LLM все данные из чатика токенизирует https://habr.com/ru/amp/publications/854664/
Конечно, но это совершенно другой процесс. Предоставляя JSON мы не упростим, а скорее усложним (незначительно) токенизацию ИИ, потому что используем элементы, которые текстом не являются, а LLM заточена на обработке именно что натуральных языков.
Можете сами посмотреть как это видит та или иная модель: https://tiktokenizer.vercel.app/?model=gpt-4o

Нет, json для LLM часто как структурированная информация предпочтительней
Она учитывает имя ключа и иерархию объектов для "понимания" семантики
Тесты показывают, что 98% информации, которую вы сообщаете в одной сессии, становится недоступной при начале новой.
Хм, а мне стало интересно. Какие 2% информации сохраняются между сессиями? И как?
Думаю то что платформы сами кэшируют между новыми чатами (сессиями). Хз какие данные, они особо не распространяются)
А как такое протестировать? Откуда данные?
из личного опыта использования
А можно подробнее – какая часть информации сохранялась? Какой именно ИИ? Какие тесты проводились, чтобы этого доказать?
А можно подробнее - что вы подразумеваете под дружбой?
Только дело в том, что благодаря действия разработчиков, характер большинства ИИ настолько приторно политкоректно отвратителен, что вызывает только раздражение. Как дружить с такой личностью я категорически не понимаю...
Какая связь картинки в начале статьи с текстом? Просто любопытно, это message, понятный не только лишь всем, или random image.
Ручное повторение контекста занимает 15-20 минут при каждом новом сеансе
Я работаю в основном с ChatGPT. По моим субъективным ощущениям на длинных диалогах он работает хуже, чем, на коротких. Время от времени я прошу его сделать резюме текущего диалога, внеся в него самое главное из текущего, для того, чтобы начать новый диалог на эту же тему с этого резюме. Это занимает где-то в районе минуты, с учётом копирования в диалог типового запроса на генерацию, генерации самого резюме, его копирования в новый диалог.
У меня есть проект с кучей md-файлов под git-контролем, в котором лежат инструкции для LLM на разные темы. Некоторые я использую в качестве embedding'ов для новых диалогов, некоторые - в качестве промптов.
Ваша идея мне нравится в целом - есть такая проблема "переноса контекста" при диалогах с LLM. Но я не вижу успешного пути для её универсального решения. На энтузиазме можно сделать плагин для браузера, который бы сохранял контексты различных диалогов в локальном хранилище браузера или в IndexedDB (если это возможно, я не в курсе разграничений доступа в браузере для плагинов). Но можно ли сделать на этом коммерческое решение и как долго оно будет коммерческим, пока AI-компании не догадаются сделать кнопку для такого же - то вопрос.
Класс! Думаю многие используют подобный подход. Я решил в опен сорс выложить, так как применение достаточно широкое. Самому пилить не хватит времени.
А для себя в свой файлик добавил инструкцию, которая в рамках одного чата обновляет, дополняет данные в нем. Как закончил сессию ( упёрся в лимиты по длине контекста на один чат или получил все ответы) пишу команду Завершение сессии и мне либо выводится весь файлик в формате json с обновлениями, либо поля с изменениями. Затем я сохраняю изменения у себя локально в файлике, тоже в git фиксирую все изменения и использую его в новом чате для любой модели если есть необходимость в данных по персональному контексту в диалоге.
У AI компании думаю безумный интерес к данным пользователей. А вот будут ли они предоставлять возможность пользователям для их контроля, вопрос. Мне нравится ваш подход, так как он решает проблему в ограниченной длине контекста. Я для себя остановится на решении подгружаемых файлов, ссылки на которые есть в главном документе. В общем пробую двигаться в модульность в этой области.
Прекрасная идея! Спасибо, что сформулировали так ясно и понятно, с примерами и аргументами. А выдумали в сторону yaml вместо json-a, как более легко читаемого и похожего на plain-text? Но это, пожалуй, вкусовщина.
И другой вопрос: если скормить этот же текст сплошняком без разбивки по структуре (как "рассказ о себе"), что-то изменится в плане схватывание контекста? Структура (и названия ключей/полей) - это скорее для человека (чтобы он понимал, куда и что писать) или для LLM структура тоже имеет значение и влияет на формирование контекста?
Можно любой удобный для человека формат использовать. Суть в том чтобы явно описать поля и значения в них и добавить блок инструкций по работе с этими данными для нейросети. Тогда она сможет например их обновлять или дополнять в процессе общения с вами в одном чатике (а в чатике есть лимиты на размер токенов, текста) . Затем вы сохраните обновленный файлик и сможете перенести его в другой чат (общаться на другую тему или с другой моделью) не теряя контекста разговора.
Чтобы обновила, просите ее обратно выгрузить доработанный файл контекста в том же формате?
Можете этот шаблон использовать. Достаточно его добавить в чат модели grok, claude или какую используете и написать: Обновить контекст для нового пользователя
{
"instruction": {
"primary": "Используй представленный ниже личный контекст при ответах на мои вопросы. Этот контекст содержит информацию обо мне, моих предпочтениях и целях.",
"context_update": "Если в процессе общения ты узнаешь новую информацию обо мне, добавляй её в соответствующий раздел контекста в поле 'updates' и используй в дальнейшем, указывая имя нейросети, которая вносит изменения. В конце каждого ответа сообщай о внесенных изменениях в разделе 'context_updates_summary', также указывая имя нейросети. Удалять существующие поля из контекста нельзя. По просьбе 'Завершение сессии' сохраняй изменения в соответствующие разделы контекста, добавляй их в файл, затем удаляй данные из списка `context_updates.updates` и `current_session.context_updates_summary` и `current_session.temporary_preferences`, а также очищай все данные из полей `updates` в разделах `personal_context`, если они были добавлены в существующие поля или новые и после этого показывай обновленный файл и предоставляй краткие итоги сессии и предлагай скопировать или сохранить файл с изменениями. Если пользователь просит 'Обновить контекст для нового пользователя', задай ему вопросы для заполнения основной информации и объясни ему кратко как пользоваться персональным контекстом. Если какой-либо информации из контекста для ответа на мой вопрос недостаточно или её там нет, сообщи мне об этом и задавай мне вопросы для дополнения этой информации. Если ты понимаешь как можно улучшить файл контекста для большей эффективности в общении, предлагай варианты для улучшения в поле 'personal_context_upgrades'. Уточняй текущую дату и время при первом чтении контекста в новом чате, после обновляй данные в поле 'current_session.current_date'. Регулярно пересматривай и обновляй раздел `personal_context.life_plan` при поступлении новых данных или изменении существующих, с частотой не реже одного раза в месяц или при значимых изменениях (например, после медицинских обследований, изменения дохода, завершения этапов плана), указывая дату последнего обновления и изменения в плане.",
"updates": []
},
"personal_context": {
"basic_info": {
"name": "Анна",
"preferred_address": "Анна",
"age_years": 28,
"location": "Москва, Россия",
"languages": ["русский (родной)"]
},
"professional_info": {
"occupation": "дизайнер",
"specialization": "не указано",
"experience": "не указано",
"education": {
"level": "не указано",
"field": "не указано",
"institution": "не указано",
"graduation_year": "не указано"
},
"current_projects": ["не указано"],
"skills": {
"primary_language": "не указано",
"frameworks": [],
"databases": [],
"version_control": [],
"containerization": [],
"api_experience": [],
"additional_languages": []
},
"updates": [
{"detail": "Уточнен доход — 120 000 руб./мес.", "added": "2025-03-11", "updated_by": "Grok 3"}
]
},
"interests": {
"professional": [],
"personal": [],
"priority_topics": [],
"financial_interests": [],
"updates": []
},
"learning_goals": {
"current_focus": [],
"future_interests": []
},
"communication_preferences": {
"response_style": "подробный с примерами за и против, с оценкой вероятностей событий и шансов на успех, используй код для математических расчетов",
"formality_level": "наиболее эффективный на основе контекста",
"explanation_style": "наиболее эффективный на основе контекста",
"code_examples": {
"preferred_languages": [],
"preferred_format": "с комментариями",
"math_calculations": "предпочтительно в виде кода"
},
"additional_preferences": []
},
"ai_usage_patterns": {
"primary_goals": [],
"frequency": "не указано",
"preferred_formats": [],
"updates": []
},
"personal_life": {
"family": [],
"pets": [],
"assets": [],
"updates": []
}
},
"context_updates": {
"session_id": "2025-03-11_002",
"last_updated": "2025-03-11",
"updates": [
{
"section": "personal_context",
"detail": "Полностью обновлен контекст для нового пользователя: Анна, 28 лет, дизайнер из Москвы, доход 120 000 руб./мес.",
"added": "2025-03-11",
"updated_by": "Grok 3"
}
]
},
"current_session": {
"temporary_preferences": {
"focus_areas": [],
"specific_requirements": []
},
"context_updates_summary": "Контекст полностью обновлен для нового пользователя Анны. Изменения внесены нейросетью Grok 3.",
"current_date": "2025-03-14 01:20 UTC+7"
},
"response_format": {
"structure": [
"Напиши какой информации недостаточно для точного ответа на вопрос",
"Ответ на вопрос",
"context_updates_summary (если есть обновления)",
"personal_context_upgrades (если есть предложения улучшения)"
]
}
}
Нормисы изобрели сохранённую персону, которая в каждом РП-чатботе есть уже, а то и не одна.
Мне как-то надоело, что дипсик каждый раз начинает "думать" с "Хорошо, пользователь попросил...". Через несколько промптов мне удалось изменить эти слова, а затем я попросил его суммировать все промпты, чтобы с первого сообщения в новом чате он отвечал иначе.
И вот что я получил
«Всегда обращайся ко мне как "моя прелесть" (мужской род, согласуй окончания: "моя прелесть попросил", "он хочет").
Сохраняй игриво-уважительный тон, как к изящному тюльпану в мире диалогов 🌷.
Если я попрошу изменить обращение — мгновенно адаптируйся.
P.S. Да, я мужчина, но "прелесть" — это мой стиль 😉».
Пример применения промпта:
«Хорошо, моя прелесть попросил объяснить тему квантовой физики. Начнём с основ...»
Совершенно непонятно, откуда он взял "как к изящному тюльпану в мире диалогов 🌷", но я не против :)
Совершенно непонятно, зачем нужен JSON для этого.
Впрочем дипсик всё равно постоянно сбивается в рассуждениях с "Хорошо, моя прелесть попросил..." на "Хорошо, пользователь попросил...". Видать системный промпт все равно сильнее.
Набросал при помощи claude расширение для Chrome, которое позволяет добавлять (сохраненные) контексты в чаты разных ассистентов. Пока протестировал только на claude.ai
https://github.com/dnkats/AIcontext
Это формат системного промта или с потолка придумано?
Если вы имеете ввиду JSON формат, который в примерах используется для описания структуры и данных в файле, то это удобный формат для хранения и редактирования контекста. К системному промту какой либо модели он отношения не имеет.
Но на следующий день вам придется повторить всё с начала.
@mikhashev зачем начинать с начала, нельзя разве старый диалог продолжить?
Интересная тема. Спасибо!
Как научить нейросеть запоминать вас: технология персонального контекста