Пока там худалл пытается родить бету флаттера, я хочу пояснить один момент. Вдруг кто-то ещё не до конца понял, что я вообще делал
Режим студии. Изначальная идея была в том, чтобы обвязать основную модель несколькими помощниками, которые подумают за нее, сколько надо слов, какой стиль, какая сцена, разделят обязанности, оставив основной модели исключительно написать текст, не захламляя его хтмл, ксс, скриптами и прочей мишурой, в виде блоков беременности. Итого студия имеет три фазы(ну, изначально так было задумано): преген, финальный агент и пост-клинер вызов. Идея здравая. Но есть подводные.
Первая итерация. Сначала я реально сделал шесть префазных агентов, которые разными запросами сочиняли для основной модели нужные параметры. Я знал, что студия по определению будет перерасходом токенов. Я готов был мириться с х2-2.5, но вышло в реальности х7-10. Поэтому полез смотреть Маринару и Проликса.
Вторая итерация. Выяснилось, что Маринара не гоняет 6 агентов. Она просит в одном вызове модель подумать над 6-7 задачами и описать их. Условно, то же самое: прочти текст, скажи, сколько слов надо в ответе, какой стиль, как продолжить и т.д. На выходе получилось заебись. Но только для средних моделей. В ходе тестов выяснилось, что сильным моделям преген фаза только мешает. Поэтому было принято решение сделать три режима студии: Легаси(шесть-семь преген контроллеров), Ассистед(два преген контроллера) и Директ(вообще без преген фазы). Тем самым, в директ режиме, мы отвязываем необходимость основной модели генерировать хтмл и прочую чушь, но оставляем весь пайплайн рассуждений на ней (ей так будет лучше). Но возник другой вопрос, а что действительно нужно сильной модели?
Третья итерация. Память. Вообще, я долго долбился с реализацией памяти. По сути, аналога наших меморибуков нет нигде, а они есть слишком прочный фундамент, покрывающий процентов 80-90 памяти. К тому моменту они уже умели скармливать модели только нужные куски информации из истории, плюс я добавил вызов нужных сообщений через эмбеддинги. И вроде звучит круто. Но встаёт вопрос: если мы уйдем от персонажа на тысячу сообщений, как модель вспомнит состояние отношений на момент ухода? Потому-что в карточке, допустим, у нас прописано, что персонаж холоден ко всем вокруг. И карточка у нас на постоянном инжекте. Т.е. через тысячу сообщений может случиться так, что ллм не сможет понять в каком состоянии наши отношения и вывалиться в холодность. Что делать с этим? Так и появился Studio Ledger.
Текущая итерация. Леджер. По сути это короткие записи состояний, которые инжектятся по ключам, короткими строками, которые ллм принимает, как основной контекст (да, я знаю, что есть card rewritter, но я пока ещё думаю над реализацией). Тем самым, получается, что в леджере хранится последнее состояние именного нпс. Если вдруг через тысячу сообщений, что мы не общались с нпс, ллм не сможет вывести из меморибуков и сырых сообщений состояние отношений - Леджер в этом поможет. Да, это ещё один вызов ллм. Но он не дорогой. И работает. Там есть нюанс того, что он способен заставить модель галлюцинировать, поэтому был реализован ещё и реконсиллер, который чистит Леджер от плохой информации, а также мерджит нужные записи, если Леджер не справился. Пока на тестах показывает себя неплохо. Но есть одно но.
Леджер всё ещё попадает в запрос одновременно с карточкой персонажа. И если там будет противоречивая инфа, все равно есть вероятность, что модель выберет карточку овер Леджера. Поэтому нужен в будущем card rewritter. Но с ним есть нюансы, над которыми я буду думать в ближайшем будущем.
Суммарно, если мы берём Легаси и вообще все фазы, мы получаем примерно 6 последовательных вызовов, из которых реально тяжёлых по токенам 1-2 вызова. В виду того, что я постоянно менял пресет под это дело, мои чаты в среднем не выходили за рамки 100 сообщений. Был один забег на тысячу сообщений, память показала себя хорошо, но пресет тогда был в дерьме.
Post #343
1.01K
- ❤🔥 14