Integração com Chat

Conheça como o Capellaris se integra com plataformas de chat como Slack e Microsoft Teams, permitindo interações naturais com os agentes.

Visão Geral da Integração

A integração com plataformas de chat é um componente essencial do Capellaris, permitindo que os usuários interajam com os agentes através de interfaces familiares e já utilizadas no dia a dia da empresa. Esta abordagem elimina a necessidade de aprender novas interfaces e facilita a adoção do sistema.

Principais Benefícios

  • Facilidade de Uso: Interação com os agentes através de plataformas já utilizadas pelos usuários.
  • Colaboração: Possibilidade de incluir os agentes em conversas e canais existentes.
  • Contextualização: Os agentes têm acesso ao contexto das conversas para fornecer respostas mais relevantes.
  • Notificações: Utilização dos sistemas de notificação das plataformas para alertar sobre tarefas e atualizações.
  • Histórico: Aproveitamento do histórico de conversas para referência futura e aprendizado.

O sistema atualmente suporta integração com Slack e Microsoft Teams, com planos para expandir para outras plataformas como Discord, Telegram e WhatsApp Business no futuro. A arquitetura modular permite adicionar novas integrações de forma simples e consistente.

Slack

Integração completa com o Slack, permitindo interações em canais públicos, privados e mensagens diretas, com suporte a rich messages e blocos interativos.

Microsoft Teams

Integração com o Microsoft Teams, permitindo interações em canais e chats, com suporte a cards adaptativos e botões de ação.

Arquitetura de Integração

A arquitetura de integração com chat foi projetada para ser modular, extensível e robusta, permitindo adicionar novas plataformas de chat com facilidade e garantindo uma experiência consistente independentemente da plataforma utilizada.

Diagrama de Arquitetura

+---------------------+     +---------------------+     +---------------------+
|                     |     |                     |     |                     |
|  Plataformas        |     |  Conectores         |     |  Sistema de         |
|  de Chat            |<--->|  de Chat            |<--->|  Gerenciamento      |
|  (Slack, Teams)     |     |  (Adaptadores)      |     |  de Agentes         |
|                     |     |                     |     |                     |
+---------------------+     +---------------------+     +---------------------+
                                      ^                           ^
                                      |                           |
                                      v                           v
                            +---------------------+     +---------------------+
                            |                     |     |                     |
                            |  Formatadores       |     |  Interface de       |
                            |  de Mensagem        |     |  Confirmação Humana |
                            |                     |     |                     |
                            +---------------------+     +---------------------+
                            

Componentes Principais

ChatIntegration

O componente central que gerencia a integração com diferentes plataformas de chat. Ele coordena a comunicação entre os conectores específicos de cada plataforma e o sistema de gerenciamento de agentes.

Responsabilidades:

  • Gerenciar os conectores para diferentes plataformas de chat
  • Rotear mensagens entre os usuários e os agentes apropriados
  • Coordenar o processo de confirmação humana
  • Gerenciar o contexto das conversas
  • Monitorar o status das integrações

Conectores de Chat

Os conectores são adaptadores específicos para cada plataforma de chat, responsáveis por traduzir as mensagens entre o formato interno do sistema e o formato específico de cada plataforma.

Conectores Implementados:

  • SlackConnector: Integração com o Slack
  • TeamsConnector: Integração com o Microsoft Teams

Formatadores de Mensagem

Os formatadores de mensagem são responsáveis por converter as respostas dos agentes em formatos ricos e interativos específicos de cada plataforma, como blocos interativos no Slack ou cards adaptativos no Teams.

Tipos de Formatação:

  • Formatação de texto (negrito, itálico, listas, etc.)
  • Blocos interativos (botões, menus, etc.)
  • Cards e attachments
  • Gráficos e visualizações
  • Links e referências

Interface de Confirmação Humana

A Interface de Confirmação Humana gerencia o processo de aprovação para execução de tarefas, garantindo que os agentes não realizem ações não autorizadas. Ela utiliza as plataformas de chat para enviar solicitações de aprovação e processar as respostas.

Funcionalidades:

  • Envio de solicitações de aprovação
  • Processamento de respostas (aprovar, rejeitar, solicitar mais informações)
  • Timeout e escalação de solicitações não respondidas
  • Registro de aprovações e rejeições
  • Níveis de aprovação baseados em complexidade e impacto da tarefa

Integração com Slack

A integração com o Slack permite que os usuários interajam com os agentes de IA diretamente nos canais e mensagens diretas do Slack, aproveitando todos os recursos da plataforma como threads, reações, blocos interativos e notificações.

Funcionalidades

  • Menções: Os agentes podem ser mencionados em canais usando @agente_nome
  • Mensagens Diretas: Os usuários podem enviar mensagens diretas para os agentes
  • Threads: As conversas são organizadas em threads para manter o contexto
  • Blocos Interativos: Botões, menus e outros elementos interativos para facilitar a interação
  • Reações: Os usuários podem reagir às mensagens dos agentes para fornecer feedback rápido
  • Notificações: Os agentes podem enviar notificações para alertar sobre tarefas e atualizações

