
O que você vai construir
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
1
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 (@/*)
2
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: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
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:Instalar o provedor OpenAI
Instale o provedor OpenAI para se conectar aos modelos da OpenAI:3
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.- Prévia
- Código

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
4
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 Isso importa os estilos necessários para renderizar conteúdo em Markdown nas respostas de mensagens.
app/globals.css:5
Crie a rota básica da API
Crie o endpoint da API de chat em Esta rota básica:
app/api/chat/route.ts. Essa rota vai lidar com as mensagens recebidas e transmitir as respostas da IA.- 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
6
Configurar variáveis de ambiente
Crie um arquivo Adicione sua chave de API da OpenAI:A variável
.env.local na raiz do projeto:OPENAI_API_KEY é necessária para o funcionamento do modelo de IA.7
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.

8
Adicionar ferramentas do Firecrawl
Agora vamos aprimorar o assistente com recursos de extração de dados da web e busca usando o Firecrawl.Adicione o seguinte código para definir as ferramentas de raspagem e busca na web:
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 pastalib e adicione um arquivo tools.ts dentro dela:lib/tools.ts
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
- 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
9
Atualize a rota da API com as ferramentas do Firecrawl
Agora atualize o arquivo
As principais mudanças em relação à rota básica:
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
Ver código completo de app/api/chat/route.ts
- 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
streamText: ai-sdk.dev/docs/reference/ai-sdk-core/stream-text.10
Adicione sua chave de API do Firecrawl
Atualize seu arquivo Obtenha sua chave de API do Firecrawl em firecrawl.dev.
.env.local para incluir sua chave de API da Firecrawl:11
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 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
streamText, com os resultados sendo transmitidos para o frontend em tempo real.
Principais recursos
Seleção de modelo
- GPT-5 Mini (Thinking): Modelo recente da OpenAI com capacidades avançadas de raciocínio
- GPT-4o Mini: Modelo rápido e econômico
Alternância de busca na web
- Ativado: a IA pode chamar as ferramentas
scrapeWebsiteesearchWebconforme necessário - Desativado: a IA responde apenas com o conhecimento com o qual foi treinada
Ideias de customização
Adicionar mais ferramentas
- 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
tools.
Alterar o modelo de IA
Personalize a interface
- Modificar os estilos nos arquivos dos próprios componentes
- Adicionar novas variantes aos componentes existentes
- Criar componentes personalizados que sigam o 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

