Hackeando nosso caminho para melhores reuniões de equipe


Hackeando nosso caminho para melhores reuniões de equipe

Desde que este weblog foi publicado originalmente, também lancei o Distill CLI. Você pode ler o acompanhamento postagem de weblog ou mexer com o código no GitHub.


Como alguém que faz muitas anotações, estou sempre em busca de ferramentas e estratégias que possam me ajudar a refinar meu próprio processo de anotações (como o Método Cornell). E embora eu geralmente prefira caneta e papel (porque é demonstrado que ajuda na retenção e síntese), não há como negar que a tecnologia pode ajudar a aprimorar nossas habilidades desenvolvidas. Isso é especialmente verdadeiro em situações como reuniões, onde participar ativamente e fazer anotações ao mesmo tempo pode estar em conflito um com o outro. A distração de olhar para baixo para fazer anotações ou digitar no teclado pode dificultar o envolvimento na conversa, pois nos força a tomar decisões rápidas sobre quais detalhes são importantes, e sempre há o risco de perder detalhes importantes ao tentar capturar os anteriores. Sem mencionar que, quando nos deparamos com reuniões consecutivas, o desafio de resumir e extrair detalhes importantes de páginas de anotações é cada vez maior – e quando considerado em nível de grupo, há desperdício significativo de tempo particular person e de grupo nos negócios modernos com esses tipos de despesas administrativas.

Diante desses problemas diariamente, minha equipe — uma pequena equipe de tigres que gosto de chamar de OCTO (Workplace of the CTO) — viu uma oportunidade de usar IA para aumentar nossas reuniões de equipe. Eles desenvolveram uma prova de conceito simples e direta para nós mesmos, que usa serviços da AWS como Lambda, Transcribe e Bedrock para transcrever e resumir nossas reuniões virtuais de equipe. Ela nos permite reunir notas de nossas reuniões, mas manter o foco na conversa em si, pois os detalhes granulares da discussão são capturados automaticamente (ela até cria uma lista de tarefas). E hoje, estamos disponibilizando a ferramenta de código aberto, que nossa equipe chama de “Distill”, na esperança de que outros também a considerem útil: https://github.com/aws-samples/amazon-bedrock-audio-summarizer.

Neste publish, vou mostrar a arquitetura de alto nível do nosso projeto, como ele funciona e dar uma prévia de como tenho trabalhado junto Desenvolvedor Amazon Q para transformar o Distill em um Rust CLI.

A anatomia de um aplicativo simples de resumo de áudio

O aplicativo em si é simples — e isso é intencional. Eu concordo com a ideia de que os sistemas devem ser feitos o mais simples possível, mas não mais simples. Primeiro, carregamos um arquivo de áudio da nossa reunião em um bucket S3. Então, um gatilho S3 notifica uma função Lambda, que inicia o processo de transcrição. Uma regra de Occasion Bridge é usada para invocar automaticamente uma segunda função Lambda quando qualquer tarefa Transcribe começando com summarizer- tem um standing recém-atualizado de COMPLETED. Assim que a transcrição estiver concluída, esta função Lambda pega a transcrição e a envia com um immediate de instrução para a Bedrock para criar um resumo. No nosso caso, estamos usando o Claude 3 Sonnet para inferência, mas você pode adaptar o código para usar qualquer modelo disponível para você na Bedrock. Quando a inferência estiver concluída, o resumo da nossa reunião — incluindo as principais conclusões e quaisquer tarefas — é armazenado de volta em nosso bucket S3.

Diagrama de arquitetura do Distill

Já falei muitas vezes sobre a importância de tratar a infraestrutura como código e, como tal, usamos o AWS CDK para gerenciar a infraestrutura deste projeto. O CDK nos dá uma maneira confiável e consistente de implantar recursos e garantir que a infraestrutura seja compartilhável com qualquer pessoa. Além disso, ele também nos deu uma boa maneira de iterar rapidamente nossas ideias.

Usando Destilar

