Hermes rencontre Perplexity Search : une seule API key pour améliorer web_search et web_extract

La recherche web de votre agent vous a-t-elle déjà laissé tomber ? Vous demandez « quelle est la dernière version stable de ce framework en 2026 » et il vous sort des tutoriels vieux de trois ans — ou bien le canal de recherche gratuit se fait limiter en plein milieu de la tâche et vous ne pouvez qu’essayer à nouveau. Face à ce genre de situation, la plupart des gens pensent d’abord à changer de modèle, mais le vrai levier, c’est le backend de recherche : les outils web d’Hermes sont interchangeables, et vous choisissez le fournisseur indépendamment. Le 4 septembre, l’API Search de Perplexity a rejoint le dépôt officiel, s’ajoutant à Exa, Parallel, Tavily, Firecrawl et Keenable comme nouveau backend à clé : avec une seule API key, web_search comme web_extract peuvent tourner sur un moteur inédit. Cet article explique pourquoi changer, comment configurer, et le petit piège qui fait trébucher tout le monde.
D’abord, le modèle mental : deux outils, un backend interchangeable
Hermes répartit l’accès au web entre deux outils :
web_search— à partir de votre question, trouve des pages candidates et renvoie titres, URLs et courtes descriptions ;web_extract— à partir d’URLs concrètes, lit et résume le contenu d’une page.
Le fournisseur qui sert chaque outil est contrôlé par web.search_backend et web.extract_backend (ou par web.backend, qui règle les deux d’un coup). Si vous n’avez jamais configuré de backend, vous n’êtes pas perdu : Hermes embarque un mécanisme de rotation gratuit sans configuration qui fonctionne dès l’installation — voir 5 canaux de recherche gratuits : la recherche web sans prise de tête ni API key. Cet article concerne la voie payante de montée en gamme : quand la qualité ou la stabilité des canaux gratuits ne suffit plus, on pointe le backend vers une API de recherche commerciale en qui l’on a confiance.
Ce qu’est Perplexity, et pourquoi ça vaut le coup d’essayer
Perplexity est le produit de recherche IA que beaucoup utilisent déjà au quotidien, construit sur son propre index web. Cet index est désormais ouvert à Hermes via l’API Search :
- Des résultats classés et datés, issus de l’index propre de Perplexity — pour des requêtes du type « dernière version » ou « événements récents », la probabilité de remonter de vieilles pages en tête est bien plus faible qu’avec les canaux gratuits à base de scraping ;
- Les requêtes
web_searchutilisentsearch_context_size: low, ce qui garde chaque snippet à la longueur d’une description — de quoi laisser le modèle décider s’il doit ouvrir la page, sans bourrer votre fenêtre de contexte de kilooctets de texte ; web_extractutilise le même endpoint d’« extraits pertinents » que le CLI officielpplx— vous récupérez les passages de chaque page qui comptent pour la requête, et non la page entière (plus de détails ci-dessous — c’est le piège facile à rater).
Une limite à reconnaître honnêtement : Perplexity n’a aucun niveau gratuit anonyme. C’est un fournisseur payant, facturé à la requête, qui n’intègre donc pas le cercle de rotation gratuit sans configuration d’Hermes — si vous voulez une recherche totalement gratuite, restez sur les canaux de l’article lié ci-dessus ; si vous voulez une qualité fiable, voici l’option à considérer.
Configuration en trois étapes
Étape 1 — obtenez une clé. Générez-en une sur https://www.perplexity.ai/account/api.
Étape 2 — placez la clé dans votre environnement. Ajoutez une ligne à ~/.hermes/.env :
PERPLEXITY_API_KEY=pplx-your-key
Ou définissez-la avec une commande (effet identique) :
hermes config set env.PERPLEXITY_API_KEY pplx-your-key
Si votre réseau exige un proxy, ou si vous voulez pointer vers une gateway auto-hébergée, une variable PERPLEXITY_BASE_URL optionnelle remplace l’URL par défaut https://api.perplexity.ai.
Étape 3 — basculez le backend sur Perplexity. Les deux options fonctionnent :
# Option A : choisir Perplexity dans le sélecteur interactif
hermes tools
# Option B : écrire la config directement
hermes config set web.backend perplexity
Pour un contrôle plus fin, vous pouvez ne changer qu’une seule capacité — par exemple, chercher via Perplexity tout en gardant l’extraction de pages complètes sur Firecrawl :
hermes config set web.search_backend perplexity
hermes config set web.extract_backend firecrawl
web.backend, web.search_backend et web.extract_backend sont de vrais champs de la section web de la config ; vérifiez avec hermes config get web.backend ou hermes status. Un détail bien pratique : si vous ne faites que renseigner la clé sans jamais choisir de backend explicitement, la stratégie « fournisseurs payants d’abord » d’Hermes adopte Perplexity automatiquement — il se place après Tavily et avant Exa dans l’ordre de préférence ; à l’inverse, si vous avez déjà configuré une autre clé payante, votre installation existante n’est pas dérangée.
Ce qui se passe sous le capot
L’implémentation (plugins/web/perplexity/provider.py) est simple :
web_searchappellePOST https://api.perplexity.ai/searchet mappe lesnippetde chaque résultat vers le champ description ; un appel unique renvoie au plus 20 résultats (la limite dure de Perplexity) ;web_extractappellePOST /sdk/content/snippets— la même route que celle derrière la commande officiellepplx content snippets. Un détail de conception à connaître :web_extractne porte aucune requête, Hermes déduit donc une requête de pertinence à partir des mots présents dans le chemin de l’URL — récupérerexample.com/docs/bloom-filterinterroge en réalité « bloom filter » ;- Chaque requête a un délai d’attente de 60 secondes ; quand une page ne produit pas de snippet, cette URL revient avec un champ
errorau lieu de faire échouer tout l’appel (un HTTP 200 ne signifie donc pas que toutes les pages ont réussi).
Le piège : les snippets ne sont pas la page entière
L’extract de Perplexity renvoie les passages pertinents pour la requête, avec des élisions marquées par des points de suspension (…), et non un dump verbatim de la page complète. Si vous avez besoin du texte intégral — disons, pour faire résumer un document entier par le modèle —, pointez web.extract_backend vers Firecrawl, Exa ou Parallel, qui prennent en charge l’extraction de pages complètes. Les snippets de Perplexity excellent quand vous voulez juger rapidement de quoi parle une page et si elle mérite une lecture approfondie ; combinez les deux approches et vous obtenez le meilleur des deux mondes.
Comment l’obtenir
Le backend a été fusionné dans le dépôt officiel le 4 septembre (PR #102055, commit f1ccf436a2) — soit après la dernière release, v0.21.0, publiée le 31 août, donc il n’est encore dans aucune release. Il vit aujourd’hui uniquement sur main ; une release stable l’intégrera au prochain cycle. Pour l’essayer dès maintenant, travaillez depuis la branche main ; sinon, attendez que hermes update vous signale une nouvelle version (vous pouvez suivre la chronologie dans nos notes de release v0.21.0).
Résumé
- Si la qualité de recherche déçoit, changez de backend avant de changer de modèle ;
- Une seule clé Perplexity active à la fois
web_search(résultats classés et datés) etweb_extract(snippets pertinents) — mais c’est payant et hors du cercle de rotation gratuit ; - Configurez avec
PERPLEXITY_API_KEY, basculez avecweb.backend, et scindez avecweb.search_backend/web.extract_backend; - Pour des pages complètes verbatim, gardez l’extract sur Firecrawl / Exa / Parallel — Perplexity ne renvoie que les passages pertinents ;
- Disponible uniquement sur
mainpour l’instant ; la prochaine release le rendra officiel.
Vous voulez aussi maîtriser le coût en tokens de vos recherches web ? Découvrez la mise en cache des résultats de recherche pour que les requêtes répétées cessent de brûler des tokens et la référence de la commande hermes config.