Skip to content

技能 (Skills) ​

在技能 (skills) 架构中,专门的能力被打包为可调用的“技能”,用以增强 Agent 的行为。技能主要是由提示词驱动的专业化能力,Agent 可以按需进行调用。 有关内置的技能支持,请参见 Deep Agents。

TIP

该模式在概念上与 Agent Skills 和 llms.txt(由 Jeremy Howard 提出)完全相同,后者使用工具调用来实现文档的渐进式披露。技能模式将渐进式披露应用于专业提示词和领域知识,而不仅仅是文档页面。

有关可提高 Agent 在 LangChain 生态系统任务上表现的开箱即用技能,请参见 LangChain Skills 仓库。

核心特性 ​

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

何时使用 ​

当你希望单个 Agent 具备多种可能的专业化能力、不需要在技能之间强加特定的约束,或者不同团队需要独立开发各项能力时,请使用技能模式。常见的示例包括代码助手(针对不同语言或任务的技能)、知识库(针对不同领域的技能)以及创意助手(针对不同格式的技能)。

基础实现 ​

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

const loadSkill = tool(
  async ({ skillName }) => {
    // 从文件/数据库加载技能内容
    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.5",
  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 助手

了解如何通过渐进式披露实现技能,使 Agent 按需加载专业提示词和 Schema,而不是预先加载所有内容。

扩展该模式 ​

在编写自定义实现时,你可以通过多种方式扩展基础的技能模式:

  • 动态工具注册:将渐进式披露与状态管理结合,在加载技能时注册新的工具。例如,加载 "database_admin" 技能既可以添加专门的上下文,也可以注册特定于数据库的工具(备份、恢复、迁移)。这使用了多智能体模式中通用的相同工具与状态机制——工具更新状态以动态改变 Agent 的能力。

  • 分层技能:技能可以以树状结构定义其他技能,从而创建嵌套的专业化能力。例如,加载 "data_science" 技能可能会使诸如 "pandas_expert"、"visualization" 和 "statistical_analysis" 等子技能变得可用。每个子技能都可以根据需要独立加载,从而实现领域知识的细粒度渐进式披露。这种分层方法通过将能力组织成逻辑分组来帮助管理大型知识库,这些分组可以按需发现并加载。

  • 引用感知:虽然每个技能只有一个提示词,但该提示词可以引用其他资产的位置,并提供 Agent 何时应该使用这些资产的信息。 当这些资产变得相关时,Agent 将知道这些文件的存在,并在需要完成任务时将它们读取到内存中。 这也遵循了渐进式披露模式,并限制了上下文窗口中的信息量。