Мой локальный ай-Яй помощник! Глава 2. Лучик надежды ☀️
После выхода первой статьи у меня начали появляться мысли...
"А может эта идея вообще нереальная?"
Честно говоря, в какой-то момент казалось, что без сервера с кучей видеокарт подобные проекты просто не взлетят.
Но вместо того чтобы сразу искать новое железо, я решил разобраться, как подобные AI-агенты вообще строят другие люди. Начал изучать реальные проекты, разбирался с архитектурой LangGraph, Qwen-Agent, подходами к построению агентных систем. Но оказалось что даже сам Qwen иногда предлагал идеи, которые потом подтверждались документацией или примерами других разработчиков. В общем нахватавшись немного теории я решил пойти другим путем ))
Изначально мне казалось, что агент должен помнить абсолютно всё.
- Весь диалог.
- Все действия.
- Всю историю.
- Максимум контекста.
Но чем больше информации я давал модели, тем хуже она начинала работать. Теряла контекст, путалась, начинала забывать, что произошло буквально несколько сообщений назад жесть кароче...(( И тут я с помощью другой ИИ ))) пришел к варианту, не увеличивать контекст, а максимально его сокращать.
Разбивать одну большую задачу на множество маленьких.... Передавать модели только ту информацию, которая действительно нужна именно сейчас. И пришлось перелопатить весь проект))) Теперь агент не пытается помнить абсолютно всё, у него появилась краткосрочная память для текущей задачи и долговременная память для уже проверенных сценариев))) Если агент уже знает, как выполнить какое-то действие, ему не нужно каждый раз заново "думать".
Он просто использует уже проверенный сценарий. Даже информация об интерфейсе приложения больше не передаётся целиком. Перед тем как попасть в LLM, она сначала превращается в компактную карту экрана. Модель получает только ту информацию, которая действительно нужна для принятия решения. Вот только тогда я действительно начал видеть что я иду где то рядом )) Стало понятно, что очень многое зависит именно от архитектуры.
Также пришлось немного изменить логику работы моего агента.. изначально я хотел сделать универсального помощника. Без привязки к какому-либо приложению. Но это оказалось довольно большой задачей и я наверное вернусь к ней совсем нескоро и то если будет в этом необходимость...Я решил обучать агента под конкретный проект, с возможностью переключать его между проектами.
Именно этим сейчас и занимаюсь, каждое приложение получает собственную память, собственные проверенные сценарии, собственный набор знаний...
При этом сама языковая модель остаётся одной и той же, меняется только её рабочее окружение.Я думаю скоро выложу небольшой обзор возможностей моего локального ай-Яй агента)
Впереди ещё очень много экспериментов...
Продолжение следует... ))