O blog da AWS

Integrando IA Generativa no Slack com o Amazon Q

Por Thiago Couto

O Amazon Q pode ajudá-lo a obter respostas rápidas e relevantes para perguntas urgentes, resolver problemas, gerar conteúdo e tomar ações usando os dados e a experiência encontrados nos repositórios de informações, no código e nos sistemas corporativos da sua empresa.

Nesse blogpost vamos criar uma integração entre o Amazon Q e um canal do Slack. O Amazon Q irá buscar de forma frequente e automática as novas mensagens trocadas no canal e utiliza-las como fonte de informação para suas respostas, servindo como um assistente virtual com o contexto das informações trocadas.

Para esse blogpost foi criado um canal com informações vindas dos lançamentos da AWS(https://aws.amazon.com/about-aws/whats-new/recent/feed/) utilizando a app de integração de RSS com o Slack(https://slack.com/help/articles/218688467-Add-RSS-feeds-to-Slack). Nas empresas, canais com informações de suporte, dúvidas de colaboradores e informações sobre projetos podem ser utilizados da mesma forma.

O primeiro passo é criar uma aplicação no slack e adicioná-la ao seu workspace. Os passos para isso se encontram em https://api.slack.com/start/quickstart. Importante notar os escopos requeridos para a interação no passo 2. “Requesting scopes” podem ser utilizados como User token ou Bot token(Recomendado):

Após a configuração dos escopos e clicar em Install into workspace um OAuth Token será gerado. Se você optou pelo Bot no passo acima, copie o Bot User OAuth Token(iniciado com xoxp-), você precisará dele mais tarde. O próximo passo é obter o Slack workspace team ID, que pode ser obtido no navegador, como em https://app.slack.com/client/T0123456789/

Inclua também sua nova aplicação no canal que você gostaria de ler as mensagens, através da aba “Integrations”:

Criar a aplicação do Amazon Q

Após logar na sua conta da AWS, busque por Amazon Q, clique em “Get Started” e em “Create application”. Uma tela se abrirá com as opções para uma nova aplicação. Insira um nome para sua aplicação como “Slack-Business-Assistent”, selecione o item “Create and use a new service role” (default), mantenha o nome gerado para a nova Role e clique em “Create”.

Na próxima tela vamos manter os itens como vieram e clicar em “Next”

Criando o Data source do Slack

A próxima tela oferece diversas opções de data sources em que o Amazon Q pode se conectar para buscar dados e utilizar como contexto para suas respostas. Para esse exemplo utilizaremos o conector do Slack. Selecione-o clicando m “+” em seu ícone:

Em seguida inclua um nome para o datasource como “slack-datasource” e inclua o Slack workspace team ID, que copiamos no formato T0123456789, em seguida desabilite o item “Access Control List (ACL)” (mais informações aqui: https://docs.aws.amazon.com/amazonq/latest/business-use-dg/slack-user-management.html).

Em Authentication, escolha a opção “Create and add new secret”:

Em seguida entre com um nome para a secret e o OAuth bot token copiado anteriormente

Mantenha a configuração de VPC como “No VPC” e em IAM Role, selecione “Create a new service role”, essa opção criará uma role com todas as permissões necessárias para a utilização do serviço.

No item “Sync scope”, vamos selecionar o que o Amazon Q vai buscar e quando. Como comentado anteriormente, nesse blogpost foi utilizado um canal específico para interação, selecione o canal que melhor se adapta ao seu caso de uso. Você pode utilizar os diversos filtros para especificar canais e mensagens. Em seguida selecione quando o a sincronização acontecerá. Posteriormente você pode incluir informações adicionais para filtro. Como o caso do blogpost está lendo de um bot que envia conteúdo baseado em RSS, a opção “Include bot message” foi selecionada também.

No item abaixo, você seleciona uma sincronização completa ou somente itens modificados. Para efeito de testes foi utilizada “Full Sync” com a opção de frequência horária na sessão “Sync run schedule”.

O restante dos campos foram mantidos com a opção padrão, em seguida clicar em “Add data source”. Após o data source ser criado, selecione “Create application”.

Visualizando e testando a aplicação Amazon Q

Com sua aplicação criada, vamos explora-la. Clique no nome de sua aplicação e em seguida no datasource criado. Se você configurou para rodar com frequência horária, pode ser que ele ainda não foi executado. Utilize o botão “Sync now” para que ele comece a integração e aguarde uns minutos até que todos os passos tenham sido executados.

Se houver algum erro é possível debugar através do Cloudwatch, itens como falta de inclusão de escopos na aplicação do Slack pode ocasionar falhas.

Com a sincronização completa, volte para a página principal da sua aplicação e clique em “Preview web experience”, esse link abrirá uma página pre-configurada para testar sua aplicação. Clique em “New Conversation” a faça perguntas sobre o assunto do canal. No caso do desse blogpost, o contexto do canal são os últimos lançamentos dos serviços da AWS. Segue exemplo:

Interação utilizando o Slack

Apesar de testada a integração com o(s) canal(is) do slack e validando a leitura e utilização do contexto lá contido para prover respostas, utilizar uma segunda plataforma para essa interação não é prático pro usuário final. Para isso, esse tópico vai utilizar de um repositório criado pela AWS para criar um gateway para o retorno das mensagens diretamente no Slack.

Para tanto o github https://github.com/aws-samples/amazon-q-slack-gateway descreve detalhadamente os passos a seguir:

    1. Fazer a instalação da stack em uma conta AWS(pode ser utilizada a conta utilizada para a criação da aplicação do Amazon Q). O campo “AmazonQAppId” refere-se ao campo Application ID da aplicação do amazon Q. como na figura abaixo:

2. Criar uma nova aplicação no slack baseada no SlackAppManifest gerado no passo anterior e adicioná-la no seu workspace. Diferente da aplicação criada no início desse blogpost, essa aplicação será responsável por interagir com o usuário, crie um nome amigável.

3. Configurar os secrets para armazenar os dados da sua aplicação.

Após os passos acima, vá no seu canal do Slack e inclua a sua aplicação, na aba Integrations:

Teste a Integração

Feito os passos acima, basta marcar o nome do seu bot no canal e fazer as mesmas perguntas que foram feitas no teste utilizando o Preview Web do Amazon Q:

Links para referência:

Amazon Q: https://aws.amazon.com/q/

Amazon Q Slack Connector: https://docs.aws.amazon.com/amazonq/latest/business-use-dg/slack-connector.html

Amazon Q Slack Gateway: https://github.com/aws-samples/amazon-q-slack-gateway

Slack Create App: https://api.slack.com/start/quickstart

Sobre o Autor

Thiago Couto é arquiteto de soluções na AWS e atua no segmento Enterprise auxiliando clientes de Retail e CPG em suas jornadas para nuvem. Possui mais de 10 anos de experiência atuando em arquiteturas que englobam AI/ML, integrações, IoT e correlatos.