PoC de Pair Programming com Github Copilot: remoção de fundo de imagens em Python

Fala Devs! Estou empolgado com o Github Copilot, sabe. kkk Compartilho aqui um repositório no Github que criei, após as dicas matadoras do Rafael Bonaldi .

Fiz uma PoC em Python bem simples no VS Code com apoio do copilot, para remover o fundo de imagens via linha de comando (CLI). Foi uma oportunidade para avaliar a pair programming com o copilot em ação.

Como o copilot ajudou?

Pedi via chat para ele fazer a geração do código do arquivo script.py para remover o fundo de imagens, recebendo o nome do arquivo de entrada como parametro.

Daí eu pedi para ele explicar o código e as bibliotecas utilizadas. Depois pedi para ele comentar o código, fazer um code review e uma avaliação do ambiente com @workspace.

Na hora de rodar deu erro e eu pedi para explicar porque estava dando erro e ele sugeriu criar um ambiente virtual do python e explicou que precisava da chave de acesso à API da lib removebg. Entrei no site, baixei a chave e fiz as correções de acordo com as instruções dele e rodou. Gostei bastande e acho que é um apoio que melhora muito a produtividade.

Considero que o conceito foi provado. kkk O mais importante pra mim foi definir o objetivo e conseguir alcançar, com um código simples, útil, que eu consigo entender e que funciona. kkk

O código ficou assim:

import argparse
from removebg import RemoveBg

def remove_background(input_file):
    """
    Remove the background from an image file using the RemoveBg library.

    Parameters:
    input_file (str): The path to the input image file.
    
    Returns:
    None
    """
    try:
        rmbg = RemoveBg("< API KEY >", "error.log")
        rmbg.remove_background_from_img_file(input_file)
    except FileNotFoundError:
        print("The file is not found")
    except Exception as e:
        print("An error occured", e)

def main():
    """
    Parse command-line arguments and call the remove_background function.
    """
    parser = argparse.ArgumentParser(description='Remove background from image.')
    parser.add_argument('input_file', type=str, help='The image file to remove the background from.')
    args = parser.parse_args()
    remove_background(args.input_file)

if __name__ == "__main__":
    main()

Segue o link do repositório: https://github.com/adrianotavares/copilot

Quem quiser colaborar e criar outras funções para tratamento de imagens, manda bala e depois comenta aqui como o assistente ajudou!

Mas tem de usar o copilot ou outra ferramenta, porque o objetivo da PoC é testar a pair programming com assistentes de IA, blz?

Let’s code!

16 Axiomas da Arquitetura Ágil

Você já ouviu falar dos 16 axiomas para a prática da arquitetura ágil? Eles são fundamentais para guiar os times na construção de produtos e plataformas digitais robustas e flexíveis. Vamos ver cada um deles e entender como podem transformar a forma como trabalhamos a arquitetura de sistemas.

  1. Foco na experiência do cliente: Priorizar a criação de valor e satisfação para o cliente.
  2. Pensamento de fora para dentro: Entender o ambiente externo para informar decisões internas.
  3. Ciclos rápidos de feedback: Implementar loops de feedback frequentes para ajustar a arquitetura rapidamente.
  4. Orquestração de pontos de contato: Coordenar todos os pontos de interação com o cliente.
  5. Alinhamento do fluxo de valor: Garantir que todos os esforços estejam direcionados para criar valor ao longo de todo o fluxo de valor (Value Stream).
  6. Equipes autônomas e multifuncionais: Promover equipes independentes com habilidades diversas para maior eficácia.
  7. Distribuição de autoridade, responsabilidade e prestação de contas: Distribuir claramente essas funções para evitar gargalos.
  8. Sistemas fracamente acoplados: Construir sistemas modulares que possam ser facilmente modificados.
  9. Plataforma de dados modular: Utilizar uma plataforma de dados que permita fácil integração e expansão.
  10. Princípios de operação comuns e simples: Manter princípios operacionais claros e simples para todos.
  11. Particionamento sobre camadas: Preferir arquiteturas particionadas com componentes desacoplados, ao invés de arquitetura em camadas.
  12. Arquitetura de espelhamento organizacional: Estruturar a arquitetura para refletir a empresa. A Arquitetura Ágil deve estruturar times ágeis de forma a mapear a arquitetura intencional dos sistemas.
  13. Nivelamento organizacional: Alinhar a arquitetura com os níveis de hierarquia organizacional. Por exemplo: Grupo, Entidade, Time de times, Times ágeis.
  14. Viés para a mudança: Buscar um equilíbrio entre arquitetura intencional e emergente. Estar preparado e disposto a mudar conforme necessário.
  15. Mudança de projeto para produto: Focar em entregas contínuas de valor em vez de projetos isolados.
  16. Segurança by Design: Incorporar segurança desde o início do processo de design: Upstream e Downstream.

Para mais detalhes, confira no standard O-AA – Open Agile Architecture.

E você?

Quais axiomas você já aplica na sua prática diária? Compartilhe suas experiências e desafios nos comentários!

Prompting: Uma competência digital essencial

De acordo com o relatório Future of Work Report: AI at Work do LinkedIn, há um aumento significativo nas buscas por termos como “ChatGPT”, “engenharia de prompt”, “elaboração de prompt”, “Microsoft Copilot” e “inteligência artificial generativa” nos perfis dos membros globalmente. Esses dados destacam a crescente importância da IA generativa no ambiente de trabalho.

“74% dos executivos acreditam que a IA generativa beneficiará os funcionários.”
— Linkedin

Uma outra pesquisa da BCG, How People Can Create—and Destroy—Value with Generative AI, revela que quase todos os participantes (cerca de 90%), independentemente de sua proficiência inicial, obtiveram resultados de maior qualidade ao usar o GPT-4 para realizar tarefas. Além disso, a variação no desempenho foi drasticamente reduzida, com uma parcela muito maior dos participantes apresentando resultados próximos à média, aumentando substancialmente os níveis de desempenho do grupo como um todo.

“Para maximizar os benefícios da IA generativa, é essencial aprender a criar prompts eficazes.”
–BCG

De acordo com o MIT Sloan, Effective Prompts for AI: The Essentials, a elaboração de prompts eficazes é uma habilidade fundamental para trabalhar bem com a IA. Isso envolve entender como comunicar claramente suas intenções à IA para obter os melhores resultados.

“Essa arte de refinar prompts é denominada engenharia de prompts, que envolve selecionar as palavras, frases, símbolos e formatos certos, para obter o melhor resultado possível dos modelos de IA.”
— Johnmaeda, 2023

Outro artigo da Harvard Business Review, To Work Well with GenAI, You Need to Learn How to Talk to It , enfatiza a importância de saber como falar com a IA generativa para utilizá-la de maneira eficaz. Aprender a elaborar prompts não é apenas uma habilidade técnica, mas também uma competência essencial para aumentar a eficiência e a produtividade no trabalho.

“Nos 17 anos que passei na Microsoft, nunca estive tão otimista quanto à oportunidade da computação de mudar o trabalho para melhor.”
— Jaime Teevan, cientista-chefe da Microsoft

Esses artigos reforçam a importância de dominar a elaboração de prompts e a utilização de ferramentas de IA generativa. Ao desenvolver essas habilidades, você não só melhora sua própria performance, mas também contribui para elevar a média de desempenho da sua equipe.

O que você acha dessa tendência? Já começou a explorar o poder dos prompts em sua rotina de trabalho? Compartilhe suas experiências nos comentários!