LangChain Skill 实现(渐进披露 On-Demand Skill,LangChain 官方 Deep Agent Skill 模式)

LangChain Skill 实现(渐进披露 On-Demand Skill,LangChain 官方 Deep Agent Skill 模式)

先分清:

  • Tool:原子执行函数(查数据库、爬虫、计算)
  • Skill:领域SOP/专家提示包,按需加载,不用一次性把所有规则塞进上下文,省token,适合你做小说Agent、量化Agent
  • Skill 本质是一个 load_skill Tool,调用后返回整套领域prompt、约束、few-shot、输出模板,注入对话上下文

架构

  1. 技能库: SKILLS = dict(name, desc, content)

  2. 唯一入口工具: load_skill(skill_name)

  3. Agent 一开始只看到技能简介,不会加载全文;需要时才调用加载完整SOP

  4. 搭配 LangGraph 做状态持久化(你之前研究Harness/Agent很适配)

完整可直接运行代码(Qwen / DeepSeek 本地模型兼容)

python

from langchain_core.tools import tool

from langchain_openai import ChatOpenAI

from langchain.agents import create_react_agent, AgentExecutor

from langchain_core.prompts import ChatPromptTemplate

========== 1. 定义你的技能库(每个skill = 一套SOP) ==========

SKILLS = [

{

"name": "write_novel_chapter",

"description": "写网文章节,适合番茄/塔读爽文,保人设、制造冲突、结尾留钩子",

"content": """

你是资深网文写手。规则:

  1. 严格遵守人设卡,不能OOC;
  2. 每300字安排一个小冲突;
  3. 章节末尾必须留悬念钩子;
  4. 节奏:铺垫→冲突→爽点→悬念;
  5. 禁止大段景物堆砌,优先动作、对话。
    输出格式:【章节正文】
    """
    },
    {
    "name": "quant_analysis",
    "description": "股票基本面+短期行情分析,输出风险和观测指标",
    "content": """
    你是量化研究员。分析步骤:
  6. 宏观:美联储、地缘、板块政策;
  7. 基本面:估值、营收、毛利率;
  8. 资金:北向、板块资金流向;
  9. 输出:看涨/看平/看跌 + 关键跟踪指标 + 风险提示;
    禁止保证收益,必须标注:不构成投资建议。
    """
    }
    ]

========== 2. 实现Skill加载工具(核心) ==========

@tool

def load_skill(skill_name: str) -> str:

"""

按需加载专业技能SOP

Args:

skill_name: 技能名称,可选:write_novel_chapter, quant_analysis

"""

for skill in SKILLS:

if skill"name" == skill_name:

return f"【加载技能 {skill_name}】\n{skill'content'}"

names = ",".join(s"name" for s in SKILLS)

return f"技能不存在,可用技能:{names}"

========== 3. 初始化模型 + Agent ==========

llm = ChatOpenAI(

base_url="http://localhost:11434/v1", # Ollama本地千问

api_key="xxx",

model="qwen2.5:14b",

temperature=0.7

)

prompt = ChatPromptTemplate.from_messages([

("system", """

你是智能体,拥有多个技能。

初始只知道技能简介,需要执行对应任务时,调用 load_skill 加载完整技能规则 。

不要把所有技能全部提前读入。

可用技能简介:

  • write_novel_chapter:写网文章节,爽文节奏,结尾留钩子
  • quant_analysis:股票量化行情分析
    """),
    ("user", "{input}"),
    ("agent_scratchpad", "{agent_scratchpad}")
    ])

agent = create_react_agent(llm, load_skill, prompt)

agent_executor = AgentExecutor(agent=agent, tools=load_skill, verbose=True)

========== 4. 测试调用 ==========

if name == "main ":

会自动调用load_skill加载小说技能

res = agent_executor.invoke({"input": "帮我写一章玄幻爽文,主角被宗门长老刁难"})

print(res"output")

进阶3种Skill实现方案(按需选)

方案A:上面这种【按需加载Prompt Skill】(官方推荐,token友好)

✅ 适合:大量领域SOP、写作助手、多业务角色

✅ 优点:上下文不会爆炸,Agent自己决定什么时候加载技能

❌ 适合:纯提示约束,没有复杂多步骤编排

方案B:Skill = 子Agent(子智能体)

一个Skill封装独立Agent(自带tools+prompt),主Agent路由分发。

适合:复杂业务,比如"爬虫技能""PDF解析技能",每个子Agent有自己的工具集。

python

伪代码:路由式skill

novel_agent = create_react_agent(llm, search_mem, lorebook_tool, novel_prompt)

quant_agent = create_react_agent(llm, stock_query_tool, quant_prompt)

ROUTER_SKILL = {"write_novel": novel_agent, "quant": quant_agent}

方案C:Skill = LangGraph 子图(最适合生产,对标Harness)

把一套流程封装成一个可调用子图,作为Skill注册到主图。

✅ 适合:有固定分支、重试、状态流转的复杂工作流(你之前看的WorkBuddy/Harness就是这个思路)

Tool=单步函数;Skill=封装好的子Graph工作流

目录化SKILL.md 标准格式(DeepAgent规范,可直接迁移)

每个技能一个文件夹, SKILL.md

md


name: write_novel_chapter

description: 网文章节撰写,爽文节奏,结尾钩子

技能说明

这里写SOP、约束、few-shot、输出模板、引用文件路径

代码里写一个文件加载器,遍历目录读取SKILL.md,动态注册技能,方便团队维护、新增技能不用改代码

关键避坑点

  1. 不要把所有技能content一次性塞进system prompt,失去渐进披露意义

  2. load_skill 返回的内容是ToolMessage,会合并进对话历史,后续轮次自动生效

  3. 技能之间隔离:加载A技能后,不要污染B技能的规则;可以加状态标记 loaded_skills: list

  4. 和你之前的Dify、Agent体系打通:Dify的应用本身就是Skill,LangChain Agent可以做路由层

扩展方向(贴合你的Agent论文)

  • 增加技能自检:加载skill后,自动校验用户输入是否符合该技能约束
  • 技能热更新:不用重启程序,新增SKILL.md自动识别
  • 技能优先级、互斥规则(比如量化分析和写小说不能同时激活)

如果你想要,我给你改成 LangGraph子图版本的Skill,带状态、最大迭代、重试,和Harness架构对齐。

相关推荐
程序员Query1 小时前
day01-认识Go语言 + golang环境的安装
开发语言·后端·golang
§ꦿCFོ༉10 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠11 小时前
十种不同风格的 CTP接口 框架
开发语言·python
2601_9679801112 小时前
深入理解词向量算法及其在Python中的实践
python·word2vec·glove·fasttext·词向量
129Lab12 小时前
电池循环测试数据自动化分析:用Python+AI工具构建一键式寿命评估流水线
python·数据分析·电池测试·数据自动化·寿命评估
treasure14013 小时前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
Dmz丶13 小时前
前端转 AI 100 天 Day 44:前端集成实战——用 React 给 Agent 做个正式界面
python
jay神14 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
DeepVisionary14 小时前
阿里云上线旗舰多模态新模型,不公布跑分且限时14天退役
python·自动化