首先 LLM和Agent是一个大类,FunctionCall Tool MCP Skill是另一个大类.

LLM 和Agent

LLM是大语言模型,是基于大量数据进行预训练的超大型深度学习模型.

各个大厂都发布了自己的LLM,如:Google genimi, OpenAI的gpt,Anthropic的Claude Opus/Sonnet等.
如果只是提供大模型,那用户怎么用呢?所以说提供了基于网页(WEB)的问答模式的服务,
慢慢的,基于编码以衍生出了一系列的TUI 和IDE,如google的 AntigravityOpenAI 的 CodexAnthropic的 Claude Code,这些工具一般都是提供自家的模型(付费)使用

Agent是智能代理,能够主动的感知上下文信息,做决策并采取行动的计算实体

Agent 基于LLM,结合一些记忆,规划,以及工具模块,主动完成多步骤任务的自动化实体。
Agent 是基于LLM的编排系统,他属于工程范围。所以当下也有好多开源的构建智能Agent的开源工具,如Langchain/LangGraph,crewAI,Google ADK
对应的PythonJava版本的实现如下:

当然还有 AutoGPT, Microsoft autogen等等。

其中 CrewAI 是由João Moura 开发的开源多智能体编排框架,建立在LangChain 基础之上,它通过协调多个AI 智能体的协作来完成复杂任务.
从目前的趋势来看,对应Python版本的社区活跃度要高很多。
以上是构建Agent的框架,还有一种是基于TUI的Agent,如专门用于编程的opencode,可以参考Oh My Opencode各个agent的作用以及常用的命令,这种非常适合于极客。
还有一种是个人Agent,如OpenClaw,是一个开源的个人AI 助手平台,支持通过多种消息渠道与AI 交互,它能通过微信、Telegram、Slack等通讯工具进行交互,不仅能对话,还能执行shell命令、控制浏览器、管理文件和邮件。

FunctionCall Tool MCP Skill

FunctionCall 是 LLM 的原生能力

通过训练,LLM 能够理解 JSON Schema 定义的工具,判断何时需要调用工具,并生成结构化的调用请求,它允许模型在无法直接回答问题时,返回一个函数调用请求,而不是生成文本,开发者需要手动解析这个请求,执行对应的函数,并将结果传回给模型,以生成最终答案,FunctionCall使智能体能够与外部 API、数据库、服务交互,甚至执行代码.

Tool是 Agent 层对函数调用的封装

Tool既可以是传统函数,也可以是复杂的 API 端点、数据库查询请求,甚至是向其他专业智能体发出的指令,不同的 Agent 框架(如 LangChain、CrewAI、Google ADK 等)对工具有不同的封装方式和抽象接口,
如:LangChain

from langchain_core.tools import tool as langchain_tool
@langchain_tool
def search_information(query: str) -> str:
    """提供有关给定主题的事实信息。使用此工具查找诸如"法国首都"或"伦敦的天气?"等短语的答案。"""
    提供有关给定主题的事实信息。使用此工具查找诸如"法国首都""伦敦的天气?"等短语的答案。
    """
    simulated_results = {
        "weather in london": "伦敦目前多云,温度为 15°C。",
        "capital of france": "法国的首都是巴黎。",
        "population of earth": "地球的估计人口约为 80 亿人。",
        "tallest mountain": "珠穆朗玛峰是海拔最高的山峰。",
        "default": f"'{query}' 的模拟搜索结果:未找到特定信息,但该主题似乎很有趣。"
    }
    
    result = simulated_results.get(query.lower(), simulated_results["default"])
    print(f"--- 工具结果:{result} ---")
    return result

tools = [search_information]
# 创建智能体,将 LLM、工具和提示词绑定在一起。
    agent = create_tool_calling_agent(llm, tools, agent_prompt)


如CrewAI:

from crewai.tools import tool
@tool("Stock Price Lookup Tool")
def get_stock_price(ticker: str) -> float:
    """
    获取给定股票代码符号的最新模拟股票价格。
    以浮点数形式返回价格。如果未找到代码,则引发 ValueError。
    """
    logging.info(f"工具调用:get_stock_price,代码为 '{ticker}'")
    
    simulated_prices = {
        "AAPL": 178.15,
        "GOOGL": 1750.30,
        "MSFT": 425.50,
    }
    
    price = simulated_prices.get(ticker.upper())
    if price is not None:
        return price
    else:
        raise ValueError(f"未找到代码 '{ticker.upper()}' 的模拟价格。")

financial_analyst_agent = Agent(
    role='高级财务分析师',
    goal='使用提供的工具分析股票数据并报告关键价格。',
    backstory="你是一位经验丰富的财务分析师,擅长使用数据源查找股票信息。你提供清晰、直接的答案。",
    verbose=True,
    tools=[get_stock_price],
    # 允许委托可能很有用,但对于这个简单任务不是必需的。
    allow_delegation=False,
)

Google ADK如下:

from google.adk.tools import google_search

## 使用搜索工具定义智能体
root_agent = Agent(
  name="basic_search_agent",
  model="gemini-2.0-flash-exp",
  description="使用 Google 搜索回答问题的智能体。",
  instruction="我可以通过搜索互联网回答您的问题。随便问我什么!",
  tools=[google_search] # Google 搜索是执行 Google 搜索的预构建工具。
)

每个框架对Tool的使用都不一样

MCP 是标准化协议

MCP是模型上下文协议(Model Context Protocol),是 Agent 层的标准化协议,这是为了解决 Tool 在不同 Agent 框架中不通用的问题,MCP 定义了统一的工具描述和调用标准。一次开发的 MCP 服务可以被任何支持 MCP 的 Agent 框架使用。
MCP是需要进行编程的,关于Coding这块可以参考MCP编程极速入门
MCP 的传输层支持了 2 种协议的实现:stdio(标准输入/输出)和 SSE(服务器发送事件):
Stdio 用于本地通信(如AI编辑器调用本地脚本),速度快、安全性高。
SSE (Server-Sent Events) 用于远程通信(如客户端连接云端服务),基于 HTTP 长连接,支持网络部署。

Skill是能力包

SKILL是一套由指令,脚本,以及资源组成的可以指导大模型 怎么完成一项特定任务的任务流的详细说明,它可以保证完成该任务的稳定性。SKILL是告诉AGNET去怎么做的一套行为准则或者SOP(标准流程)。
关于Skill的创建可以参考怎么创建高质量的 AI SKILL

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