Executando verificação de segurança...
3

💸 Poké-Dolar-Instagram: Acompanhe a flutuação do dólar no Instagram com Pokémon e IA Generativa

Botando em prática meus estudos na AWS, Quarkus, GraalVM, IA generativa e arquitetura Serverless, desenvolvi essa automação que publica no Instagram algumas vezes ao dia a flutuação do dólar associada ao Pokémon correspondente sempre que a moeda flutuar. A ideia foi inspirada no bot que já existe para o Twitter/X.

Agora que o Google não mostra mais a cotação do dólar, você pode acompanhar de uma maneira divertida pelo Instagram: https://www.instagram.com/pokedolar.diario/

A publicação inclui:

  • A cotação do dólar informando o valor e se subiu ou caiu desde a última cotação.
  • O Pokémon correspondente ao valor na Pokédex, por exemplo: Dólar a 5,81 é o #581 - Swanna.
  • Uma legenda criada por IA generativa relacionando o Pokémon com a flutuação da moeda.
  • Imagens de fundo personalizadas para cada Pokémon com IA generativa, com regras especiais para otimizar custos.

🛠️ Tecnologias utilizadas

Backend: Quarkus com Java 23 e GraalVM, permitindo execução otimizada na AWS Lambda
Infraestrutura: AWS Lambda, EventBridge, SNS, SSM, S3, DynamoDB
APIs: AwesomeAPI e Wise para cotação do dólar, PokeAPI para informações dos Pokémon e Instagram GraphAPI para publicação na rede social
IA Generativa: AWS Bedrock
- Llama 3.3 70B para geração automática de legendas
- AWS Titan v2 para geração de imagens de fundo (em regras especiais)
Imagem dinâmica: Lambda específica em Python para criação dinâmica da arte do post

🚀 Implantação

O projeto é totalmente serverless e orquestrado na AWS, garantindo automação e eficiência. O fluxo de maneira geral funciona assim:

1. EventBridge aciona a execução da Lambda principal (nativa com Quarkus e GraalVM)
2. Lambda principal obtém a cotação do dólar e determina o Pokémon correspondente, orquestrando todo o fluxo
3. Lambda em Python é invocada para gerar a imagem com as informações
- Caso a públicação seja especial, o modelo de imagem AWS Titan v2 gera uma imagem de fundo personalizada
- Caso contrário, um gradiente aleatório baseado nas cores do Pokémon é usado
4. S3 armazena a imagem gerada
5. AWS Bedrock cria a legenda do post com o modelo OpenSource da META Llama 3.3 70B
6. GraphAPI publica automaticamente no Instagram
7. DynamoDB armazena os posts publicados para contexto futuro das IAs
8. Uma outra Lambda em Python contém o mecanismo de refresh de token com a GraphAPI, garantindo a continuidade da autenticação na API do Instagram.

💡Tem ideias, sugestões ou melhorias? Comenta aqui por favor! Sempre dá pra aprimorar o projeto e principalmente expandir meus conhecimentos.
📢 Siga a página no Instagram e acompanhe a flutuação do dólar de uma maneira diferente:
👉 @pokedolar.diario

Curiosidade: Adicionei imagens de 892 Pokémon na S3. Se o dólar passar de 8,92, a aplicação vai quebrar… mas o Brasil quebra primeiro kkkkk 😂💸

Carregando publicação patrocinada...
1
1

Exatamente, Pedro!

Adicionei algumas regras para ser especial como:

  • Todos os posts iniciam com 5% de chance de gerar uma imagem especial.
  • O Pokémon ser mítico ou lendário: 100% de chance
  • Pokémon ser a linha final evolutiva: aumenta em 50% a chance
  • O Dólar flutuar 10 centavos para cima ou para baixo desde a última cotação: aumenta em 50% a chance
  • Caso o Pokémon já tenha sido postado nos últimos 30 dias com imagem especial, 0% de chance.

Adicionei também um controle para eu poder bypassar essas regras e gerar sempre uma imagem especial. Acredito que irei ativa-lo justamente para responder essa sua segunda pergunta: quanto vai custar a brincadeira. Atualmente, o valor tá em 60 centavos de dólar na AWS, sendo 53 só do Bedrock. Contudo, a maior parte disso foram testes que eu fiz para ajustar os modelos, mas posso te dizer que o que realmente gasta no projeto é a geração de imagem, o resto não gasta praticamente nada, fazendo 4 posts com todo o fluxo diariamente, justamente por que unindo Quarkus com GraalVM e Lambda, tornaram a execução extremamente rápida, e na Lambda só pago por tempo de execução (poucos segundos).

Obrigado pelo comentário!!!

1

Esse merece aquele curso na Udemy no Youtube.
Como é um projeto "de cabo a rabo" seria bem legal e me parece "simples" para ser didático.
Já pensou nisso?

2

Olha, não tinha pensado nisso ainda, mas eu sigo aquela regra de que só se aprende algo depois que você sabe ensinar, acredito que realmente pode ser uma boa. É muito mais do que uma simples pokedex que ninguém mais aguenta ver kkkkkkkkkkk

Muito obrigado pela ideia!!

1

É um baita projeto, no meu ver.
Vai aprender ensinando, com certeza!
E oportunidade de refatorar aquele código que você não quer que ninguém veja!

0
0
0