一、概念严格对齐(按你的定义)

Skill:封装大模型专有能力 + 上下文交互,形成的专属能力。 本质:模型内生能力,无外部系统调用,依赖 LLM 推理、上下文记忆、提示词编排。

Tool:封装外部系统 / 服务调用,形成的专属能力。 本质:外部资源能力,必须发起网络 / IO 请求,对接 API、数据库、脚本、硬件等。

核心边界

  1. 执行主体
    • Skill:大模型自身完成计算、理解、创作、推理
    • Tool:外部服务完成执行,模型只负责发起调用、解析结果
  2. 依赖
    • Skill:仅依赖 LLM + 对话上下文 / 提示模板
    • Tool:依赖网络、第三方服务、权限、接口协议(如 MCP)
  3. 运行环境
    • Skill:进程内闭环,低延迟、无外网依赖
    • Tool:跨进程 / 跨网络调用,存在可用性、网络、安全风险

二、LangChain 中 Skill 标准实现(模型能力 + 上下文封装)

下面实现纯 Skill:基于 LLM + 固定上下文模板封装,不调用任何外部接口。 场景:文本摘要、文案改写、逻辑分析(典型大模型专有能力)。

环境依赖

bash

运行

pip install langchain langchain-openai python-dotenv

完整代码:Skill 封装(模型 + 上下文)

python

运行

from langchain.tools import tool
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate
from dotenv import load_dotenv

load_dotenv()
# 初始化大模型(Skill 唯一依赖)
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

# ===================== 定义 Skill:封装模型能力 + 固定上下文模板 =====================
@tool
def text_summary_skill(long_text: str) -> str:
    """
    Skill:长文本摘要(大模型专有能力,纯上下文+LLM推理)
    封装固定提示上下文,复用摘要能力,无外部调用
    Args:
        long_text: 待摘要的长文本
    """
    # 固定上下文模板 = 能力封装的核心
    prompt_template = PromptTemplate(
        input_variables=["content"],
        template="""
        请精简总结下面内容,提炼核心观点,控制在100字以内:
        原文:{content}
        总结:
        """
    )
    # 拼接上下文 + 调用模型(纯内生能力)
    prompt = prompt_template.format(content=long_text)
    return llm.invoke(prompt).content


@tool
def copywriting_skill(raw_text: str, tone: str) -> str:
    """
    Skill:文案风格改写(大模型语义能力+上下文封装)
    Args:
        raw_text: 原始文本
        tone: 风格:正式/活泼/商务
    """
    prompt = f"""
    固定上下文规则:仅改写语气,不增删原意。
    将以下文本改写为{tone}风格:
    {raw_text}
    """
    return llm.invoke(prompt).content

# ===================== 智能体加载 Skill 并调用 =====================
all_skills = [text_summary_skill, copywriting_skill]

agent_prompt = PromptTemplate.from_template("""
你拥有文本摘要、文案改写两项能力,请根据用户问题选择对应Skill执行。
用户输入:{input}
可用能力:{tools}
能力名称:{tool_names}
{agent_scratchpad}
""")

# 创建智能体 & 执行器
agent = create_react_agent(llm, all_skills, agent_prompt)
agent_executor = AgentExecutor(agent=agent, tools=all_skills, verbose=True)

if __name__ == "__main__":
    # 测试 1:调用摘要 Skill
    print("===== 测试 文本摘要 Skill =====")
    text = """
    本周公司整体营收稳步增长,线上渠道贡献主要订单,
    线下门店客流略有回升。团队完成季度复盘,确定下月重点拓展新客户。
    """
    res1 = agent_executor.invoke({"input": f"帮我总结这段内容:{text}"})
    print(res1["output"])

    # 测试 2:调用文案改写 Skill
    print("\n===== 测试 文案改写 Skill =====")
    res2 = agent_executor.invoke({"input": "把「今天订单很多,大家辛苦啦」改成商务风格"})
    print(res2["output"])

代码解读(贴合你的定义)

  1. 整个能力 = 固定上下文模板 + 大模型推理,属于对模型专有能力的封装;
  2. 全程无任何外部接口、数据库、API 调用,是标准 Skill
  3. 可以反复复用这套 “上下文 + 模型逻辑”,成为智能体的固定能力。

三、LangChain 中 Tool 标准实现(外部调用能力)

同样用 @tool 封装,但内部逻辑是调用外部资源,属于标准 Tool。 示例:模拟查询业务数据(对接外部接口 / 数据库,搭配 MCP 调用思想)。

python

运行

from langchain.tools import tool
import requests

