Otro asistente inteligente más (YAIA)
Una interfaz multimodal chat con acceso a muchas herramientas.
Descripción
YAIA es una sofisticada interfaz multimodal chat impulsada por modelos avanzados de IA y equipada con una variedad de herramientas. Puede:
- Busque y navegue por la web en tiempo real
- Consulta Wikipedia para obtener información.
- Realizar búsquedas de noticias y mapas.
- Ejecute de forma segura código Python que puede producir texto e imágenes, como cuadros y diagramas.
- Redactar artículos extensos mezclando texto e imágenes.
- Generar, buscar y comparar imágenes
- Analizar documentos e imágenes.
- Busque y descargue artículos de arXiv
- Genere y guarde conversaciones como archivos de texto y audio
- Guardar archivos en el directorio de salida
- Seguimiento de mejoras personales
- Administrar listas de verificación para el seguimiento de tareas
Arquitectura
Estos son los componentes principales:
- Gradio 5 para la interfaz web
- Amazon Bedrock para manejar la conversación y el uso de herramientas
- Anthropic Claude 3.5 Sonnet como modelo principal
- Modelos de incrustaciones multimodales y de texto de Amazon Titan
- Generador de imágenes de Amazon Titan
- OpenSearch para índices de texto y multimodales
- Amazon Polly para voces
- AWS Lambda para el intérprete de código
Ejemplos
A continuación se muestran ejemplos de cómo utilizar varias herramientas:
Búsqueda web : "Busque en la web avances recientes en computación cuántica".
Wikipedia : "Encuentre artículos de Wikipedia sobre la historia de la inteligencia artificial".
Secuencias de comandos de Python : "Cree una secuencia de comandos de Python para generar un gráfico de barras de las emisiones globales de CO2 por país".
Cuaderno de bocetos : "Comienza un nuevo cuaderno de bocetos y escribe una introducción sobre cómo calcular Pi con métodos numéricos".
Generación de imágenes : "Genera una imagen de una ciudad futurista con autos voladores y altos rascacielos".
Búsqueda de imágenes : "Busca en el catálogo de imágenes imágenes de especies en peligro de extinción".
Integración arXiv : "Busque artículos de investigación recientes sobre aprendizaje profundo en el procesamiento del lenguaje natural".
Generación de conversación : "Cree una conversación entre tres expertos que discutan cómo configurar RAG multimodal".
Gestión de archivos : "Guarde un resumen de nuestra discusión sobre el cambio climático en un archivo llamado 'climate_change_summary.txt'".
Mejora personal : "Aquí tienes una sugerencia para mejorar: para mejorar las respuestas, busca fuentes oficiales".
Lista de verificación : "Iniciar una nueva lista de verificación para seguir una lista de tareas una por una".
Funciones y herramientas clave
Interacción web :
- DuckDuckGo Text Search: realiza búsquedas web
- DuckDuckGo News Search: busca artículos de noticias recientes
- DuckDuckGo Maps Search: busca ubicaciones y empresas
- Búsqueda de imágenes DuckDuckGo: busca imágenes disponibles públicamente
- Navegador web: explora sitios web y recupera su contenido
Herramientas de Wikipedia :
- Búsqueda de Wikipedia: encuentra páginas relevantes de Wikipedia
- Búsqueda de geodatos de Wikipedia: localiza artículos de Wikipedia por ubicación geográfica
- Recuperador de páginas de Wikipedia: recupera el contenido completo de la página de Wikipedia
Secuencias de comandos de Python :
- Ejecuta scripts de Python para cálculos, pruebas y generación de resultados, incluidos texto e imágenes.
- Los módulos de Python se pueden agregar al intérprete de Python
- El código Python se ejecuta en un entorno seguro proporcionado por AWS Lambda
Gestión de contenidos :
- Archivo personal: almacena y recupera contenido de texto, Markdown o HTML, utilizando una base de datos semántica
- Cuaderno de bocetos: administra un cuaderno de bocetos de varias páginas para escribir y revisar contenido extenso. Admite múltiples formatos de salida:
- Markdown (.md): para facilitar la lectura y edición
- Documento de Word (.docx): para edición de documentos
Manejo de imágenes :
- Generación de imágenes: crea imágenes basadas en indicaciones de texto
- Búsqueda en el catálogo de imágenes: busca imágenes por descripción
- Búsqueda de similitud de imágenes: busca imágenes similares basadas en una imagen de referencia
- Imágenes aleatorias: recupera imágenes aleatorias del catálogo.
- Obtener imagen por ID: recupera una imagen específica del catálogo usando su ID.
- Recuento del catálogo de imágenes: devuelve el número total de imágenes del catálogo.
- Descargar imagen: agrega imágenes de URL al catálogo
Integración arXiv :
- Busque y descargue artículos de arXiv
- Almacene el contenido en papel en el archivo para recuperarlo fácilmente
Generación de conversación :
- Transforme el contenido en una conversación entre dos y cuatro personas
- Genere archivos de audio para la conversación usando texto a voz
Gestión de archivos :
- Guardar archivo: permite guardar contenido de texto en un archivo con un nombre específico en el directorio de salida.
Mejora personal :
- Realice un seguimiento de sugerencias y errores para futuras mejoras.
Lista de verificación :
- Administre listas de tareas con la capacidad de agregar elementos, marcarlas como completadas y revisar el progreso
Para obtener una lista completa de las herramientas disponibles y su uso, consulte ./Config/tools.json
.
Requisitos
- Una herramienta contenedora: Docker o Finch (para instalar Finch, siga las instrucciones aquí)
- Python 3.12 o más reciente
- Cuenta de AWS con los permisos adecuados para acceder a Amazon Bedrock, AWS Lambda y Amazon ECR
Instalación
Clonar el repositorio:
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
Cree y active un entorno virtual (opcional pero recomendado):
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Instale los paquetes necesarios:
pip install -r requirements.txt
Configure la función AWS Lambda para la ejecución de código:
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Para utilizar Selenium para la navegación web, instale ChromeDriver. Usando cerveza casera:
brew install --cask chromedriver
Para generar audio, instale ffmpeg
. Usando cerveza casera:
Configurar OpenSearch
Puede utilizar una instancia local de OpenSearch o conectarse a un servidor remoto. Para configuración local:
Navegue al directorio OpenSearch:
Establezca la contraseña de administrador (configuración por primera vez), este paso creará el archivo .env
y los archivos opensearch_env.sh
:
Inicie OpenSearch localmente (necesita acceso al archivo .env
):
Asegúrese de que OpenSearch (2 nodos + panel) se inicie correctamente verificando el resultado
Para actualizar OpenSearch, descargue las nuevas imágenes del contenedor usando este script:
Para la configuración del servidor remoto, actualice el código de creación del cliente en el script principal.
Para cambiar la contraseña, debe eliminar el contenedor utilizando finch
o docker
y luego establecer una nueva contraseña.
Uso
Los modelos predeterminados para texto, imágenes e incrustaciones se encuentran en el archivo Config/config.ini
. Los modelos que se utilizarán se especifican mediante los ID de modelo de Amazon Bedrock o los ID de perfil de inferencia entre regiones. Necesita permisos y acceso a estos modelos como se describe en Acceder a los modelos básicos.
Esta sección asume que OpenSearch se está ejecutando localmente en otra ventana de terminal como se describió anteriormente.
Cargue la contraseña de administrador de OpenSearch en el entorno:
source OpenSearch/opensearch_env.sh
Ejecute la aplicación:
python multimodal_chat.py
Para restablecer el texto y los índices multimodales (nota: esto no elimina las imágenes en ./Images/
):
python multimodal_chat.py --reset-index
Abra un navegador web y navegue hasta http://127.0.0.1:7860/ para comenzar a chatear.
Vídeos de demostración
A continuación se muestran algunos ejemplos de lo que puede hacer con esta aplicación.
Navega por Internet y utiliza el archivo semántico.
En esta demostración:
- Navegar por sitios web utilizando Selenium y herramientas específicas para DuckDuckGo (búsqueda, noticias, geobúsqueda) y Wikipedia.
- Utilice la herramienta de archivo de texto semántico para archivar documentos y recuperarlos por palabras clave
Importar y buscar imágenes
En esta demostración:
- Usar un índice multimodal y el sistema de archivos local para administrar un catálogo de imágenes
- Almacenar imágenes con una descripción generada.
- Recuperar imágenes por descripción de texto (búsqueda semántica)
- Recuperar imágenes por similitud con otra imagen
- Recuperar imágenes aleatorias
Generar y buscar imágenes
En esta demostración:
- Generar imágenes a partir de una descripción textual
- El mensaje de texto a imagen se genera a partir de instrucciones de chat.
- Este enfoque permite utilizar la conversación general para mejorar el mensaje.
Intérprete de código Python
En esta demostración:
- Ejecutar código generado por IA para resolver problemas
- Ejecución por seguridad en una función AWS Lambda con permisos básicos
- Implementado a través de una imagen de contenedor para agregar fácilmente módulos de Python
- Solo Python pero fácilmente extensible
Escribir en un "cuaderno de bocetos"
En esta demostración:
- Una herramienta para ayudar a escribir textos largos, como artículos y publicaciones de blogs).
- Proporcionar acceso secuencial al texto dividido en páginas.
- Para mitigar la "asimetría" entre los tamaños de entrada y salida de un modelo.
Cuaderno de bocetos con revisión del código Python
En esta demostración:
- Los mejores resultados utilizan más de una herramienta a la vez
- Comience con un cuaderno de bocetos para escribir un artículo extenso.
- El artículo contiene fragmentos de código.
- Se ejecuta una revisión y prueba todos los fragmentos de código y actualiza cada página, corrige el código (si es necesario) y agrega resultados reales.
Solución de problemas
- Si tiene problemas con OpenSearch, verifique la configuración de conexión y asegúrese de que el servicio se esté ejecutando
- Para errores de la función AWS Lambda, verifique sus credenciales y permisos de AWS
- Si falla el procesamiento de imágenes, asegúrese de tener instaladas las bibliotecas necesarias y verifique los permisos de los archivos.
Contribuyendo
¡Las contribuciones a YAIA son bienvenidas! Consulte las pautas de contribución para obtener más información sobre cómo enviar solicitudes de extracción, informar problemas o solicitar funciones.
Licencia
Este proyecto está bajo la licencia MIT. Consulte el archivo de LICENCIA para obtener más detalles.
Consejos de uso
- Combine múltiples herramientas para tareas complejas. Por ejemplo, utilice la búsqueda web para encontrar información, luego utilice el cuaderno de bocetos para escribir un resumen y finalmente genere una conversación sobre el tema.
- Al trabajar con imágenes, puede generar nuevas imágenes, buscar imágenes existentes o descargar imágenes de la web para agregarlas a su catálogo.
- Utilice la integración de arXiv para mantenerse actualizado con las últimas investigaciones en su campo de interés.
- La herramienta de generación de conversaciones es excelente para crear contenido atractivo o prepararse para presentaciones.
- Verifique y actualice periódicamente sus mejoras personales para realizar un seguimiento de su progreso y áreas de crecimiento.
Para obtener información más detallada sobre componentes específicos o uso avanzado, consulte la documentación en línea en el código fuente.