- A Benchling opera infraestrutura em nuvem em várias regiões e ambientes.
- Gerencia mais de 160 mil recursos com o Terraform Cloud, e cerca de 50 engenheiros publicam mudanças de infraestrutura por mês.
- Há um FAQ extenso (20 páginas) e registros de threads do Slack, mas o problema era a ineficiência na busca.
- Para resolver isso, eles construíram um Slackbot usando RAG com LLM.
Objetivos da implementação
- Desenvolver um Slackbot interno para responder em tempo real dúvidas sobre Terraform Cloud.
- Combinar fontes de dados internas e externas e fornecer respostas por meio de uma interface de Slack familiar aos usuários.
- Casos de uso possíveis:
- Resposta a perguntas de RH
- Busca de cases de resolução de problemas de clientes
- Explicação de códigos de erro de software
Como funciona
- Análise da consulta do usuário: busca por informações relacionadas no banco de dados.
- Montagem do prompt do LLM: geração da resposta incluindo resultados de busca e diretrizes.
Stack tecnológica
- Modelo RAG: usando Amazon Bedrock.
- Configuração de uma base de conhecimento composta por OpenSearch Serverless.
- Geração de respostas com o modelo Claude 3.5 Sonnet v2.
Fontes de dados
- Confluence: FAQ do Terraform Cloud (salvo como PDF e enviado ao S3).
- Web: documentação do Terraform Cloud e de linguagem da HashiCorp.
- Slack: threads contendo issues resolvidas do Terraform Cloud (coleta manual no POC).
- Os dados são armazenados em um banco de dados vetorial para busca por consulta.
Arquitetura de implementação
- Componentes:
- Slack App
- AWS API Gateway
- AWS Lambda (com Python)
- AWS Bedrock
- OpenSearch Serverless (banco de dados vetorial)
- Modelos utilizados:
- Amazon Titan Text Embeddings v2 (geração de embeddings)
- Claude 3.5 Sonnet v2 (geração de respostas)
Limitações e próximos passos
Limitações
- Sem suporte a imagens: não inclui diagramas de arquitetura ou screenshots baseados em imagem.
- Suporte insuficiente ao Terraform: atualmente o provider AWS do Terraform não suporta recursos do Bedrock.
Próximos passos
- Adicionar links de origem: incluir a fonte do documento na resposta do Slack.
- Salvar threads do Slack automaticamente: atualizar o banco de dados com o comando "@help-terraform-cloud remember".
- Automatizar sincronização de dados: sincronizar semanalmente com eventos do CloudWatch.
- Usar API do Confluence: substituir o upload manual de PDF por integração com API.
- Suporte a múltiplas conversas: manter contexto contínuo com o usuário.
Lições aprendidas durante a implementação
- Estratégia de chunking de dados:
- Inicialmente usou-se chunks de 300 tokens (aprox. 1 parágrafo), mas foi ajustado para 1500 tokens (aprox. 5 parágrafos) para evitar que respostas longas fossem cortadas.
- Eficiência de parsing de PDF:
- Sem imagens, os dados baseados em texto eram extraídos de forma estável.
- Facilidade de configuração da base de conhecimento:
- É possível montar uma base em poucos minutos usando o Amazon Bedrock.
Casos de uso
- Consulta de FAQ e códigos de erro.
- Resposta automática para perguntas recorrentes.
- Uso de datasets personalizados por time:
- histórico de conversas, documentos públicos etc.
Considerações de segurança
- Avaliação de risco de dados sensíveis e de resultados imprecisos.
- Verificar se o modelo usado é aprovado pela organização.
Conclusão
- O Slackbot baseado em LLM demonstra a viabilidade de desenvolver protótipos com rapidez.
- Experimentar novas tecnologias pode elevar eficiência e produtividade.
- Com base neste caso, você também pode construir ferramentas baseadas em LLM!
Ainda não há comentários.