Недавно я поймал себя на неприятной мысли, что мой собственный ИИ-ассистент местами проигрывает голому Claude, в который вообще ничего моего не вложено. И когда я начал думать как вытащить ассистента из этой ямы, оказалось что дело вовсе не в том чтобы дать ему больше примеров, а в том как модель вообще идёт вглубь вопроса. А она почти не идёт. К этому я и пришёл: главная проблема не в промпте и не в стиле, она в том что у языковых моделей нет ступеней глубины, по которым они шагали бы от поверхности темы к настоящей боли человека. И пока эту штуку не починишь хотя бы внутри своего продукта, любой ассистент будет красивой обёрткой над тем же самым Claude, только дороже.
Расскажу как всё было, потому что ситуация бытовая до смешного.
Знакомая получила от чистого Claude больше, чем от моего продукта
Одна моя знакомая разбирала свою тему прямо в голом Claude, без всякого моего приложения, и просто задавала ему маленькие наводящие вопросы. И вот этими маленькими вопросами она вытаскивала из модели реально глубокие ответы, местами лучше чем выдаёт Картара, мой Telegram Mini App с ИИ-персонажем, куда я как раз вложил кучу сил в промпты, в характер, в эмпатию. И тут я сижу и думаю: подождите, а зачем тогда вообще нужен мой продукт, если человек руками, бесплатно, в обычном чате докапывается до сути не хуже, а иногда и лучше? Это же прямой удар по смыслу того, что я делаю.
Вопрос получился на стыке продукта и философии ИИ, и звучит он так: как сделать своего ассистента ценнее голой модели, не превратив его при этом в её копию? Потому что соблазн-то очевидный, взять и накидать модели побольше примеров «вот так отвечай», и она вроде бы станет похожа на то что я хочу. Но это и есть ловушка.
Почему я отверг путь few-shot примеров
Первое что приходит в голову любому кто работает с промптами для ассистента ИИ, это few-shot, то есть показать модели несколько эталонных диалогов чтобы она поняла нужный тон и глубину. И я этот путь сразу зарубил, потому что у меня уже был плохой опыт, насчёт примеров я чет не уверен, он только примеры копирует потом. Вот ровно это и происходит, даёшь модели три красивых ответа, а она дальше тупо воспроизводит их структуру и интонацию, как будто у неё в голове отпечатался шаблон, и никакой своей глубины она не добывает, просто аккуратно переклеивает твоё. С похожим я уже сталкивался, когда мой бот на разные данные всем писал структурно одно и то же — это типовость самой модели лезет наружу.
И тут я понял чего на самом деле боюсь. Я боюсь сделать второй Claude. Не в смысле «такой же мощный», а в смысле бессмысленный клон, обёртку которая ничем не отличается от того что лежит в открытом доступе. Я это для себя так и сформулировал: не хочу делать второй клод, хочу оставить Картару, но чтобы она была ценнее. Ценнее тут ключевое слово. Не другая, не с другим логотипом, а именно глубже по сути, чтобы человек заходил в неё не потому что лень открыть чат, а потому что внутри он получает то чего голая модель ему не даёт.
А что голая модель не даёт? Вот тут начинается самое интересное.
Идея ступеней глубины: чего нет ни у одной LLM
Я давно кручу в голове мысль что у языковых моделей в принципе проблема с глубиной, и сформулировал её так: вообще в целом у ЛЛМ я считаю проблемы с глубиной, им нужны какие-то специальные ступени что ли, чтобы они шагали по ним до какого-то уровня. То есть модель умеет дать хороший ответ на заданный вопрос, но она не умеет сама идти вглубь вопроса слой за слоем, спускаться от общего к частному, докапываться до того что человека реально гложет под тем что он спросил.
Чтобы было понятно, у меня есть метафора арбуза. Смотрите: вы спрашиваете человека, что ему нравится, он говорит, нравится арбуз. Хорошо, а что именно в арбузе нравится, вкус. А что во вкусе, сладость. А что в этой сладости, какая она, чем цепляет, с чем связана? Вот это и есть ступени: нравится, вкус, сладость, и дальше углубляемся в саму сладость. Каждый шаг сужает фокус и приближает к настоящей сути. И вот таких ступеней рассуждения у моделей нет, они отвечают сразу на «нравится арбуз» развёрнуто и красиво, но не идут по лестнице вниз сами.
Применительно к ассистенту это значит вот что. Правильный ход это сначала выделить главное в том что человек спросил, потом понять что его реально беспокоит под этим вопросом, а потом уже углубляться именно туда, а не размазывать ровный лекторский ответ по всей теме сразу. Знакомая, по сути, вручную делала эти шаги за модель своими маленькими вопросами, она и была той самой лестницей. А мой продукт должен уметь строить эту лестницу сам, без того чтобы человек дёргал модель наводящими вопросами.
И вот к чему я пришёл, и для меня это правда большая штука: такие ступени должны быть у ллм, но их нет никогда, и я в этом вижу большую проблему. Это не баг конкретно Картары, это общее свойство нейросетей на сегодня. И кто первый научится встраивать в ассистента нормальное пошаговое углубление, тот и получит продукт который реально ценнее голой модели, а не косметически другой.
Эмпатию не убиваю, длину ответа делаю адаптивной
Параллельно вылез ещё один соблазн, и я его тоже хочу зафиксировать, потому что он коварный. Когда начинаешь гнаться за глубиной, тянет сделать ассистента «умнее» в смысле суше, длиннее, лекционнее, серьёзнее. И вот тут легко угробить ровно то что отличает Картару от голого Claude, её эмпатию, живость, ощущение что с тобой разговаривает кто-то кто проникся ситуацией, а не выдаёт справку. Я для себя давно решил что ассистент должен быть живой, приводить примеры иногда, ведь не все понимают заумную речь, и пользователь должен чувствовать близость. Так что лекцию из неё я делать не стал, эмпатию решил не трогать вообще.
А вот с длиной ответа я поменял подход. Раньше у меня было жёсткое правило, грубо говоря режим интерпретации отвечает так, а обычный чат вот так, и всё по линейке. Но это глупо, потому что глубина и длина это не одно и то же, иногда самый глубокий ответ короткий, а иногда наоборот. Поэтому вместо жёсткого правила я перешёл на адаптивную глубину ответа: пусть ассистент сам решает насколько разворачиваться, исходя из того на какой ступени сейчас разговор и что человеку реально нужно в этот момент. Это маленький сдвиг в логике, но он как раз из той же оперы, не навязывать поведение шаблоном, а дать модели спускаться по лестнице с нужным шагом.
Что я из этого вынес
Главный вывод даже не технический. Когда твой собственный ИИ-ассистент проигрывает голой модели, первая реакция это накидать ему примеров и стиля, то есть сделать клон поприличнее. Но это тупик, потому что нейросеть будет копировать твои примеры, а не добывать смысл, и ты получишь второй Claude, только платный и в обёртке. Настоящая ценность не в том чтобы ассистент звучал по-особому, а в том чтобы он умел то чего голая модель не умеет, идти вглубь вопроса сам, ступенька за ступенькой, от арбуза к сладости.
Я не утверждаю что уже решил эту задачу, я её только нащупал и пока чиню в пределах одного своего продукта, где могу руками задавать ассистенту логику углубления. Но мне кажется это и есть тот фронт на котором личные ИИ-ассистенты будут отличаться друг от друга в ближайший год: не у кого красивее промпт, а у кого модель умеет докапываться. Если у вас есть свой ассистент или вы такой собираете, попробуйте не давать ему примеры, а проверить умеет ли он спуститься на следующую ступень вопроса сам. Очень отрезвляет.
Кстати, про то насколько вообще шатко всё устроено внутри таких приложений у меня была отдельная история, когда друг открыл моё приложение с моего же телефона и ассистент выложил ему мою жизнь. Так что фасад фасадом, а внутри всегда веселее чем кажется снаружи. Вот и делайте выводы.