Aula 05 · planejamento

Conhecimento de domínio carregado sob demanda

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

⏱ ~10 min · 📝 3 componentes interativos · 🧑‍💻 Baseado em shareAI-lab · s05_skill_loading.py

A armadilha do "prompt completo do sistema"

Você tem 20 habilidades, cada uma delas escrita em detalhes: processamento de pdf (como ler PDF), revisão de código (lista de verificação de revisão), git-workflow (rotinas git comumente usadas)... Método intuitivo: coloque todas elas no prompt do sistema para que o modelo possa ser consultado a qualquer momento.

Resultado:

  • Grave de 15 a 30 mil tokens de entrada para cada chamada (mesmo que o problema não exija nenhuma habilidade).
  • A atenção do modelo é diluída - a conformidade com as regras mencionadas no longo prompt do sistema diminuirá.
  • Altere uma habilidade e o cache de todas as conversas históricas será invalidado.

A maneira como o S05 é feito é dividi-lo em duas camadas.

arquitetura de duas camadas

Camada 1 · Barato: Apenas o nome da habilidade e uma descrição de uma frase são colocados no prompt do sistema (cerca de 100 tokens cada). 20 habilidades = 2K tokens, aceitável.

# Lista de habilidades no prompt do sistema
Habilidades disponíveis:
  - pdf: processa arquivos PDF. Extraia texto, tabelas, metadados.
  - revisão de código: lista de verificação de revisão sistemática de código.
  - git-workflow: padrões comuns de ramificação e rebase do git.

Camada 2 · Sob demanda: quando o modelo precisa usar uma determinada habilidade, chame load_skill(name="pdf"), e o corpo completo da habilidade (talvez de 5 a 10 mil tokens) é inserido no contexto por meio de tool_result. Nenhum dos tokens de habilidades não utilizadas é carregado.

# tool_result retorna a habilidade completa
<nome da habilidade="pdf">
  Etapa 1: Use pdfplumber para extração...
  Etapa 2: lidar com o substituto de OCR quando necessário...
  Etapa 3: Estruture a saída como tabela Markdown...
</habilidade>

Compare custos de token

Teste em um cenário real. Suponha que você tenha 20 habilidades e cada corpo tenha em média 3.000 fichas. O usuário faz uma pergunta (como "Corrigir o bug na interface de login") - esta pergunta provavelmente não requer nenhuma habilidade.

Formato HABILIDADE.md

Arquivos de habilidade usam frontmatter + corpo YAML:

---
nome: pdf
descrição: Processar arquivos PDF. Extraia texto, tabelas, metadados.
tags: documento, análise
---

Etapa 1: use o pdfplumber para extração. Lidar com layouts de várias colunas...
Etapa 2: para PDFs digitalizados, use OCR via tesseract...

O frontmatter é para a Camada 1 (nome/descrição/tags) e o corpo é para a Camada 2. Este método de escrita é inspirado em blogs estáticos (Jekyll, Hugo), e pessoas familiarizadas com ele podem entendê-lo rapidamente.

Interativo

Widget 1 · Economia Token · Comparação de duas arquiteturas

Esquerda: prompt completo do sistema. À direita: arquitetura de duas camadas. Veja os tokens acumulados após 20 conversas.

全塞 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%
Interativo

Widget 2 · Analisador Frontmatter · Extrair metadados de habilidades

Insira um SKILL.md e use a lógica de análise do frontmatter YAML em s05 para ver o que a Camada 1 e a Camada 2 obtêm, respectivamente.

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

          
Layer 2 · load_skill 时的 tool_result

          
Interativo

Widget 3 · Capacidade de descoberta · O modelo só pode ser encontrado após a descrição da habilidade ser escrita.

A descrição da Camada 1 é a base para a seleção de competências para o modelo. Dê a você 3 conjuntos de comparações, escolha aquele com melhor escrita - alguns métodos de escrita farão com que o modelo nunca encontre essa habilidade.

答对 0 / 3