Connaissance du domaine chargée à la demande
「Don't put everything in the system prompt. Load on demand.」
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.