基础篇

F01|先分清:文字、数字、模型和运行它的程序

基础篇约 2.7 千字1 组分步图解

从具体对象与小例子开始,理解计算过程与适用条件。

起点只默认你会加减乘除;不默认学过线性代数、微积分或机器学习。术语从此处开始建立。
本章目录
动态图解 · F01

一句话经过了哪些不同的对象

输入框中的文字,什么时候才变成模型能计算的东西?

可以把这条路理解成“翻译格式”,但不是不断翻译成另一种人类语言。文字先成为编号,再成为数值表示;模型输出又被解释成文字或工具请求。磁盘文件在这条链外,只有宿主读取后把内容放进请求,模型才有机会使用它。

宿主调用模型、访问工具、管理任务的普通程序。
模型参数已经加载的计算系数;本图中的普通推理不更新它们。
中间表示模型对本次输入实际算出来的数字,不是秘密中文草稿。

输入与适用条件:教学文字为“我爱”;此图只区分对象,不给这句话编造商业模型的真实Token编号或答案。完整的小模型逐轮生成见F15。

1 / 6 · 用户文字

第1步,共6步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

一句话经过了哪些不同的对象:用户文字用户文字“我爱”是人能阅读的内容宿主组织请求把任务、规则、历史组织成消息分词编号教学词表:我→1,爱→2查表成为向量每个编号换成一排浮点数模型计算下一项参数固定;本次中间数值改变宿主处理输出显示文本,或验证后执行工具教学流程;高亮表示当前步骤,不表示真实耗时比例。

此时只有字符。界面里能读到“我爱”,不等于神经网络已经处理了它。

本步状态由图形与说明共同给出。

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

分清对象,才能查出“没提供信息”和“提供了却没用好”两类不同故障。

怎样实现

分别追踪用户文字、实际请求、模型输出、工具结果四份记录。

可能的代价与误解

把一段流畅回答当作文件已被修改的证据,会跳过真实执行与验证。

如何判断是否做对

用一个从未发送的测试文件提问,检查宿主是否真的读过它。

从信息对象认识AI系统

理解一个AI系统的运行,首先要知道每一步处理的是什么东西。输入框里的文字、发给服务器的请求、模型内部的数字、磁盘上的代码文件,并不是同一个对象。它们会互相转换,但不能把名称混用。

先看一个没有数学门槛的任务:“读一下文件,告诉我函数为什么报错。”编辑器可以直接把你选中的代码附在请求里,也可以只发送问题,等模型提出读文件要求后再读。这两种情况最后都可能给出答案,但取证过程不同。

你碰到的东西 它是什么 举例
文本 人能阅读的一串字符 “读取函数foo”
请求 程序组织的信息包 问题、历史、工具说明放在一起
编号 用于找到某个条目的整数 编号17代表词表里的一个文本片段
一组数 模型计算中使用的表示 [0.2,-0.4,0.7]
参数 训练时调整、推理时通常固定的一组数 决定如何变换输入的权重
文件 外部环境中的真实内容 磁盘上的app.py
状态 系统记录的当前进展 “已读取,尚未修改”

这里的“对象”只是当前被处理的信息或实体,不要求你先学面向对象编程。

模型不是一位住在电脑里、直接看见所有文件的人

模型可以先理解为一个很大的、由许多数字和计算规则组成的函数。函数就是“给定输入,按规则产生输出的东西”。例如规则“输入乘2”,给3便得6;语言模型复杂得多,但输入输出仍由实际计算连接。

推理是使用已有参数计算输出;训练是根据例子和误差调整参数。普通聊天时把新信息放入本轮输入,不等于永久改写模型参数。你后来再问它,能否继续知道,取决于历史或外部记忆是否再次提供。

Agent宿主程序是调用模型、读取文件、执行命令、保存状态的外围程序。模型可以输出“请调用读取文件工具”,宿主检查参数和权限后才真正读取,再把结果交给模型。这里先认识这条关系,具体协议在F22以后展开。

用三个容易混淆的句子检查边界

“模型说文件已修改”只是一份输出;“文件内容确实改变”是环境事实;“新文件通过对应测试”又是一份验证事实。第三件事不能从第一件事推出。把这些对象分开,你才能理解为什么Agent需要工具结果和测试,而不是只靠它自我确认。

同理,“请求包含了一段材料”不保证模型正确利用它;“有一个会话编号”不保证旧消息永远都在;“缓存存在”不保证其内容适合当前模型和当前任务。

本书的数字是怎么来的

后文用很小的词表和向量做手算。词表是文本片段与整数编号的对照表;向量先理解为有顺序的一排数,下一课正式解释。为了看清运算,教材会人为给数字,它们不是某款商业模型的参数或真实语义。

例如写“我→1、爱→2”,只说明本教材演示用这样的编号。现实分词器可能把一个字拆成多个片段,也可能把多个字符合成一个片段。不能把教学编号搬进实际模型。

阅读准备

默认你会加减乘除、能阅读普通程序式步骤;不默认你会线性代数、微积分、概率论或深度学习。前置课会在用到它们以前介绍必要部分。代码是帮助核对过程的第二种表达,不运行代码也可以读完正文。

接下来的次序是:先认识数字怎样摆放,再看文字如何获得编号,接着看几条输入怎样放在一起,以及一个编号怎样被换成一排数。读完这些基础概念,示例中的[2,128,4096]就不再是一串无来由的符号。

运行示例 · F01

同一句“读取配置”,在四个对象中各是什么

输入与条件。假设仓库有一个文件 config.txt,真实内容是 timeout=3。用户要求:“告诉我超时值。”模型和文件之间并没有天然连接。

步骤与对象内部动作中间结果 / 新状态
1用户输入界面接到“告诉我超时值”这是一条任务,不是文件内容。
2组装请求宿主提供任务和 read_file(path) 的说明模型此时知道怎样提出读取请求,但还不知道文件里写什么。
3模型输出产生调用提议 read_file("config.txt")提议是一份数据,文件尚未因此被读取。
4工具执行程序读取磁盘,返回 timeout=3新事实第一次由外部环境进入任务。
5再调用模型把原问题、调用记录和结果一起提交模型可以回答“配置中的超时值为3”;本例没有说明单位,不能擅自补“秒”。

把过程连起来。文字、模型计算、工具调用提议和磁盘操作是四个不同对象。跟踪谁产生了每份数据,就能判断有没有证据。

边界与反例。这是按接口职责构造的执行示例,不是一次真实商业模型请求。文件里的数字若没有单位,答案也不能替它添加单位。

依据与适用范围:[TOOLS]。示例输入和场景由本书明确设定。

课后自检

自检 1

模型输出“已删除”是否证明文件不存在?

查看参考答案收起参考答案
不能。要检查宿主是否执行,以及目标文件的真实状态。文字、动作和验证结果不是同一对象。
自检 2

本轮告诉模型一个事实,参数一定改变了吗?

查看参考答案收起参考答案
没有这个保证。常规推理使用已有参数;新事实通常存在输入上下文中。参数更新要经过另外的训练过程。

机制依据:[F-TENSOR][CHAT][TOOLS]。本节数值与情景除另注外均为原创教学示例;来源不代替中文讲解。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。