Еще один интеллектуальный помощник (YAIA)
multimodal chat с доступом ко многим инструментам.
Описание
YAIA — это сложный multimodal chat , основанный на передовых моделях искусственного интеллекта и оснащенный множеством инструментов. Он может:
- Ищите и просматривайте Интернет в режиме реального времени
- Запросить информацию в Википедии
- Выполняйте поиск новостей и карт
- Безопасное выполнение кода Python, который может создавать текст и изображения, такие как диаграммы и диаграммы.
- Составляйте длинные статьи, сочетая текст и изображения.
- Создание, поиск и сравнение изображений
- Анализ документов и изображений
- Найдите и скачайте документы arXiv
- Создавайте и сохраняйте разговоры в виде текстовых и аудиофайлов.
- Сохраните файлы в выходной каталог
- Отслеживайте личные улучшения
- Управление контрольными списками для отслеживания задач
Архитектура
Это основные компоненты:
- Gradio 5 для веб-интерфейса
- Amazon Bedrock для обработки разговоров и использования инструментов
- Anthropic Claude 3.5 Sonnet в качестве основной модели
- Amazon Titan Text и модели мультимодального встраивания
- Генератор изображений Amazon Titan
- OpenSearch для текстовых и мультимодальных индексов
- Amazon Polly для голосов
- AWS Lambda для интерпретатора кода
Примеры
Вот примеры использования различных инструментов:
Веб-поиск : «Поиск в Интернете последних достижений в области квантовых вычислений».
Википедия : «Найдите статьи в Википедии об истории искусственного интеллекта».
Сценарии Python : «Создайте сценарий Python для создания гистограммы глобальных выбросов CO2 по странам».
Альбом для рисования : «Начните новый альбом для рисования и напишите введение о том, как вычислить число Пи численными методами».
Генерация изображений : «Создайте изображение футуристического города с летающими автомобилями и высокими небоскребами».
Поиск изображений : «Найдите в каталоге изображений изображения исчезающих видов».
Интеграция arXiv : «Поиск последних исследовательских работ по глубокому обучению обработке естественного языка».
Генерация беседы : «Создайте беседу между тремя экспертами, обсуждающими, как настроить мультимодальную RAG».
Управление файлами : «Сохраните сводку нашего обсуждения изменения климата в файле с именем «climate_change_summary.txt».»
Личное улучшение : «Вот предложение по улучшению: чтобы улучшить ответы, найдите официальные источники».
Контрольный список : «Начните новый контрольный список, чтобы выполнять список задач одну за другой».
Ключевые особенности и инструменты
Веб-взаимодействие :
- Текстовый поиск DuckDuckGo: выполняет поиск в Интернете.
- Поиск новостей DuckDuckGo: поиск последних новостных статей.
- Поиск по картам DuckDuckGo: поиск местоположений и компаний.
- Поиск изображений DuckDuckGo: поиск общедоступных изображений.
- Веб-браузер: просматривает веб-сайты и извлекает их содержимое.
Инструменты Википедии :
- Поиск в Википедии: находит соответствующие страницы Википедии.
- Поиск по геоданным в Википедии: находит статьи в Википедии по географическому положению.
- Wikipedia Page Retriever: извлекает полное содержимое страницы Википедии.
Python-скрипты :
- Запускает сценарии Python для вычислений, тестирования и генерации выходных данных, включая текст и изображения.
- Модули Python можно добавлять в интерпретатор Python.
- Код Python выполняется в безопасной среде, предоставляемой AWS Lambda.
Управление контентом :
- Личный архив: хранит и извлекает текст, Markdown или HTML-контент с использованием семантической базы данных.
- Альбом для рисования: управляет многостраничным альбомом для рисования для написания и просмотра подробного контента. Поддерживает несколько форматов вывода:
- Markdown (.md): для удобства чтения и редактирования.
- Документ Word (.docx): для редактирования документов.
Обработка изображений :
- Генерация изображений: создает изображения на основе текстовых подсказок.
- Поиск по каталогу изображений: поиск изображений по описанию.
- Поиск сходства изображений: находит похожие изображения на основе эталонного изображения.
- Случайные изображения: извлекает случайные изображения из каталога.
- Получить изображение по идентификатору: извлекает определенное изображение из каталога по его идентификатору.
- Количество каталогов изображений: возвращает общее количество изображений в каталоге.
- Загрузить изображение: добавляет изображения с URL-адресов в каталог.
Интеграция с arXiv :
- Найдите и скачайте документы arXiv
- Храните содержимое бумаги в архиве для облегчения поиска.
Генерация разговора :
- Превратите контент в разговор между двумя-четырьмя людьми
- Создавайте аудиофайлы для разговора с помощью преобразования текста в речь
Управление файлами :
- Сохранить файл: позволяет сохранить текстовое содержимое в файл с указанным именем в выходном каталоге.
Личное улучшение :
- Отслеживайте предложения и ошибки для будущих улучшений
Контрольный список :
- Управляйте списками задач с возможностью добавлять элементы, отмечать их как выполненные и просматривать прогресс.
Полный список доступных инструментов и их использование см. в ./Config/tools.json
.
Требования
- Инструмент-контейнер: Docker или Finch (чтобы установить Finch, следуйте инструкциям здесь).
- Python 3.12 или новее
- Учетная запись AWS с соответствующими разрешениями для доступа к Amazon Bedrock, AWS Lambda и Amazon ECR.
Установка
Клонируем репозиторий:
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
Создайте и активируйте виртуальную среду (необязательно, но рекомендуется):
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Установите необходимые пакеты:
pip install -r requirements.txt
Настройте функцию AWS Lambda для выполнения кода:
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Чтобы использовать Selenium для просмотра веб-страниц, установите ChromeDriver. Использование доморощенного:
brew install --cask chromedriver
Для вывода звука установите ffmpeg
. Использование доморощенного:
Настройка OpenSearch
Вы можете использовать локальный экземпляр OpenSearch или подключиться к удаленному серверу. Для локальной настройки:
Перейдите в каталог OpenSearch:
Установите пароль администратора (первая настройка). На этом этапе будут созданы файл .env
и файлы opensearch_env.sh
:
Запустите OpenSearch локально (необходим доступ к файлу .env
):
Убедитесь, что OpenSearch (2 узла + панель мониторинга) запускается правильно, проверив выходные данные.
Чтобы обновить OpenSearch, загрузите новые образы контейнеров с помощью этого скрипта:
Для настройки удаленного сервера обновите код создания клиента в основном скрипте.
Чтобы сменить пароль, вам необходимо удалить контейнер с помощью finch
или docker
, а затем установить новый пароль.
Использование
Модели по умолчанию для текста, изображений и внедрений находятся в файле Config/config.ini
. Используемые модели указываются с использованием идентификаторов моделей Amazon Bedrock или идентификаторов профилей межрегионального вывода. Вам потребуются разрешения и доступ к этим моделям, как описано в разделе Доступ к базовым моделям.
В этом разделе предполагается, что OpenSearch работает локально в другом окне терминала, как описано ранее.
Загрузите пароль администратора OpenSearch в среду:
source OpenSearch/opensearch_env.sh
Запустите приложение:
python multimodal_chat.py
Чтобы сбросить текстовые и мультимодальные индексы (примечание: изображения в ./Images/
не удаляются):
python multimodal_chat.py --reset-index
Откройте веб-браузер и перейдите по адресу http://127.0.0.1:7860/, чтобы начать общение.
Демо-видео
Вот несколько примеров того, что можно сделать с помощью этого приложения.
Полистайте Интернет и воспользуйтесь семантическим архивом
В этой демонстрации:
- Просматривайте веб-сайты с помощью Selenium и специальных инструментов для DuckDuckGo (поиск, новости, геопоиск) и Википедии.
- Используйте инструмент архивирования семантического текста для архивирования документов и поиска по ключевым словам.
Импорт и поиск изображений
В этой демонстрации:
- Использование мультимодального индекса и локальной файловой системы для управления каталогом изображений.
- Храните изображения со сгенерированным описанием
- Получение изображений по текстовому описанию (семантический поиск)
- Получить изображения по сходству с другим изображением
- Получить случайные изображения
Создание и поиск изображений
В этой демонстрации:
- Генерация изображений из текстового описания
- Подсказка преобразования текста в изображение генерируется на основе инструкций чата.
- Такой подход позволяет использовать весь разговор для улучшения подсказки.
Интерпретатор кода Python
В этой демонстрации:
- Запуск кода, сгенерированного ИИ, для решения проблем
- Запуск в целях безопасности в функции AWS Lambda с базовыми разрешениями.
- Развертывается через образ контейнера для легкого добавления модулей Python.
- Только Python, но легко расширяемый
Пишем в «альбоме для рисования».
В этой демонстрации:
- Инструмент, помогающий писать длинные формы текста, такие как статьи и сообщения в блогах.)
- Обеспечение последовательного доступа к тексту, разбитому на страницы.
- Чтобы уменьшить «асимметрию» между входными и выходными размерами модели.
Скетчбук с обзором кода Python
В этой демонстрации:
- Лучшие результаты при использовании нескольких инструментов вместе
- Начните с альбома для рисования, чтобы написать длинную статью.
- В статье есть фрагменты кода
- Проверка запускает и тестирует все фрагменты кода и обновляет каждую страницу, исправляя код (при необходимости) и добавляя фактические результаты.
Поиск неисправностей
- Если у вас возникли проблемы с OpenSearch, проверьте настройки подключения и убедитесь, что служба работает.
- При возникновении ошибок функции AWS Lambda проверьте свои учетные данные и разрешения AWS.
- Если обработка изображения не удалась, убедитесь, что у вас установлены необходимые библиотеки, и проверьте права доступа к файлам.
Содействие
Вклад в YAIA приветствуется! Пожалуйста, обратитесь к рекомендациям по участию, чтобы получить дополнительную информацию о том, как отправлять запросы на включение, сообщать о проблемах или запрашивать функции.
Лицензия
Этот проект лицензируется по лицензии MIT. Подробности смотрите в файле ЛИЦЕНЗИИ.
Советы по использованию
- Комбинируйте несколько инструментов для решения сложных задач. Например, используйте поиск в Интернете, чтобы найти информацию, затем используйте альбом для рисования, чтобы написать резюме, и, наконец, заведите разговор на эту тему.
- Работая с изображениями, вы можете создавать новые изображения, искать существующие или загружать изображения из Интернета для добавления в свой каталог.
- Используйте интеграцию arXiv, чтобы быть в курсе последних исследований в интересующей вас области.
- Инструмент создания бесед отлично подходит для создания интересного контента или подготовки к презентациям.
- Регулярно проверяйте и обновляйте свои личные улучшения, чтобы отслеживать свой прогресс и области для роста.
Для получения более подробной информации о конкретных компонентах или расширенном использовании обратитесь к встроенной документации в исходном коде.