import FirecrawlApp from '@mendable/firecrawl-js';
import { openai } from '@ai-sdk/openai';
import { generateText, tool } from 'ai';
import { z } from 'zod';
console.log('Initialisation de Firecrawl...');
const firecrawl = new FirecrawlApp({ apiKey: process.env.FIRECRAWL_API_KEY });
const scrapeWebsiteTool = tool({
description: 'Scraper le contenu de n'importe quelle URL de site web',
inputSchema: z.object({
url: z.string().url().describe('L'URL à scraper')
}),
execute: async ({ url }) => {
console.log('Scraping :', url);
const result = await firecrawl.scrape(url, {
formats: ['markdown']
});
console.log('Aperçu du contenu scrapé :', result.markdown?.slice(0, 200) + '...');
return { content: result.markdown };
}
});
console.log('Génération de texte avec l'IA...');
const { text, toolCalls } = await generateText({
model: openai('gpt-5-nano'),
prompt: 'Qu'est-ce que Firecrawl ? Visitez firecrawl.dev et parlez-moi de ce service.',
tools: {
scrapeWebsite: scrapeWebsiteTool
},
});
console.log('Appels d'outils :', toolCalls);
// Poursuivre la conversation OU utiliser le texte pour autre chose