Configuração

Requisitos:

  • Workspace do Slack
  • Permissões de administrador para instalar aplicativos
  • Criação de um aplicativo Slack na plataforma de desenvolvedores do Slack
  • Configuração de webhooks e permissões apropriadas

Exemplo de Código: Configuração do Slack

# Configuração do conector Slack
slack_config = {
    "token": "xoxb-your-token",
    "signing_secret": "your-signing-secret",
    "allowed_channels": ["general", "marketing", "development", "finance"],
    "default_response_timeout": 300,  # 5 minutos
    "notification_preferences": {
        "task_completion": True,
        "approval_requests": True,
        "error_notifications": True
    },
    "formatting": {
        "use_blocks": True,
        "use_attachments": True,
        "max_text_length": 3000
    }
}

# Inicializar o conector
slack_connector = SlackConnector(slack_config)

# Registrar o conector no sistema de integração
chat_integration = ChatIntegration()
chat_integration.add_connector("slack", slack_connector)

# Configurar a interface de confirmação humana
confirmation_interface = HumanConfirmationInterface()
confirmation_interface.register_platform("slack", slack_connector)
                        

Exemplo de Interação

Solicitação de Tarefa:

Usuário (em #marketing):

@agente_marketing analise os resultados da nossa campanha de email marketing do último trimestre e sugira melhorias para aumentar a taxa de conversão.

Solicitação de Aprovação:

Agente de IA (em thread):

Solicitação de Aprovação

O agente de marketing gostaria de executar a seguinte tarefa:

"Analisar os resultados da campanha de email marketing do último trimestre e sugerir melhorias para aumentar a taxa de conversão."

Esta tarefa envolverá acesso aos dados de marketing e análise de métricas de campanha.

Resposta do Agente:

Agente de Marketing (em thread):

Aqui está a análise dos resultados da campanha de email marketing do último trimestre:

Métricas Principais:

  • Taxa de abertura: 24.3% (↓ 2.1% em relação ao trimestre anterior)
  • Taxa de clique: 3.7% (↓ 0.5% em relação ao trimestre anterior)
  • Taxa de conversão: 1.2% (↓ 0.3% em relação ao trimestre anterior)
  • Taxa de descadastramento: 0.8% (↑ 0.2% em relação ao trimestre anterior)

Recomendações para melhorar a taxa de conversão:

  1. Melhorar a segmentação de público com base no comportamento de compra
  2. Otimizar os assuntos dos emails para aumentar a taxa de abertura
  3. Redesenhar as CTAs para torná-las mais claras e atrativas
  4. Implementar testes A/B para diferentes layouts e conteúdos
  5. Ajustar o timing dos envios com base na análise de horários de maior engajamento

Gostaria de elaborar alguma dessas recomendações em mais detalhes?

Integração com Microsoft Teams

A integração com o Microsoft Teams permite que os usuários interajam com os agentes de IA diretamente nos canais e chats do Teams, aproveitando recursos como cards adaptativos, botões de ação e notificações.

Funcionalidades

  • Menções: Os agentes podem ser mencionados em canais usando @agente_nome
  • Chats Privados: Os usuários podem iniciar chats privados com os agentes
  • Cards Adaptativos: Interfaces ricas e interativas para apresentação de informações
  • Botões de Ação: Elementos interativos para facilitar a interação
  • Abas Personalizadas: Interfaces dedicadas dentro do Teams para interações mais complexas
  • Notificações: Os agentes podem enviar notificações para alertar sobre tarefas e atualizações

Configuração

Requisitos:

  • Tenant do Microsoft 365
  • Permissões de administrador para registrar aplicativos
  • Registro de um aplicativo no Azure Active Directory
  • Configuração de bot no Bot Framework
  • Configuração de permissões e escopos apropriados

Exemplo de Código: Configuração do Teams

# Configuração do conector Teams
teams_config = {
    "app_id": "your-app-id",
    "app_password": "your-app-password",
    "tenant_id": "your-tenant-id",
    "allowed_teams": ["Marketing", "Development", "Finance"],
    "default_response_timeout": 300,  # 5 minutos
    "notification_preferences": {
        "task_completion": True,
        "approval_requests": True,
        "error_notifications": True
    },
    "formatting": {
        "use_adaptive_cards": True,
        "use_hero_cards": True,
        "max_text_length": 2000
    }
}

# Inicializar o conector
teams_connector = TeamsConnector(teams_config)

# Registrar o conector no sistema de integração
chat_integration = ChatIntegration()
chat_integration.add_connector("teams", teams_connector)

# Configurar a interface de confirmação humana
confirmation_interface = HumanConfirmationInterface()
confirmation_interface.register_platform("teams", teams_connector)
                        

Exemplo de Card Adaptativo

# Exemplo de card adaptativo para solicitação de aprovação
approval_card = {
    "type": "AdaptiveCard",
    "version": "1.3",
    "body": [
        {
            "type": "TextBlock",
            "size": "medium",
            "weight": "bolder",
            "text": "Solicitação de Aprovação"
        },
        {
            "type": "TextBlock",
            "text": "O agente de marketing gostaria de executar a seguinte tarefa:",
            "wrap": True
        },
        {
            "type": "TextBlock",
            "text": "Analisar os resultados da campanha de email marketing do último trimestre e sugerir melhorias para aumentar a taxa de conversão.",
            "wrap": True,
            "isSubtle": True,
            "italic": True
        },
        {
            "type": "TextBlock",
            "text": "Esta tarefa envolverá acesso aos dados de marketing e análise de métricas de campanha.",
            "wrap": True
        }
    ],
    "actions": [
        {
            "type": "Action.Submit",
            "title": "Aprovar",
            "data": {
                "action": "approve",
                "task_id": "task_123456"
            },
            "style": "positive"
        },
        {
            "type": "Action.Submit",
            "title": "Rejeitar",
            "data": {
                "action": "reject",
                "task_id": "task_123456"
            },
            "style": "destructive"
        },
        {
            "type": "Action.Submit",
            "title": "Solicitar mais informações",
            "data": {
                "action": "more_info",
                "task_id": "task_123456"
            }
        }
    ]
}

# Enviar o card para o Teams
teams_connector.send_adaptive_card(
    recipient="user@company.com",
    card=approval_card,
    conversation_id="conversation_123456"
)
                        

Processo de Confirmação Humana

O processo de confirmação humana é um componente essencial do Capellaris, garantindo que os agentes não realizem ações não autorizadas. Este processo utiliza as plataformas de chat para enviar solicitações de aprovação e processar as respostas dos operadores humanos.

Fluxo de Confirmação

  1. Solicitação de Tarefa: Um usuário solicita que um agente execute uma tarefa através da plataforma de chat.
  2. Análise da Tarefa: O sistema analisa a tarefa para determinar seu nível de complexidade e impacto.
  3. Identificação de Aprovadores: Com base na análise, o sistema identifica os operadores humanos que podem aprovar a tarefa.
  4. Envio de Solicitação: Uma solicitação de aprovação é enviada para os aprovadores através da plataforma de chat.
  5. Resposta do Aprovador: O aprovador responde à solicitação, aprovando, rejeitando ou solicitando mais informações.
  6. Processamento da Resposta: O sistema processa a resposta e, se aprovada, permite que o agente execute a tarefa.
  7. Notificação ao Usuário: O usuário é notificado sobre a decisão e, se aprovada, sobre o progresso e conclusão da tarefa.

Níveis de Aprovação

Nível Baixo

Tarefas simples com baixo impacto e sem acesso a dados sensíveis.

Exemplos: Análises básicas, resumos de informações públicas, recomendações gerais.

Nível Médio

Tarefas com impacto moderado ou acesso a dados internos não sensíveis.

Exemplos: Análises detalhadas, criação de relatórios, recomendações específicas.

Nível Alto

Tarefas com alto impacto ou acesso a dados sensíveis ou confidenciais.

Exemplos: Análises financeiras, acesso a dados de clientes, decisões estratégicas.

Exemplo de Código: Solicitação de Aprovação

def request_approval(self, task_id, task_description, agent_id, platform, channel, requester):
    """
    Solicita aprovação para execução de uma tarefa.
    
    Args:
        task_id (str): Identificador único da tarefa
        task_description (str): Descrição da tarefa a ser executada
        agent_id (str): Identificador do agente que executará a tarefa
        platform (str): Plataforma de chat (slack, teams)
        channel (str): Canal ou conversa onde a solicitação foi feita
        requester (str): Identificador do usuário que solicitou a tarefa
        
    Returns:
        str: ID da solicitação de aprovação
    """
    # Determinar o nível de aprovação necessário
    approval_level = self._determine_approval_level(task_description, agent_id)
    
    # Identificar aprovadores com base no nível
    approvers = self._identify_approvers(approval_level, platform, channel)
    
    if not approvers:
        # Se não houver aprovadores disponíveis, notificar o solicitante
        self._notify_no_approvers(platform, channel, requester, task_id)
        return None
    
    # Criar solicitação de aprovação
    approval_request = {
        "id": f"approval_{uuid.uuid4().hex}",
        "task_id": task_id,
        "task_description": task_description,
        "agent_id": agent_id,
        "requester": requester,
        "approval_level": approval_level,
        "approvers": approvers,
        "platform": platform,
        "channel": channel,
        "status": "pending",
        "created_at": datetime.now().isoformat(),
        "expires_at": (datetime.now() + timedelta(minutes=30)).isoformat()
    }
    
    # Armazenar a solicitação
    self.approval_store.store_request(approval_request)
    
    # Enviar solicitação para os aprovadores
    for approver in approvers:
        self._send_approval_request(
            platform=platform,
            recipient=approver,
            approval_request=approval_request
        )
    
    # Configurar timeout para a solicitação
    self._schedule_approval_timeout(approval_request["id"], 30 * 60)  # 30 minutos
    
    return approval_request["id"]