在 LangGraph 中集成 Skills 增强智能体能力

LangGraph 的核心是通过**状态机 + 节点(Node) + 工具(Tool)**来编排智能体流程,你可以把 Skills 理解为"封装好的工具或可复用的任务流",下面是一套可落地的集成方案。


一、核心思路:Skill → LangGraph 可调用单元

在 LangGraph 中,一个 Skill 通常可以转化为以下几种形式:

  1. 工具(Tool):独立函数,比如"网页信息提取""代码生成"等原子能力。
  2. 子图(Subgraph):多步任务流,比如"E2E 测试全流程""技术调研报告生成"。
  3. 状态更新函数:修改智能体状态,比如"保存中间结果""切换任务优先级"。

二、标准集成步骤(以 Browser Agent Skill 为例)

1. 封装 Skill 为 LangGraph Tool

把 Skill 的逻辑包装成 @tool 装饰的函数,让智能体可以直接调用。

python 复制代码
from langchain.tools import tool

@tool
def browser_agent_skill(task: str) -> str:
    """
    浏览器代理技能:根据自然语言指令操作浏览器
    示例:"测试结账流程,添加2个商品到购物车并验证数量"
    """
    # 这里接入开源 Browser Agent Skill 的实现(如 Vercel Agent Browser)
    from agent_browser import run_browser_task
    return run_browser_task(task)

2. 在 LangGraph 中注册工具

将封装好的 Tool 注入智能体的工具集,让它在决策时可以选择使用。

python 复制代码
from langgraph.graph import StateGraph, END
from langgraph.prebuilt import ToolNode

# 定义状态结构
class AgentState:
    messages: list
    next_step: str

# 注册工具
tools = [browser_agent_skill]
tool_node = ToolNode(tools)

# 构建图
graph = StateGraph(AgentState)
graph.add_node("agent", agent_node)  # 你的核心智能体节点
graph.add_node("tools", tool_node)

3. 设计 Skill 触发逻辑

在智能体的决策节点中,根据当前任务的意图,决定是否调用对应的 Skill。

python 复制代码
def agent_node(state: AgentState):
    messages = state.messages
    last_message = messages[-1].content
    
    # 检测是否需要调用浏览器代理技能
    if "测试结账流程" in last_message or "网页操作" in last_message:
        return {"next_step": "tools", "messages": messages + [{"role": "system", "content": "调用 browser_agent_skill"}]}
    
    # 其他逻辑
    return {"next_step": END, "messages": messages + [{"role": "assistant", "content": "任务完成"}]}

4. 处理 Skill 返回结果

工具节点执行后,将结果回写到状态中,让智能体继续后续流程。

python 复制代码
def tool_node(state: AgentState):
    tool_output = state["messages"][-1]["content"]
    return {"messages": state["messages"] + [{"role": "tool", "content": tool_output}], "next_step": "agent"}

三、高级集成:Skill 作为子图(Subgraph)

对于复杂的多步 Skill(如技术调研全流程),可以把它封装成一个子图,再嵌入主图。

python 复制代码
# 定义子图:技术调研 Skill
research_subgraph = StateGraph(AgentState)
research_subgraph.add_node("search", search_node)  # 多源搜索
research_subgraph.add_node("summarize", summarize_node)  # 结果汇总
research_subgraph.add_edge("search", "summarize")
research_subgraph.add_edge("summarize", END)

# 在主图中注册子图
graph.add_node("research_skill", research_subgraph.compile())

# 触发逻辑
def agent_node(state: AgentState):
    if "调研 AI 客服框架" in state["messages"][-1].content:
        return {"next_step": "research_skill", "messages": state["messages"]}
    return {"next_step": END, "messages": state["messages"]}

四、关键技巧与避坑

  1. Skill 标准化 :遵循 Agent Skills 规范(SKILL.md + 脚本),让 Skill 可以跨框架复用。
  2. 状态管理:确保 Skill 的输入/输出都通过 LangGraph 的状态传递,避免全局变量。
  3. 错误处理:在工具节点中加入异常捕获,避免单个 Skill 崩溃导致整个智能体挂掉。
  4. 调试与监控:用 LangSmith 跟踪 Skill 的调用链路,定位性能瓶颈。
相关推荐
ting94520001 小时前
Tornado 全栈技术深度指南:从原理到实战
人工智能·python·架构·tornado
果汁华1 小时前
Browserbase Skills:让 Claude Agent 真正“看见“网页世界
人工智能·python
ZhengEnCi1 小时前
04-缩放点积注意力代码实现 💻
人工智能·python
HackTwoHub2 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
段一凡-华北理工大学2 小时前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章08:多模态数据融合:让数据更聪明
人工智能·python·高炉炼铁·ai赋能·工业智能体·高炉炉温
网络工程小王3 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
HIT_Weston3 小时前
63、【Agent】【OpenCode】用户对话提示词(示例)
人工智能·agent·opencode
CV-杨帆3 小时前
Phi-4-mini-flash-reasoning 部署安装与推理测试完整记录
人工智能
MediaTea3 小时前
AI 术语通俗词典:C4.5 算法
人工智能·算法
海兰4 小时前
【第27篇】Micrometer + Zipkin
人工智能·spring boot·alibaba·spring ai