Leçon 05 · planification

Connaissance du domaine chargée à la demande

「Don't put everything in the system prompt. Load on demand.」

⏱ ~10 min · 📝 3 widgets interactifs · 🧑‍💻 Basé sur shareAI-lab · s05_skill_loading.py

L’écueil de « l’invite système complète »

Vous disposez de 20 compétences, chacune étant écrite en détail : pdf-processing (comment lire un PDF), code-review (liste de contrôle de révision), git-workflow (routines git couramment utilisées)... Méthode intuitive : mettez-les toutes dans l'invite du système afin que le modèle puisse être consulté à tout moment.

Résultat :

  • Gravez entre 15 000 et 30 000 jetons d'entrée pour chaque appel (même si le problème ne nécessite aucune compétence).
  • L'attention du modèle est diluée : le respect des règles mentionnées dans la longue invite système diminuera.
  • Modifiez une compétence et le cache de toutes les conversations historiques sera invalidé.

La façon dont s05 est réalisé est de le diviser en deux couches.

architecture à deux niveaux

Couche 1 · Bon marché : seuls le nom de la compétence et une description en une phrase sont placés dans l'invite du système (environ 100 jetons chacun). 20 compétences = 2 000 jetons, acceptable.

# Liste de compétences dans l'invite système
Compétences disponibles :
  - pdf : traiter les fichiers PDF. Extrayez du texte, des tableaux, des métadonnées.
  - révision du code : liste de contrôle de révision systématique du code.
  - git-workflow : modèles courants de branchement et de rebase git.

Couche 2 · À la demande : lorsque le modèle doit utiliser une certaine compétence, appelez load_skill(name="pdf"), et le corps complet de la compétence (peut-être 5 à 10 000 jetons) est inséré dans le contexte via tool_result. Aucun des jetons des compétences inutilisées n'est chargé.

# tool_result renvoie la compétence complète
<nom de la compétence="pdf">
  Étape 1 : Utilisez pdfplomber pour l'extraction...
  Étape 2 : Gérer le repli de l'OCR si nécessaire...
  Étape 3 : Structurer la sortie sous forme de tableau Markdown...
</compétence>

Comparez les coûts des jetons

Testez-le dans un scénario réel. Supposons que vous ayez 20 compétences et que chaque corps possède en moyenne 3 000 jetons. L'utilisateur pose une question (telle que "Corriger le bug dans l'interface de connexion") - cette question ne nécessite probablement aucune compétence.

Format SKILL.md

Les fichiers de compétences utilisent le frontmatter + le corps YAML :

---
nom : pdf
description : Traiter les fichiers PDF. Extrayez du texte, des tableaux, des métadonnées.
balises : document, analyse
---

Étape 1 : Utilisez pdfplomber pour l’extraction. Gérer les mises en page multi-colonnes...
Étape 2 : Pour les PDF numérisés, revenez à l'OCR via tesseract...

Le frontmatter concerne la couche 1 (nom/description/balises) et le corps est pour la couche 2. Cette méthode d'écriture s'inspire des blogs statiques (Jekyll, Hugo), et les personnes qui la connaissent peuvent la comprendre d'un seul coup d'œil.

Interactif

Widget 1 · Économie de jetons · Comparaison de deux architectures

À gauche : invite système complète. À droite : Architecture à deux niveaux. Regardez les jetons accumulés après 20 conversations.

全塞 system prompt
System prompt: 60000 tokens
(20 × 3000 token 的 skill 全塞入)
× 对话次数: 1

总计: 60000 tokens
两层架构
System prompt: 2000 tokens
(20 个描述 × ~100 token 每个)
+ 按需加载的 skill body: 0 tokens
(每 5 次对话触发一次)

总计: 2000 tokens
1
省 0%
Interactif

Widget 2 · Frontmatter Parser · Extraire les métadonnées des compétences

Entrez un SKILL.md et utilisez la logique d'analyse du frontmatter YAML dans s05 pour voir ce que les couches 1 et 2 obtiennent respectivement.

SKILL.md(可编辑)
Layer 1 · system prompt 里塞这个

          
Layer 2 · load_skill 时的 tool_result

          
Interactif

Widget 3 · Découvrabilité · Le modèle ne peut être trouvé qu'après la rédaction de la description de la compétence.

La description de la couche 1 constitue la base de la sélection des compétences pour le modèle. Donnez-vous 3 séries de comparaisons, choisissez celle avec la meilleure écriture - certaines méthodes d'écriture empêcheront le modèle de trouver cette compétence.

答对 0 / 3