Se você tentar isso (e espero que você faça isso), a configuração é rápida. Clone o repositórioe siga os passos no README para implantar a infraestrutura do aplicativo na sua conta usando o CDK. Depois disso, há duas maneiras de usar a ferramenta:

  1. Solte um arquivo de áudio diretamente no supply pasta do bucket S3 criado para você, aguarde alguns minutos e visualize os resultados no processed pasta.
  2. Use o pocket book Jupyter que criamos para percorrer o processo de add de áudio, monitorar a transcrição e recuperar o resumo de áudio.

Aqui está um exemplo de saída (minimamente higienizada) de uma reunião recente da equipe OCTO, da qual apenas parte da equipe pôde participar:

Aqui está um resumo da conversa em parágrafos legíveis:

O grupo discutiu ideias de conteúdo em potencial e abordagens para eventos futuros como VivaTech e re:Invent. Houve sugestões sobre palestras em vez de conversas ao pé da lareira ou painéis de discussão. A importância de elaborar eventos futuros instigantes foi enfatizada.

Recapitulando a recente turnê de Werner pela Ásia, a equipe refletiu sobre os destaques, como o envolvimento com estudantes universitários locais, desenvolvedores, startups e comunidades carentes. As iniciativas da Indonésia em torno da inclusão de deficientes foram elogiadas. Suggestions útil foi compartilhado sobre logística, equilíbrio entre trabalho e tempo de inatividade e formatos de eventos ideais para Werner. O grupo planeja investigar a transformação desses aprendizados em um boletim informativo interno.

Outros tópicos abordados incluíram as próximas reuniões consultivas, das quais Jeff poderá participar virtualmente, e a evolução do papel do CTO moderno, com foco crescente no impacto social e nas perspectivas globais.

Principais itens de ação:

  • Reprogramar reunião da equipe para a próxima semana
  • Lisa divulgará a pauta da próxima reunião consultiva quando disponível
  • Roger elaborará possíveis perguntas do painel para a VivaTech
  • Discover as opções de gravação/transmissão para o painel VivaTech
  • Determinar a propriedade do conteúdo entre as equipes para resumir os destaques da turnê pela Ásia

Além disso, a equipe criou um webhook no Slack que publica automaticamente esses resumos em um canal da equipe, para que aqueles que não puderam comparecer possam acompanhar o que foi discutido e revisar rapidamente os itens de ação.

Lembre-se, a IA não é perfeita. Alguns dos resumos que recebemos, incluindo os acima, têm erros que precisam de ajuste handbook. Mas tudo bem, porque ainda acelera nossos processos. É simplesmente um lembrete de que ainda precisamos ser criteriosos e envolvidos no processo. O pensamento crítico é tão importante agora quanto sempre foi.

Há valor em resolver os problemas do dia a dia

Este é apenas um exemplo de um aplicativo simples que pode ser criado rapidamente, implantado na nuvem e levar a eficiências organizacionais. Dependendo do estudo que você analisar, cerca de 30% dos funcionários corporativos dizem que não concluem seus itens de ação porque não conseguem se lembrar de informações importantes das reuniões. Podemos começar a reduzir estatísticas como essa tendo notas personalizadas entregues a você imediatamente após uma reunião, ou um assistente que cria automaticamente itens de trabalho de uma reunião e os atribui à pessoa certa. Nem sempre se trata de resolver o “grande” problema de uma só vez com a tecnologia. Às vezes, trata-se de reduzir os problemas do dia a dia. Encontrar soluções simples que se tornem a base para uma inovação incremental e significativa.

Estou particularmente interessado em saber para onde isso vai a seguir. Agora vivemos em um mundo onde um bot com tecnologia de IA pode atender suas chamadas e agir em tempo actual. Fazendo anotações, respondendo perguntas, rastreando tarefas, removendo PII, até mesmo procurando coisas que de outra forma seriam uma distração e tornariam a chamada mais lenta enquanto um indivíduo tentava encontrar os dados. Ao compartilhar nosso aplicativo simples, a intenção não é mostrar “algo brilhante e novo”, é mostrar a você que se podemos construí-lo, você também pode. E estou curioso para ver como a comunidade de código aberto o usará. Como eles o estenderão. O que eles criarão em cima dele. E é isso que acho realmente empolgante — o potencial de ferramentas simples baseadas em IA para nos ajudar de mais e mais maneiras. Não como substitutos para a engenhosidade humana, mas como auxiliares que nos tornam melhores.

