F01|先分清:文字、数字、模型和运行它的程序
从具体对象与小例子开始,理解计算过程与适用条件。
本章目录
一句话经过了哪些不同的对象
输入框中的文字,什么时候才变成模型能计算的东西?
可以把这条路理解成“翻译格式”,但不是不断翻译成另一种人类语言。文字先成为编号,再成为数值表示;模型输出又被解释成文字或工具请求。磁盘文件在这条链外,只有宿主读取后把内容放进请求,模型才有机会使用它。
输入与适用条件:教学文字为“我爱”;此图只区分对象,不给这句话编造商业模型的真实Token编号或答案。完整的小模型逐轮生成见F15。
1 / 6 · 用户文字
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
此时只有字符。界面里能读到“我爱”,不等于神经网络已经处理了它。
本步状态由图形与说明共同给出。默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
分清对象,才能查出“没提供信息”和“提供了却没用好”两类不同故障。
怎样实现
分别追踪用户文字、实际请求、模型输出、工具结果四份记录。
可能的代价与误解
把一段流畅回答当作文件已被修改的证据,会跳过真实执行与验证。
如何判断是否做对
用一个从未发送的测试文件提问,检查宿主是否真的读过它。
从信息对象认识AI系统
理解一个AI系统的运行,首先要知道每一步处理的是什么东西。输入框里的文字、发给服务器的请求、模型内部的数字、磁盘上的代码文件,并不是同一个对象。它们会互相转换,但不能把名称混用。
先看一个没有数学门槛的任务:“读一下文件,告诉我函数为什么报错。”编辑器可以直接把你选中的代码附在请求里,也可以只发送问题,等模型提出读文件要求后再读。这两种情况最后都可能给出答案,但取证过程不同。
| 你碰到的东西 | 它是什么 | 举例 |
|---|---|---|
| 文本 | 人能阅读的一串字符 | “读取函数foo” |
| 请求 | 程序组织的信息包 | 问题、历史、工具说明放在一起 |
| 编号 | 用于找到某个条目的整数 | 编号17代表词表里的一个文本片段 |
| 一组数 | 模型计算中使用的表示 | [0.2,-0.4,0.7] |
| 参数 | 训练时调整、推理时通常固定的一组数 | 决定如何变换输入的权重 |
| 文件 | 外部环境中的真实内容 | 磁盘上的app.py |
| 状态 | 系统记录的当前进展 | “已读取,尚未修改” |
这里的“对象”只是当前被处理的信息或实体,不要求你先学面向对象编程。
模型不是一位住在电脑里、直接看见所有文件的人
模型可以先理解为一个很大的、由许多数字和计算规则组成的函数。函数就是“给定输入,按规则产生输出的东西”。例如规则“输入乘2”,给3便得6;语言模型复杂得多,但输入输出仍由实际计算连接。
推理是使用已有参数计算输出;训练是根据例子和误差调整参数。普通聊天时把新信息放入本轮输入,不等于永久改写模型参数。你后来再问它,能否继续知道,取决于历史或外部记忆是否再次提供。
Agent宿主程序是调用模型、读取文件、执行命令、保存状态的外围程序。模型可以输出“请调用读取文件工具”,宿主检查参数和权限后才真正读取,再把结果交给模型。这里先认识这条关系,具体协议在F22以后展开。
用三个容易混淆的句子检查边界
“模型说文件已修改”只是一份输出;“文件内容确实改变”是环境事实;“新文件通过对应测试”又是一份验证事实。第三件事不能从第一件事推出。把这些对象分开,你才能理解为什么Agent需要工具结果和测试,而不是只靠它自我确认。
同理,“请求包含了一段材料”不保证模型正确利用它;“有一个会话编号”不保证旧消息永远都在;“缓存存在”不保证其内容适合当前模型和当前任务。
本书的数字是怎么来的
后文用很小的词表和向量做手算。词表是文本片段与整数编号的对照表;向量先理解为有顺序的一排数,下一课正式解释。为了看清运算,教材会人为给数字,它们不是某款商业模型的参数或真实语义。
例如写“我→1、爱→2”,只说明本教材演示用这样的编号。现实分词器可能把一个字拆成多个片段,也可能把多个字符合成一个片段。不能把教学编号搬进实际模型。
阅读准备
默认你会加减乘除、能阅读普通程序式步骤;不默认你会线性代数、微积分、概率论或深度学习。前置课会在用到它们以前介绍必要部分。代码是帮助核对过程的第二种表达,不运行代码也可以读完正文。
接下来的次序是:先认识数字怎样摆放,再看文字如何获得编号,接着看几条输入怎样放在一起,以及一个编号怎样被换成一排数。读完这些基础概念,示例中的[2,128,4096]就不再是一串无来由的符号。
同一句“读取配置”,在四个对象中各是什么
输入与条件。假设仓库有一个文件 config.txt,真实内容是 timeout=3。用户要求:“告诉我超时值。”模型和文件之间并没有天然连接。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1用户输入 | 界面接到“告诉我超时值” | 这是一条任务,不是文件内容。 |
| 2组装请求 | 宿主提供任务和 read_file(path) 的说明 | 模型此时知道怎样提出读取请求,但还不知道文件里写什么。 |
| 3模型输出 | 产生调用提议 read_file("config.txt") | 提议是一份数据,文件尚未因此被读取。 |
| 4工具执行 | 程序读取磁盘,返回 timeout=3 | 新事实第一次由外部环境进入任务。 |
| 5再调用模型 | 把原问题、调用记录和结果一起提交 | 模型可以回答“配置中的超时值为3”;本例没有说明单位,不能擅自补“秒”。 |
把过程连起来。文字、模型计算、工具调用提议和磁盘操作是四个不同对象。跟踪谁产生了每份数据,就能判断有没有证据。
边界与反例。这是按接口职责构造的执行示例,不是一次真实商业模型请求。文件里的数字若没有单位,答案也不能替它添加单位。
依据与适用范围:[TOOLS]。示例输入和场景由本书明确设定。
课后自检
模型输出“已删除”是否证明文件不存在?
查看参考答案收起参考答案
本轮告诉模型一个事实,参数一定改变了吗?
查看参考答案收起参考答案
机制依据:[F-TENSOR][CHAT][TOOLS]。本节数值与情景除另注外均为原创教学示例;来源不代替中文讲解。