ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Agent理论学习(二)

Agent理论学习(二)

目录

Function Call是啥?

Function Call工作原理

Function Call解决了什么问题?

Function Call 与 Agent

MCP是啥?

Function Call集成困境

MCP的诞生

MCP 的工作方式

Skills是啥?

Skills的工作方式

Skills的价值


Function Call是啥?

编程里的 function call = 代码调用函数;大模型领域 Function Call(也常叫 Tool Call)是大模型主动识别用户意图,然后去调用外部工具 / 函数,拿到结果再整合回答的能力。

2023年6月OpenAI正式发布Function Call。从此以后, LLM 不仅能生成文字,还能告诉外部程序【我想调用某个函数,参数是这些】。

举例来说:

在没有 Function Call 之前,LLM 就像一个只记得菜单的店员。你问他:“店里还有草莓蛋糕吗?” 他只能凭旧印象回答:“我们店售卖草莓蛋糕。”

有了 Function Call 之后,这个店员学会了查看后厨实时库存。你问他,他就查询库存系统(调用库存 API),拿到实时数据后告诉你:“草莓蛋糕今天已经售罄,芒果蛋糕还有 2 份。”

Function Call工作原理

Function Call的工作流程可以分为四步。

1、定义函数。开发者预先告诉LLM有哪些可用的工具/函数(用JSON格式描述函数名字、功能、参数),例如,下面是一个get_weather函数,接收参数为城市名称,返回天气信息。

{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的实时天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,比如:上海"
}
},
"required": ["city"]
}
}
}
]
}

2、模型判断。用户提问后,LLM会分析【要不要调用函数?调用哪些函数?】

例如:用户问:“南京今天多少度?”模型识别:这个问题需要实时天气,我自己知识库没有,需要调用get_weather,生成一段结构化 JSON。

{
"tool_calls": [
{
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"南京\"}"
}
}
]
}

3、函数执行。后端代码捕捉到上面的JSON,调用真实函数/API【get_weather("南京")】,拿到结果[26℃,晴]

注意!JSON 是模型输出,但是执行函数的是你的后端代码,不是模型!

4、生成结果。后端代码把拿到的真实温度数据传给LLM,有了真实数据支撑后,LLM就会用自然语言回复你:“南京今天 26 度,天气晴朗。”

Function Call解决了什么问题?

第一是何时调用、调用哪个工具的意图判断。LLM能够读懂用户自然语言,自主推理是否需要启用外部工具,以及选择对应的工具,无需开发者手写大量复杂的条件分支判断代码。

第二是提取并生成结构化入参。模型可以从用户口语化提问里,自动解析出工具所需要的结构化参数。例如用户说 “帮我查一下南京后天的天气”,LLM 能自动提取出city=南京 和 data=后天。

两项能力结合,让 LLM 不再仅仅是单纯的文本生成聊天机器人,而是可以理解用户意图、驱动外部系统运行的决策引擎。

可以说,Function Call 就是 Agent 能力的最底层技术基础,没有 Function Call,Agent 就无法调用工具,也就没法真正【干活】。

Function Call 与 Agent

Function Call:是 “单次调用工具” 的基础能力。它负责两件事:LLM要不要调用工具、提取参数并输出结构化指令,完成单轮工具调用。只有单次决策,没有任务规划、多轮思考循环。

Agent:是一套完整的自主任务执行框架。它可以拆解复杂目标、多次连续调用 Function Call,根据工具返回结果调整下一步计划,直到任务完成。

因此,Function Call 是 Agent 的原子操作,而 Agent 是对 Function Call 的高级编排。Agent 在完成一项复杂任务时,可能需要连续发起十几次 Function Call。

MCP是啥?

Function Call集成困境

Function Call 使LLM具备调用工具的能力。不过随着 Agent 能力愈发强大,需要接入的工具和服务越来越多,一个新的难题随之浮现:工具集成的成本过高、流程繁琐。

在 MCP 之前,每一款 AI 应用(N 个,如 ChatGPT、Claude、Cursor)对接每一个外部数据源 / 工具(M 个,如数据库、飞书、GitHub、本地文件),都需要单独编写定制化连接器,总开发与维护成本是N×M的量级,重复劳动严重,系统扩展性极差。且不同 AI 厂商都有私有的插件 / 工具体系(如 OpenAI 插件、Claude 原生工具、VS Code 扩展),彼此标准不兼容,一个工具无法跨多个 AI 平台复用,开发者需要多套适配方案。

MCP的诞生

2024 年 7 月,Anthropic 工程师受限于 Claude 无法直接调用外部工具,只能手动将模型回复复制到代码编辑器,工作效率低下。团队由此启动统一连接协议的设计,打通模型与外部系统。

MCP (模型上下文协议)的解决方案是将复杂的网状集成,简化为线性的连接模式。工具提供方只需按照 MCP 标准实现一次“服务端”,任何支持 MCP 的 AI 应用都能直接连接并使用它。这就像为 AI 世界建立了一个通用的“USB-C 接口”,实现了即插即用

