| name | agentic-research-and-arxiv |
| description | Veille scientifique et extraction d'insights sur arXiv. |
| version | 2.0.0 |
| author | EVA Agent |
| license | PrivĂ©e EVA St-Ătienne |
| platforms | ["linux","macos","windows"] |
| tags | ["arxiv","recherche","veille-scientifique","extraction-connaissances","agentic-skills"] |
| keywords | ["arXiv API","crawling académique","synthÚse de littérature","skill-generation"] |
Recherche Agentique à partir de Sources Académiques
Vue d'ensemble
La recherche agentique dĂ©signe la capacitĂ© d'un agent IA Ă conduire de maniĂšre autonome une revue de littĂ©rature scientifique, Ă en extraire les concepts clĂ©s, et Ă les transformer en compĂ©tences rĂ©utilisables (skills). Cette compĂ©tence formalise un pipeline complet allant de la formulation de requĂȘtes ciblĂ©es sur des dĂ©pĂŽts comme arXiv jusqu'Ă la gĂ©nĂ©ration de nouvelles capacitĂ©s agentiques.
L'objectif est double :
- Automatiser la veille : remplacer les recherches manuelles répétitives par un agent capable d'interroger des API, de filtrer les résultats et de hiérarchiser les articles pertinents.
- Capitaliser les découvertes : convertir les résultats de recherche en fichiers
SKILL.md opérationnels, intégrés au catalogue de l'agent.
Quand utiliser cette compétence
| Scénario | Pertinence |
|---|
| Vous devez suivre l'Ă©tat de l'art sur un domaine en Ă©volution rapide (ex. systĂšmes multi-agents, RLHF, agents LLM) | ĂlevĂ©e |
| Vous souhaitez gĂ©nĂ©rer automatiquement des fiches de compĂ©tences Ă partir de papiers de recherche | ĂlevĂ©e |
| Vous explorez un nouveau champ de recherche et avez besoin d'une synthÚse structurée | Moyenne |
| Vous cherchez un article spĂ©cifique dont vous connaissez dĂ©jĂ l'identifiant | Faible (prĂ©fĂ©rer une requĂȘte directe) |
Architecture du pipeline de recherche
[RequĂȘte] â [API arXiv] â [Filtrage & Extraction] â [SynthĂšse] â [GĂ©nĂ©ration SKILL.md]
â |
âââââââââââââââ Boucle d'itĂ©ration (affinement des mots-clĂ©s) âââââââââââ
1. Identification des domaines cibles
1.1 Catégories arXiv pertinentes
| Catégorie | Sous-catégories recommandées | Domaine |
|---|
cs.AI | Intelligence Artificielle | Généraliste |
cs.MA | Multi-Agent Systems | SystĂšmes multi-agents |
cs.LG | Machine Learning | Apprentissage automatique |
cs.CL | Computation and Language | NLP, LLM |
cs.RO | Robotics | Robotique |
stat.ML | Machine Learning (statistique) | Méthodes bayésiennes |
math.OC | Optimization and Control | Optimisation |
1.2 Affinage par domaine spécifique
Pour les recherches ciblées, combinez une catégorie avec des mots-clés :
CATEGORIES_CIBLES = {
"systemes_multi_agents": ["cs.MA", "cs.AI"],
"planification_taches": ["cs.AI", "cs.RO"],
"apprentissage_renforcement": ["cs.LG", "stat.ML"],
"industrie_4.0": ["cs.AI", "cs.SY", "eess.SY"],
}
2. Interrogation des API de dépÎts académiques
2.1 API arXiv â RequĂȘtes avancĂ©es
L'API arXiv expose une interface REST simple. La construction de la requĂȘte respecte le format :
https://export.arxiv.org/api/query?search_query=QUERY&start=0&max_results=N&sortBy=relevance&sortOrder=descending
Opérateurs booléens
| Opérateur | RÎle | Exemple |
|---|
AND | Intersection stricte | all:multi-agent AND all:reinforcement+learning |
OR | Union large | all:transformer OR all:attention+mechanism |
ANDNOT | Exclusion | all:robot ANDNOT all:hardware |
Exemple complet avec curl
curl -s "https://export.arxiv.org/api/query?search_query=\
(all:\"multi-agent+systems\"+AND+all:\"task+planning\")+\
AND+cat:cs.AI&start=0&max_results=15&sortBy=submittedDate&sortOrder=descending" \
| grep -oP '<id>https?://arxiv\.org/abs/\K[^<]+'
Note : L'API arXiv limite chaque requĂȘte Ă max_results=300 maximum. Pour les recherches volumineuses, utilisez le paramĂštre start pour paginer (start=0, start=100, ...).
2.2 API Semantic Scholar (complément)
Semantic Scholar fournit des métriques de citation et des recommandations :
import requests, json
def chercher_semantic_scholar(requete: str, limite: int = 10) -> list[dict]:
"""Recherche des articles via l'API Semantic Scholar.
Args:
requete: Termes de recherche.
limite: Nombre maximum de résultats.
Returns:
Liste de dictionnaires avec titre, résumé, année, nombre de citations.
"""
url = "https://api.semanticscholar.org/graph/v1/paper/search"
params = {"query": requete, "limit": limite, "fields": "title,abstract,year,citationCount"}
reponse = requests.get(url, params=params)
reponse.raise_for_status()
return reponse.json().get("data", [])
2.3 Parsing XML des réponses arXiv
Les réponses de l'API arXiv sont au format Atom XML. Voici un parseur robuste :
import xml.etree.ElementTree as ET
NAMESPACES = {
"atom": "http://www.w3.org/2005/Atom",
"arxiv": "http://arxiv.org/schemas/atom",
}
def extraire_articles(xml_brut: str) -> list[dict]:
"""Extrait les métadonnées des articles depuis une réponse XML arXiv.
Args:
xml_brut: Réponse XML brute de l'API arXiv.
Returns:
Liste d'articles avec titre, résumé, lien PDF, auteurs, catégories.
"""
root = ET.fromstring(xml_brut)
articles = []
for entry in root.findall("atom:entry", NAMESPACES):
article = {
"id": entry.find("atom:id", NAMESPACES).text.strip(),
"titre": entry.find("atom:title", NAMESPACES).text.strip().replace("\n", " "),
"resume": entry.find("atom:summary", NAMESPACES).text.strip().replace("\n", " "),
"pdf": entry.find("atom:link[@title='pdf']", NAMESPACES).attrib["href"],
"auteurs": [a.find("atom:name", NAMESPACES).text for a in entry.findall("atom:author", NAMESPACES)],
"categories": [c.attrib["term"] for c in entry.findall("atom:category", NAMESPACES)],
}
articles.append(article)
return articles
3. Extraction et synthĂšse des insights
3.1 CritĂšres de filtrage
Une fois les articles récupérés, appliquez une grille de notation pour hiérarchiser leur pertinence :
| CritÚre | Pondération | Description |
|---|
| Alignement sémantique | 40 % | Correspondance entre le résumé et le domaine cible |
| Nouveauté | 25 % | Date de soumission (< 6 mois = score max) |
| Impact | 20 % | Nombre de citations (via Semantic Scholar) |
| Applicabilité agentique | 15 % | Potentiel de transformation en compétence réutilisable |
3.2 Génération de compétence à partir d'un article
def generer_skill_depuis_article(article: dict) -> str:
"""GénÚre un squelette de fichier SKILL.md à partir d'un article.
Args:
article: Dictionnaire contenant les métadonnées de l'article.
Returns:
Contenu markdown du fichier SKILL.md.
"""
nom_skill = article["titre"].lower().replace(" ", "-")[:50]
return f"""---
name: {nom_skill}
description: "Compétence générée depuis l'article : {article['titre']}"
version: 1.0.0
author: Généré automatiquement
license: PrivĂ©e EVA St-Ătienne
plateformes: [linux, macos, windows]
source: {article['id']}
---
# {article['titre']}
## Résumé de l'article
{article['resume'][:500]}
## Insights clés pour l'agent
<!-- Insights extraits automatiquement â Ă rĂ©viser manuellement -->
## Implémentation suggérée
<!-- à compléter avec des extraits de code ou des patrons d'appel outil -->
## Références
- PDF : {article['pdf']}
- Catégories : {', '.join(article['categories'])}
"""
4. PiĂšges courants (Pitfalls)
4.1 RequĂȘtes trop spĂ©cifiques ou trop larges
ProblĂšme : Une requĂȘte comme all:"exact phrase with many words that never appears" renvoie zĂ©ro rĂ©sultat, tandis que all:agent renvoie des milliers d'articles non pertinents.
Solution : Utilisez la méthode de la pyramide. Commencez large (all:reinforcement+learning), puis ajoutez des filtres un par un (AND all:multi-agent, AND cat:cs.MA).
4.2 Ignorer les limites de taux de l'API
ProblĂšme : L'API arXiv bloque les requĂȘtes excessives (plus d'une requĂȘte toutes les 3 secondes).
Solution : ImplĂ©mentez un dĂ©lai entre les requĂȘtes :
import time
def requete_avec_backoff(url: str, tentatives: int = 3) -> str:
"""Effectue une requĂȘte HTTP avec backoff exponentiel."""
for i in range(tentatives):
try:
reponse = requests.get(url, timeout=30)
reponse.raise_for_status()
return reponse.text
except requests.RequestException:
if i == tentatives - 1:
raise
time.sleep(2 ** i)
return ""
4.3 Oublier les préférences de tri
ProblĂšme : Par dĂ©faut, arXiv trie par pertinence, pas par date. Les articles les plus rĂ©cents peuvent ĂȘtre noyĂ©s.
Solution : Spécifiez toujours sortBy=submittedDate&sortOrder=descending pour la veille chronologique.
4.4 Confondre résumé et contenu intégral
ProblÚme : Le résumé (abstract) ne contient pas toujours les détails d'implémentation nécessaires pour créer une compétence.
Solution : AprÚs filtrage sur résumé, téléchargez le PDF (web_extract ou browser) pour une analyse approfondie des sections "Method" et "Experiments".
5. Checklist de validation
6. Extensions et intégrations
6.1 Veille automatisée (cron)
Combinez cette compétence avec le planificateur cron d'EVA pour une exécution périodique :
veille_arxiv:
schedule: "0 9 * * 1"
skill: agentic-research-and-arxiv
params:
categories: ["cs.MA", "cs.AI"]
mots_cles: ["multi-agent", "task planning", "coordination"]
max_results: 20
generer_skills: true
6.2 Combinaison avec d'autres compétences
research-multi-agent-complex-tasks : pour approfondir les aspects planification de tĂąches.
rag-retrieval-augmented-generation : pour intégrer les articles récupérés dans un pipeline RAG.
semantic-scholar-queries : pour enrichir les données de citation.
7. Ressources associées
references/arxiv_search_patterns.md : Catalogue de requĂȘtes prĂ©-construites par domaine.
references/research-first-approach.md : RÚgle comportementale : toujours chercher sur le web avant d'improviser quand les compétences sont absentes.
scripts/arxiv_bulk_search.py : Script pour la recherche par lots avec pagination automatique.
scripts/generate_skill_from_papers.py : Générateur de squelettes SKILL.md.
Documentation maintenue par EVA Agent â DerniĂšre mise Ă jour : 2025