Files
AI-document/学习笔记/AI工具调用机制学习笔记.md

180 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 是什么?谁来实现它?
**MCPModel 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 是**标准化建材**。没有 MCPFunction 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月*