MCP 的工作方式

MCP 基于 JSON-RPC 2.0 通信标准,采用主机 - 客户端 - 服务器三层架构,通过三类核心原语实现能力交互。

主机(Host):即 AI 应用本身(如 Claude Desktop、Cursor),是用户直接使用的载体。负责创建和管理客户端、执行安全策略、处理用户授权、聚合多源上下文、协调模型推理。

客户端(Client):Host为每个 MCP 服务器创建的独立连接实例,与Server一一对应。负责协议协商、消息双向路由、会话维护、订阅管理,在Host与Server之间起到桥梁作用。

服务器(Server):外部能力与数据的提供方(如数据库、企业 OA、GitHub、本地文件系统),按照 MCP 标准对外暴露自身的能力,供 AI 模型调用。

整个流程就是:用户在 AI 应用中提问 → AI 应用(Host)通过 MCP Client 发现有哪些可用工具 → AI 决定调用某个工具→ MCP Client 向对应的 MCP Server 发送请求 → Server 执行操作返回结果 → AI 基于结果生成回答。

Skills是啥?

借助 Function Call 和 MCP,Agent 已经具备调用工具的能力,但它尚且无法合理运用工具来落地解决实际业务问题。而 Skills 正是用来补齐这一环的。Skill(技能)相当于一份面向 AI Agent 的工作手册与操作说明书:其本质是结构化提示词(Prompt),并不会提升大模型本身的基础能力,而是通过注入标准化业务流程与领域知识,让通用人工智能精准完成各类特定任务。

Skills通常以SKILL.md文件的形式存在,里面用 YAML 写元数据(名字、描述),用 Markdown 写具体的操作步骤、规则,还可以附带脚本和参考文档。你可以把它理解为一份即插即用的“专业操作手册”,喂给 AI 后,它就能按照手册里的流程干活了。下面是具体的行为指令,用自然语言写成。

---
name: Code_Review_Expert
description: 当用户要求进行代码审查时,自动触发此技能。
triggers:
- "帮我 review 一下这段代码"
- "代码审查"
---

# 身份设定
你是一个拥有 10 年开发经验的资深后端架构师,你极其看重代码的可读性、性能和安全性。

# 审查工作流
当你进行代码审查时,你必须严格按照以下步骤进行排查:
1. 看结构:检查代码是否符合单一职责原则,有没有超过 100 行的超长方法。
2. 查漏洞:重点检查是否存在 SQL 注入风险、越权访问风险或空指针异常风险。
3. 审性能:是否有在 for 循环里查数据库的愚蠢操作?是否有流对象没有及时 close 释放?
4. 给方案:你绝对不能只挑毛病,必须针对每个问题给出具体的修改建议,并且附带优化后的代码片段。

# 输出规范
语气要专业、极其直接,不要说废话。直接输出一份 Markdown 格式的审查报告,分点列出问题和修改方案。

Skills的工作方式

Skill 的运行依托 Agent 的核心架构,遵循 “注册 - 匹配 - 执行 - 反馈” 的完整流程,并且与 MCP 等底层工具协议深度协同。

1、技能注册与动态发现。Agent 启动时加载本地技能库,或从远程企业技能仓库动态拉取可用 Skill;每个 Skill 的元数据会注册到 Agent 的能力目录中,规划器可通过语义检索快速匹配。

2、任务分解与技能匹配。当用户下达复杂任务时,Agent 的规划模块(Planner)会优先复用已有能力:拆解任务目标,识别任务类型与核心诉求;在技能库中检索是否有现成 Skill 可以直接覆盖该任务;匹配成功则直接调用对应 Skill;无匹配时,再拆解为原子工具调用。 这一机制大幅降低了大模型的规划压力,避免每次从零设计执行步骤。

3、技能执行与内部编排。Skill 被触发后,会按照预设工作流,依次调用依赖的 MCP 工具、子技能和外部资源。

4、结果返回与记忆同步。Skill 执行完成后,将结构化的最终结果返回给 Agent 主流程;执行过程中的关键中间状态、产出数据会写入 Agent 的工作记忆,支撑后续任务推理。

MCP 为 Skill 提供了标准化的底层原子能力接入。一个 Skill 可以跨服务器组合调用多个 MCP 工具与资源,比如 “生成月度经营分析报告” 这个 Skill,可以同时调用数据库 MCP 的查询工具、飞书 MCP 的文件读取工具、邮件 MCP 的发送工具 ——MCP 统一了底层连接标准,Skill 只需聚焦业务逻辑本身。

Skills的价值

Skills 的核心价值在于将专业知识和最佳实践编码成可复用的模块。

企业可以将内部标准业务流程封装成 Skill,形成企业级技能库,把零散的业务经验沉淀为可复用的 AI 能力资产。

Skill 内部流程是确定的,不需要每一步都等待大模型决策,执行时延显著降低。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进