Crie um assistente de pesquisa com IA completo que possa fazer scraping de sites e buscar na web para responder perguntas. O assistente decide automaticamente quando usar ferramentas de scraping ou ferramentas de busca na web para reunir informações e, em seguida, fornece respostas abrangentes com base nos dados coletados.
O que você vai construir#
Uma interface de chat com IA em que os usuários podem fazer perguntas sobre qualquer assunto. O assistente de IA decide automaticamente quando usar ferramentas de scraping ou de busca na web para reunir informações e, então, fornece respostas completas com base nos dados coletados.
Pré-requisitos#
- Node.js 18 ou posterior instalado
- Uma chave de API da OpenAI em platform.openai.com
- Uma chave de API do Firecrawl em firecrawl.dev
- Conhecimentos básicos de React e Next.js
Criar um novo projeto do Next.js
Comece criando um novo projeto Next.js e navegue até o diretório do projeto:
Quando solicitado, selecione as seguintes opções:
- TypeScript: Sim
- ESLint: Sim
- Tailwind CSS: Sim
- App Router: Sim
- Usar diretório
src/: Não - Alias de importação: Sim (@/*)
Instale as dependências
Instalar pacotes do AI SDK#
O AI SDK é um kit de ferramentas em TypeScript que fornece uma API unificada para trabalhar com diferentes provedores de LLM:
Esses pacotes oferecem:
ai: SDK principal com streaming, chamamento de ferramentas e tratamento de respostas@ai-sdk/react: Hooks do React comouseChatpara criar interfaces de chatzod: Validação de esquemas para entradas de ferramentas
Saiba mais em ai-sdk.dev/docs.
Instalar o AI Elements#
O AI Elements fornece componentes de UI predefinidos para aplicações de IA. Execute o seguinte comando para gerar todos os componentes necessários:
Isso configura os AI Elements no seu projeto, incluindo componentes de conversa, exibição de mensagens, campos de prompt e visualizações de chamadas de ferramentas.
Documentação: ai-sdk.dev/elements/overview.
Instalar o provedor OpenAI#
Instale o provedor OpenAI para se conectar aos modelos da OpenAI:
Crie a interface de chat do front-end
Crie a página principal em app/page.tsx e copie o código da aba Code abaixo. Esta será a interface de chat onde os usuários interagem com o assistente de IA.
Entendendo o Frontend#
O frontend utiliza componentes AI Elements para fornecer uma interface de chat completa:
Principais Recursos:
- Exibição da conversa: O componente
Conversationlida automaticamente com a rolagem e a exibição das mensagens - Renderização de mensagens: Cada parte da mensagem é renderizada conforme seu tipo (texto, raciocínio, chamadas de ferramentas)
- Visualização de ferramentas: As chamadas de ferramenta são exibidas em seções recolhíveis que mostram entradas e saídas
- Controles interativos: os usuários podem ativar/desativar a pesquisa na web, escolher modelos e anexar arquivos
- Ações de mensagem: opções de copiar e tentar novamente para mensagens do assistente
Adicionar suporte para renderização de Markdown
Para garantir que o Markdown gerado pelo LLM seja renderizado corretamente, adicione a seguinte importação ao arquivo app/globals.css:
Isso importa os estilos necessários para renderizar conteúdo em Markdown nas respostas de mensagens.
Crie a rota básica da API
Crie o endpoint da API de chat em app/api/chat/route.ts. Essa rota vai lidar com as mensagens recebidas e transmitir as respostas da IA.
Esta rota básica:
- Recebe mensagens do frontend
- Usa o modelo da OpenAI selecionado pelo usuário
- Transmite as respostas de volta para o cliente
- Ainda não inclui ferramentas — vamos adicioná-las em seguida
Configurar variáveis de ambiente
Crie um arquivo .env.local na raiz do projeto:
Adicione sua chave de API da OpenAI:
A variável OPENAI_API_KEY é necessária para o funcionamento do modelo de IA.
Teste o chat básico
Agora você pode testar o chatbot do SDK de IA sem integração com o Firecrawl. Inicie o servidor de desenvolvimento:
Abra localhost:3000 no seu navegador e teste a funcionalidade básica de chat. O assistente deve responder às mensagens, mas ainda não terá recursos de web scraping ou de pesquisa.
Adicionar ferramentas do Firecrawl
Agora vamos aprimorar o assistente com recursos de extração de dados da web e busca usando o Firecrawl.
Instalar o SDK do Firecrawl#
O Firecrawl converte sites em formatos prontos para LLM, com recursos de extração e busca:
Crie o arquivo de ferramentas#
Crie uma pasta lib e adicione um arquivo tools.ts dentro dela:
Adicione o seguinte código para definir as ferramentas de raspagem e busca na web:
Entendendo as Ferramentas#
Ferramenta de Scrape de Site:
- Aceita uma URL como entrada (validada por um esquema Zod)
- Usa o método
scrapedo Firecrawl para obter a página em markdown - Extrai apenas o conteúdo principal para reduzir o uso de tokens
- Retorna o conteúdo extraído para a IA analisar
Ferramenta de Busca na Web:
- Aceita uma consulta com filtros opcionais
- Usa o método
searchdo Firecrawl para encontrar páginas relevantes - Suporta filtros avançados, como localização, intervalo de tempo e categorias de conteúdo
- Retorna resultados estruturados com títulos, URLs e descrições
Saiba mais sobre as ferramentas: ai-sdk.dev/docs/foundations/tools.
Atualize a rota da API com as ferramentas do Firecrawl
Agora atualize o arquivo app/api/chat/route.ts para incluir as ferramentas do Firecrawl que acabamos de criar.
Ver código completo de app/api/chat/route.ts
As principais mudanças em relação à rota básica:
- Importe
stepCountIsdo AI SDK - Importe as ferramentas do Firecrawl de
@/lib/tools - Adicione o objeto
toolscom as ferramentasscrapeWebsiteesearchWeb - Adicione
stopWhen: stepCountIs(5)para limitar as etapas de execução - Defina
toolChoicecomo "auto" quando a pesquisa na web estiver ativada e "none" caso contrário
Saiba mais sobre streamText: ai-sdk.dev/docs/reference/ai-sdk-core/stream-text.
Adicione sua chave de API do Firecrawl
Atualize seu arquivo .env.local para incluir sua chave de API da Firecrawl:
Obtenha sua chave de API do Firecrawl em firecrawl.dev.
Teste o aplicativo completo
Reinicie o servidor de desenvolvimento:
Abra localhost:3000 e teste o assistente aprimorado:
- Ative o botão "Search" para habilitar a pesquisa na web
- Pergunte: "Quais são os recursos mais recentes do firecrawl.dev?"
- Observe enquanto a IA chama a ferramenta
searchWebouscrapeWebsite - Veja a execução da ferramenta na UI com entradas e saídas
- Leia a análise da IA com base nos dados extraídos
Como funciona#
Fluxo de mensagens#
- Usuário envia uma mensagem: O usuário digita uma pergunta e clica em Enviar
- Frontend envia a solicitação:
useChatenvia a mensagem para/api/chatcom o modelo selecionado e a configuração de busca na web - Backend processa a mensagem: A rota da API recebe a mensagem e chama
streamText - IA decide sobre as ferramentas: O modelo analisa a pergunta e decide se deve usar
scrapeWebsiteousearchWeb(apenas se a busca na web estiver ativada) - Ferramentas executam: Se as ferramentas forem chamadas, o Firecrawl faz o scraping ou realiza a busca na web
- IA gera a resposta: O modelo analisa os resultados das ferramentas e gera uma resposta em linguagem natural
- Frontend exibe os resultados: A UI mostra as chamadas de ferramentas e a resposta final em tempo real
Processo de Chamada de Ferramentas#
O sistema de chamada de ferramentas do AI SDK (ai-sdk.dev/docs/foundations/tools) funciona da seguinte forma:
- O modelo recebe a mensagem do usuário e as descrições das ferramentas disponíveis
- Se o modelo determinar que é necessário usar uma ferramenta, ele gera uma chamada de ferramenta com parâmetros
- O SDK executa a função da ferramenta com esses parâmetros
- O resultado da ferramenta é enviado de volta ao modelo
- O modelo usa o resultado para gerar sua resposta final
Tudo isso acontece automaticamente em uma única chamada a streamText, com os resultados sendo transmitidos para o frontend em tempo real.
Principais recursos#
Seleção de modelo#
O aplicativo oferece suporte a vários modelos da OpenAI:
- GPT-5 Mini (Thinking): Modelo recente da OpenAI com capacidades avançadas de raciocínio
- GPT-4o Mini: Modelo rápido e econômico
Os usuários podem alternar entre os modelos usando o seletor suspenso.
Alternância de busca na web#
O botão Search controla se a IA pode usar as ferramentas do Firecrawl:
- Ativado: a IA pode chamar as ferramentas
scrapeWebsiteesearchWebconforme necessário - Desativado: a IA responde apenas com o conhecimento com o qual foi treinada
Isso dá aos usuários controle sobre quando usar dados da web versus o conhecimento embutido no modelo.
Ideias de customização#
Adicionar mais ferramentas#
Amplie o assistente com ferramentas adicionais:
- Consultas ao banco de dados para dados internos da empresa
- Integração ao CRM para buscar informações de clientes
- Envio de e-mails
- Geração de documentos
Cada ferramenta segue o mesmo padrão: defina um schema com Zod, implemente a função execute e registre-a no objeto tools.
Alterar o modelo de IA#
Substitua o OpenAI por outro provedor:
O SDK de IA oferece suporte a mais de 20 provedores com a mesma API. Saiba mais: ai-sdk.dev/docs/foundations/providers-and-models.
Personalize a interface#
Os componentes do AI Elements são criados com shadcn/ui, então você pode:
- Modificar o estilo dos componentes nos arquivos de cada componente
- Adicionar novas variantes aos componentes existentes
- Criar componentes personalizados alinhados ao sistema de design
Melhores práticas#
-
Use as ferramentas certas: Escolha
searchWebpara primeiro encontrar páginas relevantes,scrapeWebsitepara páginas individuais ou deixe a IA decidir -
Monitore o uso da API: Acompanhe o uso das APIs da Firecrawl e da OpenAI para evitar custos inesperados
-
Trate erros de forma adequada: As ferramentas incluem tratamento de erros, mas considere adicionar mensagens voltadas ao usuário
-
Otimize o desempenho: Use streaming para fornecer feedback imediato e considere colocar em cache conteúdo acessado com frequência
-
Defina limites razoáveis:
stopWhen: stepCountIs(5)evita chamadas excessivas de ferramentas e custos fora de controle

