Le widget conversationnel MrTopic utilise Cloudflare AI Search (AutoRAG) pour fournir des réponses intelligentes basées sur vos documents. Cette technologie combine la recherche sémantique et la génération de réponses pour créer une expérience conversationnelle naturelle.
Pour un site unique, configurez ces variables dans votre projet Vercel :
Pour gérer plusieurs sites avec des configurations Cloudflare différentes, utilisez le préfixe SITENAME_ :
Comment obtenir ces valeurs ?
lib/site-config.tsGestion centralisée de la configuration multi-site. Définit l'interface SiteConfig et les fonctions de récupération de configuration.
app/api/chat/route.tsPoint d'entrée API principal. Gère la validation des origines, l'authentification Cloudflare, et le streaming des réponses.
components/floating-chat-interface.tsxInterface utilisateur du chat. Gère l'enrichissement du contexte pour les questions de suivi et l'affichage des réponses.
public/widget.jsScript d'intégration pour les sites externes. Crée l'iframe et gère la communication avec le widget.
Le système vérifie que chaque requête provient d'un domaine autorisé configuré dans ALLOWED_DOMAINS.
Domaines toujours autorisés
v0.app et tous ses sous-domaines (pour les tests)localhost (en mode développement uniquement)Le système maintient automatiquement un historique de conversation et inclut systématiquement la question précédente (et sa réponse) dans chaque nouvelle requête. Cela permet à Cloudflare AI Search de mieux comprendre le contexte et de fournir des réponses plus pertinentes.
Pourquoi inclure la question ET la réponse précédentes ?
En incluant à la fois la question et la réponse précédentes, on fournit un contexte complet à Cloudflare AI Search. Cela permet de :
Limite de l'historique
Seuls les 4 derniers messages (2 échanges question-réponse) sont conservés et envoyés. Cela permet de maintenir un contexte pertinent sans surcharger l'API et garantit des temps de réponse optimaux.
Ajoutez ce code dans votre site :
<script src="https://votre-domaine.vercel.app/widget.js" data-site-id="default" data-mode="float" ></script>
Pour un site spécifique dans une configuration multi-site :
<script src="https://votre-domaine.vercel.app/widget.js" data-site-id="site1" data-mode="float" ></script>
Cause : Le domaine n'est pas dans ALLOWED_DOMAINS
Solution : Ajoutez votre domaine dans la variable d'environnement ALLOWED_DOMAINS (sans https:// et sans /)
Cause : Token API invalide ou expiré
Solution : Vérifiez que CLOUDFLARE_API_TOKEN est correct et que le token a les bonnes permissions
Cause : Aucun document pertinent trouvé dans votre RAG
Solution : Vérifiez que vos documents sont bien indexés dans Cloudflare AutoRAG et que la question est pertinente
Cause : Script mal intégré ou z-index trop bas
Solution : Vérifiez que le script est bien chargé (console du navigateur) et que data-site-id correspond à votre configuration
Endpoint principal pour envoyer des questions au système.
{
"query": "Quels sont les avantages ?",
"siteId": "default",
"parentOrigin": "https://monsite.com",
"history": [
{
"role": "user",
"content": "C'est quoi BEPOS ?"
},
{
"role": "assistant",
"content": "BEPOS signifie Bâtiment à Énergie Positive..."
}
]
}query (string, requis) - La question de l'utilisateursiteId (string, requis) - Identifiant du siteparentOrigin (string, requis) - Origine du site parenthistory (array, optionnel) - Historique de conversation (max 4 messages){
"content": "Les avantages d'un BEPOS incluent...",
"links": [
{
"title": "Guide BEPOS",
"url": "https://...",
"score": 0.95
}
]
}400 - Requête invalide (query manquante)403 - Origine non autorisée500 - Erreur serveur ou Cloudflare