Здравствуйте, bazis1, Вы писали:
bnk>>практический вопрос — как ты строишь промпт (запросы) к моделям, т.е. как именно ты добавляешь "контекст"?
bnk>>Просто дополняешь текст и посылаешь его снова, или как-то по-другому? Размечаешь ли как-то релевантные фрагменты в этом случае?
bnk>>Как ты "разбираешь" ответ, т.е. понимаешь в какие файлы нужно внести какие правки?
B>Первый вариант. Основная идея в том, чтобы с точки зрения модели это выглядело, как 2 кожаных программиста, обсуждающих код. И задача моего движка — разбивать рабочие задачи на подобые обсуждния, давать моделям их дополнить, и встраивать обратно.
B>Технически это реализовано через высокоуровневый merge. Скажем, ты отправил модели класс с кучей всего, и попроил разбить метод X. Модель в ответ выдала отредактированный X, добавленный X_Auxiliary() и новый конструктор. Движок это дело распарсит, заменит оригинальный метод, и добавит рядом вспомогательный + конструктор. Это не работает с переименовыванием, не в большинстве случаев просто в разы быстрее классического пофайлового подхода. Вещи типа прокинуть новую переменную в дерево конструкторов делаются за секунду-две с минимальным промптом.
B>Кстати, если хочешь поиграться, шаблоны промптов лежат в папке PromptTemplates, а сами промпты и ответы модели со счетчиком токенов есть в AI->Windows->Diagnostics.
Да, большое спасибо, очень полезно!
bnk>>В качестве ответа ты получаешь новое содержимое фрагментов, или список операций по редактированию (action list)?
B>Пока фрагменты, но руки чешутся сделать прогрессивное редактирование. Когда модель сначала даст высокоуровневый список типа "добавлю переменную X в класс Y", потом отдельные фрагменты кода, потом отредактированные куски. Теоретически, последний этам можно распараллелить, или дать на откуп более простой модели, чем еще выше поднять скорость. Но текущий вариант уже неплохо работает.
Понял. Я переключился в моем случае на
structured outputs (но это не про редактор, немного другой случай, намного проще)
Проблема с текстом была в том что несмотря на инструкции, модель им (иногда) не следовала. structured output фиксирует схему генерируемого моделью json, и гораздо практичнее для использования кодом, ничего не нужно парсить.
Как-то это все в общем кустарно выглядит у меня все равно, думаю посмотреть на
semantic kernel (пока так и не собрался правда), там можно контекст прямо функциями фигачить, "тулами"