# 模拟外部服务地址(真实场景为数据库/业务API/MCP服务)
EXTERNAL_DATA_API = "http://127.0.0.1:8001/mcp/tool"

@tool
def business_data_query_tool(query_key: str) -> str:
    """
    Tool:业务数据查询(外部工具调用能力)
    依赖外部API/MCP服务,非模型原生能力
    Args:
        query_key: 查询字段:sales/orders/users
    """
    # 发起外部网络调用(Tool 核心特征)
    payload = {"tool": "db_query", "params": {"query_key": query_key}}
    try:
        resp = requests.post(EXTERNAL_DATA_API, json=payload, timeout=5)
        data = resp.json()
        return f"查询结果:{data.get('data', '暂无数据')}"
    except Exception as e:
        return f"工具调用失败:{str(e)}"

# 单独调用测试
if __name__ == "__main__":
    print(business_data_query_tool.invoke({"query_key": "sales"}))

代码解读

  1. 能力来源于外部服务,模型只负责 “发起调用、接收结果”;
  2. 依赖网络、第三方服务,符合 Tool 定义;
  3. 企业场景中,这类调用统一走 MCP 协议 标准化接入。

四、Skill + Tool 完整协同链路(企业标准流程)

真实业务中二者组合使用,流程: 用户指令 → Skill(理解 / 规划 / 文本加工,模型能力) → Tool(查外部数据,外部调用) → Skill(整理输出,模型能力)

组合代码示例

python

运行

from langchain.tools import tool
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate
import requests
from dotenv import load_dotenv

load_dotenv()
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
EXTERNAL_DATA_API = "http://127.0.0.1:8001/mcp/tool"

# ---------- 1. 定义 Skill(模型能力:报告生成) ----------
@tool
def report_generate_skill(data_content: str) -> str:
    """Skill:基于原始数据生成分析报告(大模型上下文+推理)"""
    prompt = f"""
    请根据以下数据,生成简短业务分析报告:
    {data_content}
    要求:分数据展示、简短分析两部分。
    """
    return llm.invoke(prompt).content

# ---------- 2. 定义 Tool(外部调用:数据查询) ----------
@tool
def data_query_tool(query_key: str) -> str:
    """Tool:查询外部业务数据(外部接口调用)"""
    payload = {"tool": "db_query", "params": {"query_key": query_key}}
    resp = requests.post(EXTERNAL_DATA_API, json=payload, timeout=5)
    return str(resp.json())

# ---------- 智能体加载 Skill + Tool ----------
tools = [report_generate_skill, data_query_tool]

agent_prompt = PromptTemplate.from_template("""
流程要求:先使用 data_query_tool 查询数据,再使用 report_generate_skill 生成报告。
用户输入:{input}
可用工具:{tools}
工具名称:{tool_names}
{agent_scratchpad}
""")

agent = create_react_agent(llm, tools, agent_prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

if __name__ == "__main__":
    # 完整链路:Tool查数据 → Skill生成报告
    res = agent_executor.invoke({"input": "查询销售额并生成分析报告"})
    print("\n最终输出:")
    print(res["output"])

链路对应定义

  1. data_query_tool:调用外部接口 → Tool
  2. report_generate_skill:模型 + 上下文生成报告 → Skill

五、汇总对比(严格匹配你的定义)

表格

对比项 Skill(模型专有能力封装) Tool(外部工具调用封装)
能力来源 大模型原生推理、语义、创作能力 外部 API / 数据库 / 系统 / 硬件
实现核心 上下文模板 + LLM 调用 网络 / IO 请求 + 外部服务交互
外部依赖 强依赖外部服务、网络、权限
运行特征 进程内闭环、低延迟、高隐私 跨网络调用、有延迟、需安全管控
典型场景 摘要、改写、翻译、逻辑分析、报告文案 查数据、发邮件、执行命令、调用 RPA
协议关联 纯模型层,不依赖 MCP 企业场景统一通过 MCP 对接

六、结合你整套架构做最终映射

  1. 大模型:能力本体,所有 Skill 的基础
  2. Skill:对模型能力 + 上下文做封装 → 智能体内生岗位技能
  3. Tool:对外部系统调用做封装 → 智能体使用的外部作业工具
  4. 智能体框架 (LangChain):流程 / 制度,调度 Skill 与 Tool 协同
  5. A2A:多智能体之间通信协作
  6. MCP:智能体与 Tool 之间的标准调用协议

完整企业 AI 运行范式:

大模型(决策大脑)→ 智能体框架(流程制度)→ Skill(内生技能做理解 / 加工) + A2A(多 Agent 协作) → Tool(外部操作) + MCP(工具标准接口)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