Para isso, trabalhar neste projeto com minha equipe me inspirou a assumir meu próprio projeto: transformar esta ferramenta em uma CLI Rust.

Construindo um Rust CLI do zero

eu responsabilizo Marc Brooker e Colm MacCarthaigh por me tornar um entusiasta do Rust. Sou um programador de sistemas de coração, e esse coração começou a bater muito mais rápido quanto mais familiarizado fiquei com a linguagem. E se tornou ainda mais importante para mim depois de me deparar com A maravilhosa pesquisa de Rui Pereira sobre o consumo de energia, tempo e memória de diferentes linguagens de programação, quando percebi que há um tremendo potencial para nos ajudar a construir de forma mais sustentável na nuvem.

Durante nossos experimentos com o Distill, queríamos ver qual seria o efeito de mover uma função do Python para o Rust. Com o CDK, foi fácil fazer uma alteração rápida em nossa pilha que nos permitiu mover uma função Lambda para o tempo de execução AL2023 e, em seguida, implantar uma versão do código baseada em Rust. Se você estiver curioso, a função teve inicializações a frio médias que foram 12x mais rápidas (34 ms vs 410 ms) e usaram 73% menos memória (21 MB vs 79 MB) do que sua variante Python. Inspirado, decidi realmente sujar as mãos. Eu transformaria este projeto em um utilitário de linha de comando e colocaria um pouco do que aprendi no livro de Ken Youens-Clark, “Linha de comando Rust” em prática.

Sempre adorei trabalhar na linha de comando. Cada grep, cate curl naquela caixinha preta me lembra muito dirigir um carro velho. Pode ser um pouco mais difícil de virar, pode fazer alguns barulhos e reclamar, mas você sente uma conexão com a máquina. E ser ativo com o código, assim como fazer anotações, ajuda as coisas a se fixarem.

Não sendo um guru do Rust, decidi testar o Q. Ainda tenho muitas perguntas sobre a linguagem, expressões idiomáticas, modelo de propriedade e bibliotecas comuns que vi em códigos de exemplo, como o Tokio. Se estou sendo honesto, aprender a interpretar o que o compilador está objetando é provavelmente a parte mais difícil para mim de programar em Rust. Com o Q aberto no meu IDE, foi fácil disparar perguntas “estúpidas” sem estigma, e usar as referências que ele forneceu significou que não precisei vasculhar tesouros de documentação.

Resumo de Tóquio

Conforme a CLI começou a tomar forma, o Q desempenhou um papel mais significativo, fornecendo insights mais profundos que informaram decisões de codificação e design. Por exemplo, fiquei curioso se usar referências de fatias introduziria ineficiências com grandes listas de itens. O Q prontamente explicou que, embora fatias de matrizes pudessem ser mais eficientes do que criar novas matrizes, há uma possibilidade de impactos no desempenho em escala. Parecia uma conversa — eu podia trocar ideias com o Q, fazer perguntas de acompanhamento livremente e receber respostas imediatas e sem julgamentos.

Conselhos de Q sobre fatias em Rust

A última coisa que mencionarei é o recurso de enviar código diretamente para o Q. Tenho experimentado refatoração e otimização de código, e isso me ajudou a construir uma melhor compreensão do Rust e me levou a pensar mais criticamente sobre o código que escrevi. Isso mostra o quão importante é criar ferramentas que atendam aos construtores onde eles já se sentem confortáveis ​​— no meu caso, o IDE.

Enviar código para Q

Em breve…

Nas próximas semanas, o plano é compartilhar meu código para meu Rust CLI. Preciso de um pouco de tempo para polir isso, e pedir para pessoas com um pouco mais de experiência revisarem, mas aqui vai uma prévia:

Uma prévia do Rust CLI

Como sempre, agora vá construir! E suje as mãos enquanto faz isso.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *