Rechercher dans la base de données awesome-ChatGPT-repositories : "$ARGUMENTS"
Instructions
Étape 1 — Interpréter la requête
La requête de l'utilisateur est : "$ARGUMENTS"
Modificateurs de requête supportés :
category:<name>— filtrer par une catégorielanguage:<lang>— filtrer par langage de programmationlist categoriesoucategories— aller à l'étape 5b- Texte brut — recherche par mot-clé dans toutes les catégories
Les descriptions sont en anglais, donc convertissez les requêtes non-anglaises en mots-clés anglais avant de chercher.
Exemples : | Requête utilisateur | Mots-clés anglais à chercher | |------------|---------------------------| | RAGを使ったチャットボット | RAG, retrieval, chatbot, vector | | 코드 생성 도구 (Korean) | code generation, copilot, autocomplete | | 中文问答系统 | chinese, QA, question answering | | outil de résumé (French) | summarization, summary, text | | LLMを使ったエージェント | agent, autonomous, LLM, tool use |
Conseils sur les mots-clés :
- Utilisez des radicaux, pas des mots complets. La correspondance de sous-chaîne capture les variantes :
embed→ embedding/embeddings,retriev→ retrieval/retrieve,classif→ classification/classifier,generat→ generation/generative,fine-tun→ fine-tune/fine-tuning,summari→ summarize/summarization,orchestrat→ orchestrate/orchestration. - Ajoutez des noms spécifiques au domaine. Pour les domaines courants LLM/IA, incluez les noms d'outils ou frameworks bien connus présents dans la base de données :
| Domaine (indice de requête) | Mots-clés radicaux | Noms d'outils/bibliothèques à ajouter |
|---|---|---|
| RAG / 検索拡張生成 | retriev, rag, embed, vector |
langchain, llamaindex, haystack, faiss, chroma, pinecone |
| Agent / エージェント | agent, autonom, orchestrat |
autogpt, langchain, langgraph, crewai |
| Fine-tuning / ファインチューニング | fine-tun, lora, peft, finetun |
lora, peft, qlora |
| Code generation / コード生成 | code, coding, copilot, autocomplet |
copilot, codex, interpreter |
| Chatbot / チャットボット | chat, bot, dialog, convers |
discord, telegram, slack |
| Prompt engineering | prompt, few-shot, chain-of-thought, jailbreak |
promptflow, dspy |
| Evaluation / 評価 | evaluat, benchmark, metric |
evals, lm-eval, deepeval |
| Image / 画像生成 | image, vision, multimodal |
dall-e, stable-diffusion, midjourney |
| Voice / 音声 | voice, speech, audio, tts, asr |
whisper, eleven |
- Visez 3–6 mots-clés. Trop peu en manquent, trop beaucoup gonflent les correspondances partielles de faible qualité.
Étape 2 — Chercher les fichiers de données avec grep
Les données sont divisées en fichiers par catégorie. Chaque fichier est un array JSON avec un enregistrement de repo par ligne, vous pouvez utiliser grep pour trouver des correspondances au lieu de lire les fichiers entiers — cela garde l'usage de tokens bas (une requête type tire quelques dizaines de lignes correspondantes au lieu de centaines de KB). Champs par enregistrement :
u: URL GitHub ·n: nom du repository ·d: description anglaisec: catégorie ·l: langage (optionnel) ·t: topics séparés par des virgules (optionnel)sc: score de qualité 0–8 ·st: nombre d'étoiles (optionnel) ·ns: score d'étoiles normalisé 0–10 (optionnel)
Liste des fichiers (tous sous data/ relatif à ce plugin ; six catégories sur ~200 entrées sont divisées a/b) :
| Catégorie | Fichier(s) |
|---|---|
| Awesome-lists | repos-awesome-lists.json |
| Prompts | repos-prompts.json |
| Chatbots | repos-chatbots-a.json, repos-chatbots-b.json |
| Browser-extensions | repos-browser-extensions-a.json, repos-browser-extensions-b.json |
| CLIs | repos-clis-a.json, repos-clis-b.json |
| Reimplementations | repos-reimplementations.json |
| Tutorials | repos-tutorials.json |
| NLP | repos-nlp-a.json, repos-nlp-b.json |
| Langchain | repos-langchain.json |
| Unity | repos-unity.json |
| Openai | repos-openai-a.json, repos-openai-b.json |
| Others | repos-others-a.json, repos-others-b.json |
Quels fichiers chercher — choisissez l'ensemble minimum qui couvre la requête, puis appliquez grep (ci-dessous) :
Règle A — category: spécifiée : cherchez uniquement le(s) fichier(s) de cette catégorie, ignorez le routage ci-dessous.
Faites correspondre le nom de catégorie sans sensibilité à la casse et acceptez les variantes courantes :
cli/clis/command-line → CLIs · chatbot/bot/chatbots → Chatbots · browser/extension/browser-extension → Browser-extensions · prompt/prompts → Prompts · tutorial/tutorials → Tutorials · reimpl/reimplementation → Reimplementations · awesome/lists → Awesome-lists · open ai/openai → Openai. Si la valeur ne correspond à aucune catégorie, utilisez le routage par mots-clés (Règle C).
Règle B — list categories : ignorez toutes les lectures de fichiers, allez à l'étape 5b.
Règle C — routage par mots-clés pour les requêtes générales :
Utilisez les mots-clés anglais de l'étape 1 (pas le texte de la requête originale) pour le routage.
Pour chaque ligne ci-dessous, vérifiez si un mot-clé anglais contient ou correspond aux termes listés (correspondance de sous-chaîne, sans sensibilité à la casse).
Utilisez les fichier(s) de cette ligne uniquement s'il y a une correspondance.
Si plusieurs lignes correspondent, collectez tous leurs fichiers (dédupliqués).
Si aucune ligne ne correspond, utilisez le défaut : repos-chatbots-a.json, repos-nlp-a.json, repos-openai-a.json, repos-others-a.json.
| Si la requête mentionne… | Cherchez ces fichiers |
|---|---|
| chatbot, bot, chat, dialog, conversation, assistant, discord, slack | repos-chatbots-a.json, repos-chatbots-b.json |
| RAG, retrieval, vector, embed, semantic, FAISS, Chroma, Pinecone, similarity, index | repos-nlp-a.json, repos-nlp-b.json, repos-langchain.json |
| NLP, text, classify, classification, NER, POS, sentiment, translation, extraction, summariz | repos-nlp-a.json, repos-nlp-b.json |
| agent, agentic, workflow, autonomous, orchestrat, tool use, function call, multi-agent | repos-others-a.json, repos-others-b.json, repos-langchain.json |
| OpenAI, GPT-3, GPT-4, gpt4, gpt3, completion, fine-tun, API key, endpoint | repos-openai-a.json, repos-openai-b.json |
| browser, extension, Chrome, Firefox, sidebar, popup, Tampermonkey | repos-browser-extensions-a.json, repos-browser-extensions-b.json |
| CLI, terminal, shell, command-line, command line | repos-clis-a.json, repos-clis-b.json |
| tutorial, learn, course, beginner, guide, example, cookbook, sample | repos-tutorials.json |
| prompt, prompting, few-shot, chain-of-thought, jailbreak, injection | repos-prompts.json |
| Unity, game engine, 3D, game development | repos-unity.json |
| LangChain, LlamaIndex, Haystack, chain, index, LangGraph | repos-langchain.json |
| lora, peft, qlora, finetun, fine-tuning, quantiz | repos-reimplementations.json, repos-nlp-a.json, repos-openai-a.json |
| evaluat, benchmark, metric, assess, leaderboard | repos-nlp-a.json, repos-nlp-b.json, repos-others-a.json |
| reimplement, from scratch, reproduce, train, training, PyTorch | repos-reimplementations.json |
| awesome list, curated, collection, survey, compilation | repos-awesome-lists.json |
| code, coding, IDE, VS Code, copilot, autocomplete, interpreter | repos-others-a.json, repos-others-b.json, repos-clis-a.json |
| image, vision, multimodal, DALL-E, Stable Diffusion, drawing | repos-others-a.json, repos-nlp-a.json |
| voice, speech, audio, TTS, ASR, Whisper | repos-others-a.json, repos-nlp-b.json |
Puis appliquez grep à ces fichiers pour les mots-clés — n'ouvrez PAS les fichiers entiers avec l'outil Read. Localisez le répertoire data une fois :
DATA="$(find "${HOME}/.claude/plugins" "${PWD}" -type d -name data -path "*awesome-chatgpt-search*" 2>/dev/null | head -1)"
Ensuite, appliquez grep aux fichiers sélectionnés pour vos mots-clés de l'étape 1 et limitez la sortie. Utilisez -F (correspondance de sous-chaîne littérale — même sémantique que l'étape de scoring, et sûr pour les mots-clés comme c++ ou .net) avec un -e par mot-clé :
grep -ihF -e keyword1 -e keyword2 -e keyword3 "$DATA"/repos-nlp-a.json "$DATA"/repos-nlp-b.json | head -120
Chaque ligne de sortie est un enregistrement de repo (un objet JSON) qui a correspondance à au moins un mot-clé — notez ces lignes directement à l'étape 4. Cela lit uniquement les repos correspondants, pas les fichiers entiers. Notes :
- Si grep retourne moins de ~8 lignes, élargissez les mots-clés (ajoutez des radicaux/noms d'outils de l'étape 1) et relancez.
- S'il retourne la limite
headcomplète, vos mots-clés sont bons ; continuez. - N'utilisez l'outil Read que sur des fichiers individuels si
grepn'est pas disponible.
Étape 3 — Filtrer par langage (si language:<lang> a été donné)
Ajoutez un filtre de langage au pipeline grep (le champ l contient le langage, correspondance insensible à la casse) :
grep -ihF -e keyword1 -e keyword2 "$DATA"/repos-clis-a.json "$DATA"/repos-clis-b.json | grep -iF '"l":"<lang>"' | head -120
Étape 4 — Noter les candidats
En utilisant les mots-clés anglais de l'étape 1, calculez un score de pertinence pour chaque enregistrement de repo retourné par grep :
Score de correspondance textuelle (insensible à la casse, par mot-clé) :
- Correspondance exacte du nom (
n) : +20 pts - Le nom (
n) contient le mot-clé : +10 pts - La description (
d) contient le mot-clé : +5 pts - Les topics (
t) contiennent le mot-clé : +3 pts - La catégorie (
c) contient le mot-clé : +2 pts
Bonus de popularité (ajouté une fois par élément) :
- Si
ns(score d'étoiles normalisé) est présent :min(4, ns * 0,4) - Sinon :
min(4, sc * 0,5)
Bonus de qualité (toujours ajouté) : min(2, sc * 0,25)
Score combiné = text_match + popularity_bonus + quality_bonus
Excluez les éléments avec text_match < 5 (capture uniquement les correspondances partielles accidentelles). Collectez les 20 meilleurs candidats par score combiné.
Étape 5a — Re-classer avec votre jugement
Appliquez le jugement sémantique pour produire la liste ordonnée finale de jusqu'à 10 résultats.
Re-classez en évaluant chaque candidat sur :
- Centralité sémantique — dans quelle mesure ce repo aborde-t-il directement l'intention centrale de la requête ?
- Signal de qualité — un
scplus élevé signifie un projet plus riche et mieux documenté. - Adéquation à la catégorie — faites correspondre le type de repo au besoin implicite :
- "construire un chatbot / ボット" → préférez
Chatbots,CLIs - "apprendre / tutorial / 勉強" → préférez
Tutorials - "prompt engineering" → préférez
Prompts - "utiliser depuis le navigateur" → préférez
Browser-extensions - "tâche NLP" → préférez
NLP,Langchain - "OpenAI API" → préférez
Openai
- "construire un chatbot / ボット" → préférez
- Spécificité — un repo spécialisé pour le cas d'usage exact bat un général.
- Adéquation du langage — si l'utilisateur a implicitement indiqué un langage, préférez les repos avec un
lcorrespondant.
Étape 5b — Lister les catégories (seulement si la requête était list categories / categories)
Ignorez la notation. Présentez :
## Catégories disponibles
| Catégorie | Nombre |
|----------|-------|
| Awesome-lists | 96 |
| Prompts | 184 |
| Chatbots | 379 |
| Browser-extensions | 252 |
| CLIs | 240 |
| Reimplementations | 42 |
| Tutorials | 21 |
| NLP | 412 |
| Langchain | 178 |
| Unity | 17 |
| Openai | 325 |
| Others | 461 |
| **Total** | **2 607** |
Étape 6 — Formater la sortie
## Résultats de recherche pour "$ARGUMENTS"
*(Recherché : keyword1, keyword2, ...)*
Trouvé N résultat(s).
### 1. [repository-name](url)
**Catégorie :** category · **Langage :** language · ⭐ {st} stars
Description text here.
*Topics: tag1, tag2, tag3*
### 2. ...
Omettez la ligne Language si l est absent. Omettez ⭐ stars si st est absent. Omettez la ligne Topics si t est absent.
Si aucun résultat trouvé, suggérez des mots-clés alternatifs et créez un lien vers : https://github.com/taishi-i/awesome-ChatGPT-repositories
Étape 7 — Guide de sélection de cas d'usage en sortie
Après la liste des résultats de recherche, ajoutez une table de guide pour aider les utilisateurs à choisir le bon repo pour leur situation spécifique.
Faites correspondre l'en-tête de section et la langue du tableau à la langue de la requête — si la requête était en japonais, utilisez le japonais pour l'en-tête et les en-têtes de colonne ; sinon utilisez l'anglais.
## Guide de sélection de cas d'usage
| Cas d'usage | Recommandé | Score | Pourquoi |
|---|---|---|---|
| ... | [name](url) | sc=N | courte raison |
Règles :
- Listez 3–6 cas d'usage distincts dérivés des 10 meilleurs résultats. Chaque ligne doit représenter un scénario significativement différent (p. ex. « déployer un chatbot auto-hébergé » vs. « construire un pipeline RAG »), pas juste une reformulation de la requête.
- Pour chaque ligne, sélectionnez le single meilleur repo des 10 meilleurs résultats.
- Colonne Score : affichez
sc=Nen utilisant le score de qualité de l'élément. - Pourquoi : écrivez une raison de 10–15 mots dans la langue de la requête expliquant le bénéfice pratique. Ne copiez pas la description verbatim.
- Si deux cas d'usage correspondent au même repo, fusionnez-les en une ligne ou supprimez le plus faible.
- S'il y a moins de 3 cas d'usage significativement distincts dans les résultats, affichez autant de lignes que cela a du sens (minimum 1).