Integração Inteligente: Utilizando GPT com Base de Conhecimento do Notion em uma Aplicação WPF para Revit

Neste artigo, apresento uma aplicação inovadora em C# que combina a inteligência artificial do GPT (OpenAI) com uma base de conhecimento extraída diretamente de uma página do Notion. O objetivo é demonstrar como essas tecnologias podem ser integradas para criar uma ferramenta eficiente e prática diretamente dentro do Autodesk Revit, especialmente voltada para equipes de engenharia e projetos que demandam respostas rápidas e precisas.

O que esta aplicação oferece:

  • Integração direta com o Notion para manter o conhecimento atualizado.
  • Interação com a API do GPT para fornecer respostas precisas.
  • Uma interface amigável e intuitiva criada com WPF.
  • Feedback visual durante as consultas para melhor experiência do usuário.

Por que eu escolhi o Notion como Repositório de Conhecimento

Eu escolhi o Notion devido à sua flexibilidade e facilidade para organizar e atualizar informações. Ao utilizá-lo como base de conhecimento, posso garantir que os dados estejam sempre atualizados em tempo real, bastando apenas alterar o conteúdo diretamente na plataforma do Notion. Isso é especialmente útil para o meu escritório de projetos de engenharia, permitindo que toda a equipe tenha acesso às informações mais recentes rapidamente.

Extração Automática e Estruturada de Conteúdo

A aplicação utiliza a API oficial do Notion para recuperar automaticamente os conteúdos armazenados nas páginas. Isso é feito através de requisições HTTP que acessam blocos específicos dentro do Notion:

string url = $"https://api.notion.com/v1/blocks/{pageId}/children?page_size=100";

O conteúdo recuperado é então tratado para garantir que todas as informações relevantes sejam capturadas, independentemente da estrutura interna utilizada no Notion (parágrafos, listas, citações, etc.). Um exemplo de tratamento do conteúdo:

var texts = typedBlock?.rich_text;
if (texts is Newtonsoft.Json.Linq.JArray arr && arr.Count > 0)
{
    foreach (var txt in arr)
    {
        var content = txt?["text"]?["content"]?.ToString();
        if (!string.IsNullOrEmpty(content))
        {
            textBuilder.Append(content);
        }
    }
}

Esse método assegura robustez e flexibilidade ao lidar com diferentes formatos de texto do Notion.

Precisão das Respostas com GPT

A aplicação utiliza o GPT da OpenAI para responder perguntas feitas pelos usuários com base exclusivamente no conhecimento extraído do Notion. Para garantir que a resposta seja específica e baseada apenas no conteúdo disponível, o prompt enviado ao GPT é cuidadosamente estruturado:

var mensagens = new[]
{
    new { role = "system", content = "Você é um assistente de perguntas. Responda apenas com base no conhecimento abaixo." },
    new { role = "user", content = $"Conhecimento:\n{knowledge}\n\nPergunta: {question}" }
};

Esse formato garante respostas altamente relevantes e reduz o risco de imprecisões ou desvios.

Interface WPF Integrada ao Revit

Essa aplicação é integrada diretamente ao Autodesk Revit, permitindo que minha equipe faça consultas diretamente no ambiente onde os projetos estão sendo desenvolvidos. A interface gráfica criada com WPF oferece uma interação simples e agradável, incluindo:

  • Um campo dedicado para inserção da pergunta.
  • Um botão intuitivo para enviar a pergunta.
  • Uma área clara para visualização das respostas recebidas.

Exemplo do layout simples e eficiente:

<Label Content="Pergunta:"/>
<TextBox x:Name="textBoxSearch"/>

<Label Content="Resposta:"/>
<TextBox x:Name="textBoxResponse" IsReadOnly="True" TextWrapping="Wrap"/>

<Button x:Name="buttonApply" Content="Perguntar" Click="buttonApply_Click"/>

Aplicação dentro do Revit

Feedback Visual para Melhor Experiência

Uma boa aplicação não pode negligenciar a experiência do usuário. Por isso, implementei um feedback visual claro durante o carregamento das respostas, garantindo que o usuário esteja sempre informado sobre o andamento do processo. Este feedback inclui:

  • Desabilitação temporária e mudança visual do botão durante o carregamento.

Trecho de exemplo em código:

buttonApply.IsEnabled = false;
buttonApply.Content = "Processando...";
buttonApply.Background = Brushes.Gray;

// Processamento da pergunta e resposta aqui

buttonApply.IsEnabled = true;
buttonApply.Content = "Perguntar";
buttonApply.Background = (Brush)new BrushConverter().ConvertFromString("#007ACC");

Esses detalhes tornam a aplicação muito mais profissional e agradável de utilizar diretamente dentro do Revit.

Conclusão

A integração do Notion com o GPT diretamente em uma aplicação WPF integrada ao Revit exemplifica como tecnologias modernas podem ser combinadas para fornecer soluções práticas, inteligentes e altamente eficientes para escritórios de engenharia e arquitetura. Com essa aplicação, a equipe pode acessar rapidamente as informações atualizadas diretamente no ambiente onde trabalha, otimizando processos e aumentando a produtividade.

Se você tem interesse em aplicações similares ou quer saber mais detalhes técnicos sobre essa integração, deixe seu comentário ou entre em contato comigo!