Skip to content

Commit 0cfa11e

Browse files
committed
auto published by siyuan-plugin-publisher
1 parent 91aceca commit 0cfa11e

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

_posts/2025-02-19-tool-calling-principle-from-reasoning-to-training-z1errmh.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ published: true
3737

3838
此外,为进一步理解 LLM 为何会响应工具调用请求,本文还给出了 Tool Call 的微调流程。
3939

40-
# LLM 的训练流程
40+
## LLM 的训练流程
4141

4242
> 这部分介绍了一个大模型从零开始训练都会经历哪几步,给读者一个对大模型的全局了解。
4343
>
@@ -52,7 +52,7 @@ published: true
5252
2. **有监督微调(SFT)。** 在预训练基座(Base Model)上注入对话数据(如人工标注的问答对),通过指令微调范式(Instruction Tuning)使模型掌握遵循指令、生成结构化响应的能力。
5353
3. **强化学习反馈(RLHF)。** 通过人类的偏好、评价或直接指导来优化智能体的行为,使其更符合人类的期望和价值观。通过该阶段,也能优化生成文本的可读性、改变思维方式等。
5454

55-
## 基本概念
55+
### 基本概念
5656

5757
* **「聊天模板」**
5858

@@ -71,7 +71,7 @@ published: true
7171

7272
在这过程中,关键是通过标注数据训练模型**生成结构化指令**。例如,可以将工具描述、参数提取示例作为输入,训练模型生成结构化调用指令。
7373

74-
# LLM 的推理流程(工具调用)
74+
## LLM 的推理流程(工具调用)
7575

7676
接下来,我们将深入探究工具调用时,一轮 LLM 请求的完整生命周期,详细剖析从请求发起直至最终响应的全链路处理流程。在此过程中,我们将以兼容 OpenAI Tool Calling 标准的实现为例展开讲解。
7777

@@ -99,7 +99,7 @@ published: true
9999
* 「大语言模型」则是核心的模型文件,它能够接收一段文本并完成内容补全。
100100
* 「外部工具」是实际执行工具处理任务的所在,其形式具有多样性,既可能是客户端编写的一段 Python 函数,也可能是通过 Python 封装的外部 HTTP 请求。
101101

102-
## 1. 客户端:发送对话补全请求
102+
### 1. 客户端:发送对话补全请求
103103

104104
客户端会构建包含工具描述的标准化请求,下面以加法器 `number_adder`​ 的调用为例进行说明。当需要进行工具调用时,我们需将工具描述作为请求参数的一部分。
105105

@@ -132,7 +132,7 @@ published: true
132132
}
133133
```
134134

135-
## 2. 推理框架:格式化请求
135+
### 2. 推理框架:格式化请求
136136

137137
推理框架接收到请求后,会按照特定的**聊天模板**对输入进行格式化处理。
138138

@@ -171,7 +171,7 @@ Here is a list of functions in JSON format that you can invoke.
171171
<|start_header_id|>assistant<|end_header_id|> // 给出start标签和角色,期望模型补全对话内容。
172172
```
173173

174-
## 3. 大语言模型:生成工具调用指令
174+
### 3. 大语言模型:生成工具调用指令
175175

176176
模型在处理请求后,会生成相应的工具调用响应:
177177

@@ -183,7 +183,7 @@ Here is a list of functions in JSON format that you can invoke.
183183

184184
因为此次是一条工具调用响应,涉及到多轮调用。模型在识别到该场景后,输出了代表消息结束的特殊标识符 `<|eom_id>`​ 而非此轮对话结束的标识符 `<|eom_id>`​.
185185

186-
## 4. 推理框架:返回工具调用指令
186+
### 4. 推理框架:返回工具调用指令
187187

188188
![mermaid-diagram-1740404362250](https://raw.githubusercontent.com/Csrayz/Csrayz.github.io/main/img/in-posts/20250301234159.png)
189189

@@ -237,7 +237,7 @@ Here is a list of functions in JSON format that you can invoke.
237237
}
238238
```
239239

240-
## 5. 客户端:模型调用方
240+
### 5. 客户端:模型调用方
241241

242242
需要再次明确的是,大模型本身并不直接进行工具调用,工具的实际调用发生在客户端。
243243

@@ -262,7 +262,7 @@ def number_adder(a: int, b: int) -> int:
262262

263263
`tool_call_id`​ 主要用途是在并行工具调用时匹配调用请求和返回值
264264

265-
## 6. 客户端:封装工具调用结果并再次请求
265+
### 6. 客户端:封装工具调用结果并再次请求
266266

267267
![mermaid-diagram-1740405063676](https://raw.githubusercontent.com/Csrayz/Csrayz.github.io/main/img/in-posts/20250301234204.png)
268268

@@ -340,7 +340,7 @@ The answer is 5.<|eot_id|>
340340
}
341341
```
342342

343-
# Tool Call 微调流程
343+
## Tool Call 微调流程
344344

345345
在深入理解 LLM 的推理机制后,我们面临着一个关键的技术挑战:如何确保工具调用的**稳定**性和**可靠**性。具体而言,这涉及到两个核心问题:
346346

@@ -354,7 +354,7 @@ X: 今天是多少号?你的工具有:get_day, 参数为{"description":"Ge
354354
Y: {"arguments":"","name":"get_date"}
355355
```
356356

357-
## LLaMA 3.3 微调
357+
### LLaMA 3.3 微调
358358

359359
[LLaMA3.3](https://www.llama.com/docs/model-cards-and-prompt-formats/llama3_3/) 模型中,微调流程通过引入一系列特殊的标记(special tokens)来支持多轮对话和工具调用:
360360

@@ -455,7 +455,7 @@ What is the weather in SF and Seattle?<|eot_id|>
455455

456456
针对工具调用和结构化输出场景微调的对话模型,经过了 STF 或 RLHF 学习后,能够**有效区分**是否需要结构化工具调用。在需要时,模型通常会以较高的概率选择调用工具。
457457

458-
## Qwen2 微调流程
458+
### Qwen2 微调流程
459459

460460
Qwen2 在支持工具调用时采用了**独特的模板化方法**,而非依赖于特殊标记。
461461

@@ -514,7 +514,7 @@ You are a helpful assistant.
514514
✿RETURN✿: 3 + 2 的结果是5
515515
```
516516

517-
# 参考内容
517+
## 参考内容
518518

519519
* https://zhuanlan.zhihu.com/p/713937194
520520
* https://www.llama.com/docs/model-cards-and-prompt-formats/llama3_3/

0 commit comments

Comments
 (0)