vault backup: 2026-05-07 11:04:07
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
# AI工具调用机制学习笔记
|
||||
|
||||
> 本笔记针对薄弱环节整理,重点梳理 CLI、GUI、API、MCP、Function Calling、Agent 之间的关系。
|
||||
|
||||
---
|
||||
|
||||
## 一、CLI vs GUI —— 工具软件的两种交互方式
|
||||
|
||||
工具软件与用户的交互方式分两类:
|
||||
|
||||
| 类型 | 全称 | 本质 | 例子 |
|
||||
|---|---|---|---|
|
||||
| **CLI** | Command Line Interface(命令行界面) | 用文字命令操控软件 | `git commit -m "fix"` |
|
||||
| **GUI** | Graphical User Interface(图形界面) | 用鼠标点击操控软件 | Photoshop、Word |
|
||||
|
||||
**关键点:** CLI 和 GUI 是同一个软件暴露给用户的不同"入口",不是两种软件。
|
||||
|
||||
---
|
||||
|
||||
## 二、并非所有软件都有 CLI
|
||||
|
||||
- **有 CLI 的软件:** 开发工具(git、npm)、服务端软件(nginx、mysql)
|
||||
- **没有 CLI 的软件:** 创意设计类(Photoshop、Figma)、办公软件(Word、Excel)
|
||||
|
||||
**Photoshop 的例子:**
|
||||
Photoshop 是纯 GUI 软件,没有原生 CLI。只能通过脚本(ExtendScript/UXP)做有限自动化,或通过 GUI 模拟操控。
|
||||
|
||||
---
|
||||
|
||||
## 三、模型调用工具的三种方式
|
||||
|
||||
```
|
||||
工具软件
|
||||
├── CLI → 模型直接生成命令文本调用
|
||||
├── GUI → 模型模拟人的鼠标/键盘操作(Computer Use)
|
||||
└── MCP → 模型通过标准化协议调用
|
||||
```
|
||||
|
||||
### 三者对比
|
||||
|
||||
| 方式 | 本质 | 稳定性 | 适用范围 |
|
||||
|---|---|---|---|
|
||||
| **MCP** | 标准化 API 协议 | 最高 | 支持 MCP 的工具 |
|
||||
| **CLI** | 命令行文本调用 | 高 | 有 CLI 接口的工具 |
|
||||
| **GUI 模拟** | 模拟人操作(截图+点击) | 最低 | 几乎所有软件 |
|
||||
|
||||
> MCP 是最优雅的方式,CLI 是最普遍的方式,GUI 模拟是最后的手段。
|
||||
|
||||
---
|
||||
|
||||
## 四、API、CLI、MCP 工具的本质是同一件事
|
||||
|
||||
**一个 API 工具 ≈ 一条 CLI 命令**
|
||||
|
||||
```
|
||||
CLI 世界:
|
||||
git commit -m "fix bug"
|
||||
↑命令 ↑参数
|
||||
|
||||
API/Function Calling 世界:
|
||||
{ "tool": "git_commit", "params": {"message": "fix bug"} }
|
||||
↑函数名 ↑参数
|
||||
```
|
||||
|
||||
| CLI 概念 | API/MCP 概念 |
|
||||
|---|---|
|
||||
| 一条命令 | 一个 tool/function |
|
||||
| 命令参数 | parameters |
|
||||
| 标准输出 stdout | 返回值 result |
|
||||
| 管道串联 `\|` | Agent 多步调用 |
|
||||
| Shell 脚本 | Agent 框架 |
|
||||
|
||||
> 工具就是工具,无论包装成命令、函数还是协议,内核都是**输入 → 处理 → 输出**。
|
||||
|
||||
---
|
||||
|
||||
## 五、MCP 是什么?谁来实现它?
|
||||
|
||||
**MCP(Model Context Protocol)** 是 Anthropic 在 2024 年提出的标准化协议,专门解决"AI 模型如何调用外部工具"的问题。
|
||||
|
||||
可以理解为:**AI 世界的 USB 接口标准。**
|
||||
|
||||
### 谁来实现?
|
||||
|
||||
- **工具方(MCP Server):** 工具软件开发者按照 MCP 规范实现 Server 端,暴露工具能力
|
||||
- **模型/客户端(MCP Client):** Claude、Cursor 等按同一规范调用,无需为每个工具单独适配
|
||||
|
||||
### 传输方式
|
||||
|
||||
| 方式 | 场景 |
|
||||
|---|---|
|
||||
| 本地进程(stdio) | MCP Server 跑在本地,模型直接调用本地进程 |
|
||||
| 远程 HTTP/SSE | MCP Server 部署在云端,模型通过**网络请求**调用 |
|
||||
|
||||
**注意:** 远程方式本质上就是网络 API 调用,所以 MCP 内置了 OAuth 认证来保障安全。
|
||||
|
||||
---
|
||||
|
||||
## 六、大模型是如何调用 API 的?
|
||||
|
||||
### 传统 API 调用 vs 大模型调用
|
||||
|
||||
| | 传统代码调用 | 大模型调用 |
|
||||
|---|---|---|
|
||||
| **调用时机** | 程序员硬编码决定 | 模型运行时**动态决定** |
|
||||
| **调用逻辑** | 确定性 | 概率性/推理性 |
|
||||
| **输入参数** | 代码变量 | 从自然语言中提取 |
|
||||
| **执行者** | 代码本身 | **外部系统代为执行** |
|
||||
|
||||
### 关键理解
|
||||
|
||||
> 模型输出的不是"执行",而是"调用意图"(结构化描述)。
|
||||
> 真正的执行由外部系统完成。
|
||||
> 模型做的是**决策**,不是**执行**。
|
||||
|
||||
---
|
||||
|
||||
## 七、Function Calling、MCP、Agent 框架的层次关系
|
||||
|
||||
```
|
||||
┌─────────────────────────┐
|
||||
│ Agent 框架 │ ← 调度层:决定做什么、做几步
|
||||
│ LangChain / AutoGen 等 │ (多步循环:思考→行动→观察)
|
||||
├─────────────────────────┤
|
||||
│ Function Calling │ ← 协议层:模型表达调用意图
|
||||
│ MCP │ (MCP 是 Function Calling 的标准化封装)
|
||||
├─────────────────────────┤
|
||||
│ 实际 API / 工具 │ ← 执行层:真正干活
|
||||
│ 天气 / 搜索 / 邮件 / DB │
|
||||
└─────────────────────────┘
|
||||
```
|
||||
|
||||
### Function Calling vs MCP
|
||||
|
||||
| | Function Calling | MCP |
|
||||
|---|---|---|
|
||||
| **定义工具的人** | 每个开发者自己写 | 工具方统一提供 |
|
||||
| **执行工具的人** | 开发者自己实现 | MCP Server 负责 |
|
||||
| **可复用性** | 低 | 高 |
|
||||
| **适合场景** | 自定义工具 | 通用标准工具 |
|
||||
|
||||
> Function Calling 是**地基**,MCP 是**标准化建材**。没有 MCP,Function Calling 照样能用,只是更零散。
|
||||
|
||||
### Agent 框架的核心循环(ReAct 模式)
|
||||
|
||||
```
|
||||
用户提问
|
||||
→ 【思考】规划任务步骤
|
||||
→ 【行动】调用工具 A
|
||||
→ 【观察】获取结果
|
||||
→ 【思考】是否需要继续?
|
||||
→ 【行动】调用工具 B
|
||||
→ 【观察】...
|
||||
→ 直到任务完成,输出最终回答
|
||||
```
|
||||
|
||||
Agent 框架(LangChain 等)负责管理这个循环,最终执行仍然靠 Function Calling 或 MCP。
|
||||
|
||||
---
|
||||
|
||||
## 八、GUI 是曾经的竞争力,未来可能是阻碍
|
||||
|
||||
| | GUI 时代 | AI 时代 |
|
||||
|---|---|---|
|
||||
| **谁在操作软件** | 人 | 越来越多是 AI |
|
||||
| **交互方式** | 眼睛看、手点击 | 文字/语言指令 |
|
||||
| **GUI 的价值** | 降低人的使用门槛 | 反而成为 AI 的障碍 |
|
||||
|
||||
**人需要 GUI,但 AI 不需要。**
|
||||
|
||||
用户要的从来不是"使用 Photoshop",而是图像处理的结果。当 AI 可以直接调用代码/API 完成任务时,Photoshop 可能根本不会出现在链条里。
|
||||
|
||||
> GUI 是为**人看不懂代码**而生的。
|
||||
> AI 时代,代码/协议才是第一公民,
|
||||
> GUI 正在从**入口**退化为**可选的展示层**。
|
||||
|
||||
---
|
||||
|
||||
*笔记生成时间:2026年5月*
|
||||
Reference in New Issue
Block a user