InBox: BV1wPEm6DEzS ToolUse & Function Calling笔记 (via Milky)
This commit is contained in:
63
InBox/BV1wPEm6DEzS-ToolUse-FunctionCalling笔记.md
Normal file
63
InBox/BV1wPEm6DEzS-ToolUse-FunctionCalling笔记.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# 从原理到代码,讲清楚大模型的 Tool Use 和 Function Calling | BV1wPEm6DEzS
|
||||||
|
|
||||||
|
Milky 整理
|
||||||
|
|
||||||
|
## 概念解析
|
||||||
|
|
||||||
|
| 术语 | 定义 | 特点 |
|
||||||
|
|------|------|------|
|
||||||
|
| Function Calling | 大模型基于用户输入,自主决策是否调用外部工具的机制 | 专注于函数调用的决策能力 |
|
||||||
|
| Tool Use | 将函数定义拓展为更广泛概念的工具调用模式 | 可包装 API、数据库操作、复杂操作等多种形式 |
|
||||||
|
|
||||||
|
目前业界基本用 Tool Use 来涵盖 Function Calling 的含义。
|
||||||
|
|
||||||
|
## 核心价值
|
||||||
|
|
||||||
|
- 连接外部世界:突破训练数据限制,访问实时信息
|
||||||
|
- 转化推理能力:将推理能力转化为实际行动
|
||||||
|
- 扩展能力边界:计算、数据库、外部服务调用
|
||||||
|
|
||||||
|
## 调用流程(六步)
|
||||||
|
|
||||||
|
1. **工具定义**:告诉大模型有哪些工具可用
|
||||||
|
2. **自主决策**:大模型判断是否需要调用工具
|
||||||
|
3. **生成调用指令**:输出工具名和参数
|
||||||
|
4. **捕获信号**:系统拦截 tool_calls 信号
|
||||||
|
5. **执行工具**:系统层执行工具,获取结果
|
||||||
|
6. **回传结果**:返回给大模型,生成最终回复或继续循环
|
||||||
|
|
||||||
|
## 代码实战:贷款计算器
|
||||||
|
|
||||||
|
### 工具函数定义 + JSON Schema 描述
|
||||||
|
- 函数用 `tools` 数组描述,含 name/description/parameters
|
||||||
|
- 描述必须详细,"掰开揉碎",因为大模型只认文字
|
||||||
|
|
||||||
|
### 传给大模型
|
||||||
|
- `tool_choice="auto"` 让模型自主决策
|
||||||
|
- 返回 `finish_reason: "tool_calls"` 时表示要调工具
|
||||||
|
|
||||||
|
### 系统层拦截执行
|
||||||
|
- 建立 `function_map` 映射函数名到实际函数
|
||||||
|
- 解析 `tool_calls` 中的 name + arguments
|
||||||
|
- 执行后把结果以 `role: "tool"` 追加到消息上下文
|
||||||
|
- 必须带上 `tool_call_id` 关联
|
||||||
|
|
||||||
|
### 再次调大模型生成最终回复
|
||||||
|
|
||||||
|
## 关键原理
|
||||||
|
|
||||||
|
| 场景 | finish_reason | content | tool_calls |
|
||||||
|
|------|---------------|---------|------------|
|
||||||
|
| 调用工具 | tool_calls | None | 有值 |
|
||||||
|
| 不调用工具 | stop | 有值 | None |
|
||||||
|
|
||||||
|
- **职责分离**:模型只生成调用提示,系统层执行
|
||||||
|
- **上下文完整性**:消息必须包含完整链路(问题→调用→结果→回复)
|
||||||
|
- **自动总结**:模型天然具备根据工具返回生成回复的能力(训练时学过)
|
||||||
|
|
||||||
|
## 补充:Tool Use 与 MCP 的关系
|
||||||
|
|
||||||
|
视频末尾留了问题——Tool Use 和 MCP 的区别与联系,后续展开。
|
||||||
|
|
||||||
|
──────────────────────────────
|
||||||
|
Generated by MilkyAi@Bilibili
|
||||||
Reference in New Issue
Block a user