Mais um assistente inteligente (YAIA)
Uma interface multimodal chat com acesso a diversas ferramentas.
Descrição
YAIA é uma interface multimodal chat sofisticada, alimentada por modelos avançados de IA e equipada com uma variedade de ferramentas. Pode:
- Pesquise e navegue na web em tempo real
- Consulte a Wikipedia para obter informações
- Realize pesquisas de notícias e mapas
- Execute com segurança código Python que pode produzir texto e imagens, como gráficos e diagramas
- Componha artigos longos misturando texto e imagens
- Gere, pesquise e compare imagens
- Analise documentos e imagens
- Pesquise e baixe documentos arXiv
- Gere e salve conversas como arquivos de texto e áudio
- Salve os arquivos no diretório de saída
- Acompanhe melhorias pessoais
- Gerenciar listas de verificação para rastreamento de tarefas
Arquitetura
Estes são os componentes principais:
- Gradio 5 para a interface web
- Amazon Bedrock para lidar com conversas e uso de ferramentas
- Soneto Antrópico Claude 3.5 como modelo principal
- Modelos de texto e incorporações multimodais do Amazon Titan
- Gerador de imagem Amazon Titan
- OpenSearch para índices de texto e multimodais
- Amazon Polly para vozes
- AWS Lambda para o interpretador de código
Exemplos
Aqui estão alguns exemplos de como usar várias ferramentas:
Pesquisa na Web : "Pesquise na web os avanços recentes na computação quântica."
Wikipedia : "Encontre artigos da Wikipedia sobre a história da inteligência artificial."
Script Python : "Crie um script Python para gerar um gráfico de barras das emissões globais de CO2 por país."
Sketchbook : "Comece um novo sketchbook e escreva uma introdução sobre como calcular Pi com métodos numéricos."
Geração de imagem : "Gere uma imagem de uma cidade futurista com carros voadores e arranha-céus altos."
Pesquisa de imagens : "Pesquise no catálogo de imagens fotos de espécies ameaçadas de extinção."
Integração arXiv : "Pesquise artigos de pesquisa recentes sobre aprendizagem profunda no processamento de linguagem natural."
Geração de Conversa : "Crie uma conversa entre três especialistas discutindo como configurar o RAG multimodal."
Gerenciamento de arquivos : "Salve um resumo de nossa discussão sobre mudanças climáticas em um arquivo chamado 'climate_change_summary.txt'."
Aperfeiçoamento Pessoal : “Aqui vai uma sugestão para melhorar: para melhorar as respostas, procure fontes oficiais.”
Checklist : "Inicie uma nova checklist para seguir uma lista de tarefas uma por uma."
Principais recursos e ferramentas
Interação na Web :
- Pesquisa de texto DuckDuckGo: realiza pesquisas na web
- Pesquisa de notícias DuckDuckGo: pesquisa artigos de notícias recentes
- DuckDuckGo Maps Search: pesquisas por locais e empresas
- Pesquisa de imagens DuckDuckGo: pesquisa imagens disponíveis publicamente
- Navegador da Web: navega em sites e recupera seu conteúdo
Ferramentas da Wikipédia :
- Pesquisa na Wikipedia: encontra páginas relevantes da Wikipedia
- Pesquisa de geodados da Wikipedia: localiza artigos da Wikipedia por localização geográfica
- Wikipedia Page Retriever: busca o conteúdo completo da página da Wikipedia
Scripts Python :
- Executa scripts Python para cálculos, testes e geração de resultados, incluindo texto e imagens
- Módulos Python podem ser adicionados ao interpretador Python
- O código Python é executado em um ambiente seguro fornecido pelo AWS Lambda
Gerenciamento de conteúdo :
- Arquivo pessoal: armazena e recupera conteúdo de texto, Markdown ou HTML, usando um banco de dados semântico
- Sketchbook: gerencia um sketchbook de várias páginas para escrever e revisar conteúdo extenso. Suporta vários formatos de saída:
- Markdown (.md): para fácil leitura e edição
- Documento Word (.docx): para edição de documentos
Tratamento de imagens :
- Geração de imagens: cria imagens com base em prompts de texto
- Pesquisa no catálogo de imagens: pesquisa imagens por descrição
- Pesquisa de similaridade de imagens: encontra imagens semelhantes com base em uma imagem de referência
- Imagens aleatórias: recupera imagens aleatórias do catálogo
- Obter imagem por ID: recupera uma imagem específica do catálogo usando seu ID
- Contagem do Catálogo de Imagens: Retorna o número total de imagens no catálogo
- Baixar imagem: adiciona imagens de URLs ao catálogo
Integração arXiv :
- Pesquise e baixe documentos arXiv
- Armazene o conteúdo em papel no arquivo para fácil recuperação
Geração de conversa :
- Transforme o conteúdo em uma conversa entre duas a quatro pessoas
- Gere arquivos de áudio para a conversa usando conversão de texto em fala
Gerenciamento de arquivos :
- Salvar arquivo: permite salvar o conteúdo do texto em um arquivo com um nome especificado no diretório de saída
Melhoria Pessoal :
- Acompanhe sugestões e erros para melhorias futuras
Lista de verificação :
- Gerencie listas de tarefas com a capacidade de adicionar itens, marcá-los como concluídos e revisar o progresso
Para obter uma lista abrangente de ferramentas disponíveis e seu uso, consulte ./Config/tools.json
.
Requisitos
- Uma ferramenta de contêiner: Docker ou Finch (para instalar o Finch, siga as instruções aqui)
- Python 3.12 ou mais recente
- Conta AWS com permissões apropriadas para acessar Amazon Bedrock, AWS Lambda e Amazon ECR
Instalação
Clone o repositório:
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
Crie e ative um ambiente virtual (opcional, mas recomendado):
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Instale os pacotes necessários:
pip install -r requirements.txt
Configure a função AWS Lambda para execução de código:
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Para usar o Selenium para navegação na web, instale o ChromeDriver. Usando Homebrew:
brew install --cask chromedriver
Para gerar áudio, instale ffmpeg
. Usando Homebrew:
Configurando o OpenSearch
Você pode usar uma instância local do OpenSearch ou conectar-se a um servidor remoto. Para configuração local:
Navegue até o diretório OpenSearch:
Defina a senha de administrador (configuração inicial), esta etapa criará o arquivo .env
e os arquivos opensearch_env.sh
:
Inicie o OpenSearch localmente (ele precisa de acesso ao arquivo .env
):
Certifique-se de que o OpenSearch (2 nós + painel) seja iniciado corretamente, verificando a saída
Para atualizar o OpenSearch, baixe as novas imagens de contêiner usando este script:
Para configuração de servidor remoto, atualize o código de criação do cliente no script principal.
Para alterar a senha, você precisa excluir o contêiner usando finch
ou docker
e definir uma nova senha.
Uso
Os modelos padrão para texto, imagens e embeddings estão no arquivo Config/config.ini
. Os modelos a serem usados são especificados usando IDs de modelo do Amazon Bedrock ou IDs de perfil de inferência entre regiões. Você precisa de permissões e acesso a esses modelos, conforme descrito em Acessar modelos básicos.
Esta seção pressupõe que o OpenSearch esteja sendo executado localmente em outra janela do terminal, conforme descrito anteriormente.
Carregue a senha de administrador do OpenSearch no ambiente:
source OpenSearch/opensearch_env.sh
Execute o aplicativo:
python multimodal_chat.py
Para redefinir os índices de texto e multimodais (nota: isso não exclui imagens em ./Images/
):
python multimodal_chat.py --reset-index
Abra um navegador da web e navegue até http://127.0.0.1:7860/ para começar a conversar.
Vídeos de demonstração
Aqui estão alguns exemplos do que você pode fazer neste aplicativo.
Navegue na internet e use o arquivo semântico
Nesta demonstração:
- Navegue por sites usando Selenium e ferramentas específicas para DuckDuckGo (pesquisa, notícias, geopesquisa) e Wikipedia
- Use a ferramenta de arquivo de texto semântico para arquivar documentos e recuperá-los por palavras-chave
Importar e pesquisar imagens
Nesta demonstração:
- Usando um índice multimodal e o sistema de arquivos local para gerenciar um catálogo de imagens
- Armazene imagens com uma descrição gerada
- Recuperar imagens por descrição de texto (pesquisa semântica)
- Recuperar imagens por semelhança com outra imagem
- Recuperar imagens aleatórias
Gerar e pesquisar imagens
Nesta demonstração:
- Gere imagens a partir de uma descrição textual
- O prompt de texto para imagem é gerado a partir de instruções de bate-papo
- Esta abordagem permite usar a conversa geral para melhorar o prompt
Intérprete de código Python
Nesta demonstração:
- Executando código gerado por IA para resolver problemas
- Executando para segurança em uma função AWS Lambda com permissões básicas
- Implantado por meio de uma imagem de contêiner para adicionar facilmente módulos Python
- Apenas Python, mas facilmente extensível
Escrevendo em um "caderno de desenho"
Nesta demonstração:
- Uma ferramenta para ajudar a escrever textos longos, como artigos e postagens de blog)
- Fornecendo acesso sequencial ao texto dividido em páginas
- Para mitigar a "assimetria" entre os tamanhos de entrada e saída de um modelo
Sketchbook com revisão de código Python
Nesta demonstração:
- Melhores resultados usam mais de uma ferramenta juntas
- Comece com um caderno de desenho para escrever um longo artigo
- O artigo contém trechos de código
- Uma revisão executa e testa todos os trechos de código e atualiza cada página, corrigindo o código (se necessário) e adicionando resultados reais
Solução de problemas
- Se você encontrar problemas com o OpenSearch, verifique as configurações de conexão e certifique-se de que o serviço esteja em execução
- Para erros de função do AWS Lambda, verifique suas credenciais e permissões da AWS
- Se o processamento da imagem falhar, certifique-se de ter as bibliotecas necessárias instaladas e verifique as permissões dos arquivos
Contribuindo
Contribuições para YAIA são bem-vindas! Consulte as diretrizes de contribuição para obter mais informações sobre como enviar solicitações pull, relatar problemas ou solicitar recursos.
Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter detalhes.
Dicas de uso
- Combine várias ferramentas para tarefas complexas. Por exemplo, use a pesquisa na web para encontrar informações, depois use o caderno de desenho para escrever um resumo e, por fim, gere uma conversa sobre o assunto.
- Ao trabalhar com imagens, você pode gerar novas imagens, pesquisar as existentes ou baixar imagens da web para adicionar ao seu catálogo.
- Use a integração arXiv para se manter atualizado com as pesquisas mais recentes em sua área de interesse.
- A ferramenta de geração de conversas é ótima para criar conteúdo envolvente ou preparar apresentações.
- Verifique e atualize regularmente suas melhorias pessoais para acompanhar seu progresso e áreas de crescimento.
Para obter informações mais detalhadas sobre componentes específicos ou uso avançado, consulte a documentação embutida no código-fonte.