[智能体-352]:对大模型的上下文封装与交互得到的特定能力,称为skill;对外部工具调用形成的特定能力,称为工具;
2026/6/11 4:11:00 网站建设 项目流程

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

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(工具标准接口)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询