skills 架构中,专门能力会被封装为可调用的“技能”,用于增强代理行为。技能主要是由提示词驱动的专门化能力,代理可以按需调用。 如需内置技能支持,请参阅 Deep Agents
此模式在概念上与 Agent Skillsllms.txt(由 Jeremy Howard 提出)相同,后者使用工具调用来渐进式披露文档。skills 模式将渐进式披露应用到专门提示词和领域知识,而不仅是文档页面。如需提升代理在 LangChain 生态任务上表现的即用型技能,请参阅 LangChain Skills 仓库。

关键特征

  • 提示词驱动的专门化:技能主要由专门提示词定义
  • 渐进式披露:技能会根据上下文或用户需求变为可用
  • 团队分工:不同团队可以独立开发和维护技能
  • 轻量组合:技能比完整子代理更简单
  • 引用感知:技能可以引用脚本、模板和其他资源

何时使用

当你希望单个代理具备许多可能的专门能力,不需要在技能之间强制特定约束,或不同团队需要独立开发能力时,请使用 skills 模式。常见示例包括编码助手(面向不同语言或任务的技能)、知识库(面向不同领域的技能)和创意助手(面向不同格式的技能)。

基本实现

import { tool, createAgent } from "langchain";
import * as z from "zod";

const loadSkill = tool(
  async ({ skillName }) => {
    // Load skill content from file/database
    return "";
  },
  {
    name: "load_skill",
    description: `Load a specialized skill.

Available skills:
- write_sql: SQL query writing expert
- review_legal_doc: Legal document reviewer

Returns the skill's prompt and context.`,
    schema: z.object({
      skillName: z
        .string()
        .describe("Name of skill to load")
    })
  }
);

const agent = createAgent({
  model: "gpt-5.4",
  tools: [loadSkill],
  systemPrompt: (
    "You are a helpful assistant. " +
    "You have access to two skills: " +
    "write_sql and review_legal_doc. " +
    "Use load_skill to access them."
  ),
});
如需完整实现,请参阅下面的教程。

教程:使用按需技能构建 SQL 助手

学习如何通过渐进式披露实现技能,让代理按需加载专门提示词和 schema,而不是预先加载。

扩展模式

编写自定义实现时,可以通过几种方式扩展基本 skills 模式:
  • 动态工具注册:将渐进式披露与状态管理结合,在技能加载时注册新的工具。例如,加载 “database_admin” 技能可以同时添加专门上下文,并注册数据库专用工具(backup、restore、migrate)。这使用了多代理模式中相同的工具和状态机制:工具更新状态,从而动态改变代理能力。
  • 分层技能:技能可以用树结构定义其他技能,从而创建嵌套专门化。例如,加载 “data_science” 技能可能会提供 “pandas_expert”、“visualization” 和 “statistical_analysis” 等子技能。每个子技能都可以根据需要独立加载,从而细粒度地渐进式披露领域知识。这种分层方法通过将能力组织为可发现、可按需加载的逻辑分组,帮助管理大型知识库。
  • 引用感知:虽然每个技能只有一个提示词,但该提示词可以引用其他资产的位置,并说明代理应在何时使用这些资产。 当这些资产变得相关时,代理会知道这些文件存在,并根据完成任务的需要将它们读入记忆。 这同样遵循渐进式披露模式,并限制上下文窗口中的信息量。