Conhecimento de domínio carregado sob demanda
「Don't put everything in the system prompt. Load on demand.」
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.