Pull to refresh

Comments 18

«Агент – это программа, которая способна взаимодействовать с внешней средой с помощью инструментов и корректировать своё поведение в зависимости от результатов взаимодействия (рефлексия).

Это память. Рефлексия - учёт себя как части среды. И учет учета. И учет учета учета. Возможно, условие возникновения сознания.

У вас случилась рекурсия в рефлексии.

У автора написано то же, что у вас, понятным языком, и это не память.

Там далее Без рефлексии агент превращается в цепочку вызовов модели». - вот это точно про память.

Агент может обладать памятью без рефлексии, при проходе лабиринта не надо рассматривать своё воздействие на лабиринт, а вот для торгового бота это может быть не так.

У вас случилась рекурсия в рефлексии.

И это намеренно, в контексте темы ИИ агентов рефлексия обладает потенциалом роста сложности через рекурсию. К примеру, в состязательных средах с неполной информацией, когда надо уходить от адаптации соперника к твоей тактике.

Правильно я вас понял, что рефлексия с ограничением на глубину рекурсии не может называться рефлексией?

Почему, нет, может. Бесконечной рекурсии потребует только идеальная рефлексия в достаточно сложном мире.

Это как раз то, что я искал! Больше спасибо. Как раз сейчас пытаюсь родить решение, которое будет использовать силу LLM поверх базы табличных документов. ChatGPT к сожалению не справляется с этим.

Спасибо! Пользуйтесь, с помощью langchain / gigachain очень много чего ещё интересного можно реализовать.

UFO just landed and posted this here

Такое сравнение будет не корректным. Если документ целиком можно положить в промпт, то надо его класть. RAG нужен в тех случаях, когда документ в промпт не получается.

Вероятно, с появлением сетей с 1М контекстом эта технология станет не столь актуальной.

UFO just landed and posted this here

Можно ли чуть подробнее что где обрабатывается и можно ли настроить?

Установили gigachain, порезали документ, все красиво, все локально. И вдруг credentials подавай. А я ведь не книжку из Интернета скормить хотел.

Можно ли полностью локально все обработать (на CPU, GPU)?

В моих примерах используется GigaChat - эта модель доступна исключительно в облаке по API. Если хочется локально работать, то нужно поднять свою модель, например маленькую версию llama или mixtral. Gigachain и Langchain позволяют это сделать, но это уже не так просто, как получить креды к API. Но в целом реально за вечерок всё настроить и поднять.

С этим примером про плащ явно что то не так. Роботы обычно буйно фантазируют а тут без всякой обработки выдал чуть ли не цитату из книги.

Так здесь вроде пример, когда ему скормили книгу. Т.е. в отличие от обычных данных из Интернета, которые хранятся не в виде полной копии без потерь, а в виде весов, здесь у робота был "перед глазами" оригинал.

Т.е. ему было нужно "понять", чем спрашивают и выдать подходящее. Это круто, но не слишком подозрительно.

Константин, спасибо за статью!
Можно вопросы )
1. "При этом первый прототип решения занимал 50 строк кода на python вместе с UI."
Как в несколько строк UI поднять? ) Он тоже в SDK есть?
2. Если хотим несколько книг загрузить, предусмотрена ли обработка списком?
Например:
loader = TextLoader(["../мастер_и_маргарита.txt", "../война_и_мир.txt"])
3. Вы упоминаете, что можно сделать ссылки на страницы (а в моем случае, на страницы и книгу из загруженного списка книг). Как это сделать в принципе, я понимаю, если бы сам делал базу эмбендингов. А как это сделать инструментарием SDK?
Заранее благодарен за ответы.

Добрый день!
1. Не, UI был сделан на SDK streamlit. Очень крутая штука для тех, кто не умеет делать UI :) Примерчек можно глянуть тут (задача решается другая, но суть та же самая) - https://github.com/ai-forever/gigachain/blob/master/libs/streamlit_agent/gigachat_streaming.py

2. Посмотрите на DirectoryLoader, как раз для вашего случая!
loader = DirectoryLoader('../', glob="**/*.txt", show_progress=True)
docs = loader.load()

3. В txt номеров страниц обычно уже нет, поэтому TextSplitter'ы не умеют добавлять метаданные. Из коробки это умеют делать только сплиттеры для *.md и html. Обратите внимание на MarkdownHeaderTextSplitter , он умеет добавлять в мету заголовки и подзаголовки. Если сконвертировать нужную книгу в этот формат, то должно быть хорошо. Но я не пробовал.

Константин, спасибо за подробный ответ. Да, streamlit представляем как работает. Интересно )) Исходя из ответов 2 и 3, похоже придется писать свой лоадер, который будет грузить несколько книг в pdf и проставлять в мета название книги и номер страницы при разбиении на документы. В целом понятно, бесплатного сыра нет ))

можно как-то обученную модель сохранить в файл и потом вызывать его для запросов?

Sign up to leave a comment.