AI Experience Exchange
Open in Telegram
Обмен опытом по AI, нейронным сетям, ChatGPT, проверка идей, примеры
Show more951
Subscribers
+224 hours
+257 days
+7130 days
Posts Archive
Вот новый рисунок про размерности и предположение: когда мы в message добавим history, то у нас станет меньше места на чанки из Базы Знаний и на сам вопрос + промт?
📣 Chat History
Я посмотрел презу, где вы много внимания уделяете памяти.
Мне захотелось разделить на несколько задач:
Создание памяти
1. Накопление данных текущего диалога: Процесс выполняется одновременно с текущим диалогом пользователя.
Пользователь ведет диалог с Агентом.
Пользователь задает вопрос.
Агент возвращает ответ.
Система сохраняет вопрос пользователя, полученный ответ, метку времени, ссылку на пользователя, ссылку на агента.
2. Анализ диалогов. Процесс выполняется эпизодически с заданной регулярностью (JOB).
Система для каждого пользователя в разрезе агентов производит анализ накопленных данных (см.п.1) и объединяет их в чаты.
Чат: это набор данных из п.1, объединённых по общему признаку. Таким признаком является пауза между соседними диалогами, например, если отсортированные по метке времени пары вопрос - ответ, имеют временной интервал больше 30 минут, то считать, что предыдущий диалог окочённым.
Результат. Несколько записей из п.1 получают ссылку на одну запись чата - заголовок.
3. Назначение тем чатов. Процесс выполняется эпизодически с заданной регулярностью (JOB).
Система анализирует сформированные в п.2 чаты и извлекает смысл чата из дочерних записей, назначая каждому чату тему.
Результат. Сформированная в п.2 запись - заголовок чата, получает ссылку на тему.
4. Суммаризация чатов. Процесс выполняется эпизодически с заданной регулярностью (JOB).
Система в разрезе тем (см.п3) по каждому чату пользователя формирует краткое резюме (саммари) чата. Сформированная в п.2 запись - заголовок чата, получает краткое саммори.
Примечание. Краткое саммори будет использовано в качестве метаданных сохраненных диалогов.
Использование памяти
1. Извлечение памяти в текущем диалоге.
Пользователь общается с Aгентом задавая ему вопрос.
Система по тексту вопроса ищет релевантные саммори чатов (см.п.4 в Создание памяти). Для найденных чатов извлекает данные сохраненных диалогов (см п.1 в Создание памяти) и передает эти данные Агенту.
Агент использует полученные данные для формирования ответа в текущем диалоге.
Про автоматизацию тестирования Базы Знаний нейро - ассистента
Все-таки это возможно, вот результаты эксперимента:
Видео запись (17 минут): https://youtu.be/HJEWzyWe0To
Нотебук: https://colab.research.google.com/drive/1vCkDHZ7bjG_EcKbShnwUUPBbgrR4MO8g?usp=sharing
Про распознание аудио с помощью OpenAi Whisper
Вот в соседнем чате был пример для Wisper в colab. Я его немного для себя переделал:
• Файл для Whisper должен находится на GoogleDrive в папке Whisper
• Файл модели сохраняется на GoogleDrive в паку Whisper/Models - проверьте наличие папки Whisper/Models . Модель будет скачиваться только первый раз.
Пользуйтесь, кому интересно: https://colab.research.google.com/drive/1mYacMUEIlCR1HMvAWZofwE7v-VC-OH_z?usp=sharing
Предварительные действия:
В Системе созданы описания и реализация функций для LLM.
Создана База Знаний. База знаний загружена и векторизована.
Основной сценарий:
1. Пользователь вводит свой вопрос
2. Система собирает заданное количество релевантные вопросу пользователя чанки из Базы Знаний.
3. Система делает запрос в LLM, в запросе передается контент из п.2 и описание функций.
4. LLM формирует ответ на запрос.
5. Система анализирует полученный ответ:
5.1 Если ответ содержит finish_reason == "function_call", то Система извлекает из ответа параметры сработавшей функции и ее имя, производит вызов функции и полученный результат повторно передает в LLM
5.1.1. LLM формирует новый ответ с учетом результатов вызванной функции.
5.1.2. Система извлекает из ответа контент и возвращает его Пользователю.
5.2 Если ответ не содержит finish_reason == "function_call", то Система извлекает из ответа контент и возвращает его Пользователя.
📣 Проблема оборачивания ответа.
Нужно ли в начале и конце ответа нейро-ассистента добавлять предупреждающий текст, который информирует, что с человеком общается бот? Например, такой текст «ответ сформирован автоматически, уточняйте полученную инфу у администратора». Мне кажется полезным такая обертка ответа, т.к. это снижает риск последствий, когда модель ответила неадекватно и пользователь пытается настаивать на получение привилегий, на основании полученного ответа.
📣Проблематика содержания промтов:
Изначальная посылка была скрыть от пользователя, что ChatGPT использует какой-то документ. Эта посылка на сработала с Юридической базой, когда наоборот, пользователь хочет знать на основании каких документов сформирован ответ, т.е. нужна отсылка к названию используемых источников, их статей, разделов и т.д.
В промте нужно описывать тематики нейро-ассистента, так, чтобы отсекать левые вопросы, типа «когда была создана вселенная». На такие вопросы система должна отвечать, что это офтоп и предлагать переформулировать вопрос или задать вопрос по теме.
Существует угроза prompt injection, когда злонамеренный пользователь пытается отменить своим вопросом системный промт и заставить систему действовать по-своему.
В-третьих, есть юридическая База Знаний, структура которой зависит от исходных документов: кодексов, законов, приказов и т.д. Часто информация повторяется, разделы документов изменяются в связи с выходом дополнений и т.д.
Во-вторых, для сетей или групп заведений одного направления, например, ресторанов быстрого питания, подход будет иным. Здесь каждое заведение хоть и имеет схожий набор товаров, но отличается названиями, адресами и ценами, поэтому информацию нужно структурировать иначе.
Что касается Базы Знаний, то здесь можно выделить несколько подходов. Во-первых, для малого бизнеса, предоставляющего услуги или товары, удобнее всего структурировать информацию по сходству: цены, адреса, контакты, информация о компании.
С появлением первых прототипов нейро-ассистентов стало очевидно, что основа их эффективности заключается не столько в программной реализации, сколько в качественной Базе Знаний и грамотно составленных системных промтах. Похоже, это связано с тем, что для привлечения потенциального заказчика важно предоставить ему максимально понятный и доступный пример.
Добрый день! Возник вопрос про автоматизацию тестирования бота - ассистента. Думаю примерно в таком направлении.
1. Сначала при ручном тестировании собрать накопить инфу вида <вопрос, ответ, true/false>.
2. Далее при внесении изменений в Базу Знаний, промты или код бота, проводить автоматическое тестирования сравнивая «старый» и «новый» ответы.
Вопрос: как сравнивать тексты ответов? Вроде похоже на similarity_search из langchain.
Или перевести в embedding «старый» и «новый» ответы и вычислить какой-либо distance? какой? косинус, евклидово расстояние?
Вы делали что-либо подобное? Какие идеи?
А кто-нибудь уже разобрался как использовать функции с ChatGPT?
Я вот попробовал, вот результат:
• видео: https://youtu.be/2gdeJIbzi80
• нотебук: https://colab.research.google.com/drive/1KjimdodrybYwQjn6I44gdJwRr7WtbSBk?usp=sharing
Если есть интересные материалы на эту тему, прошу поделиться!
Всем привет! Меня только сегодня добавили…но есть домашняя заготовка:
после просмотра мини уроков от УИИ про дообучение ChatGPT и про TG ботов, мне захотелось соединить код из этих уроков так, чтобы дообученная Chat GPT отвечала в TG бот
Вот моя запись: https://youtu.be/8rKedN9tiuo
Нотебук: https://colab.research.google.com/drive/1LrWjPiEkcjqFTH1baWICCwz_7vYexQ_5?usp=sharing
