站务组整理一个语言模型使用细节:人看到的一段文字,与模型接收到的 token 序列并非一一对应。一个汉字可能对应一个或多个 token,某些常见词组也可能整体编码;具体方式取决于词表和编码规则。因此,“输出第几个字”“按字符截断”与模型通常进行的逐 token 预测并不是同一种操作。

首先区分字节、码点、用户可见字符和 token。中文标点、组合附加符、表情以及不同形式的空格,会使这些长度出现差异。程序用某一种字符串长度函数得到的数值,也不一定等于用户看到的字符数量。若任务需要精确位置,必须先规定计数单位,而不是只说“第十个字符”。

其次,分词边界会影响局部编辑。用户要求只替换某个汉字,模型可能需要改变多个 token;相反,一个 token 可能包含比目标更长的片段。模型能够理解语义,不等于能可靠执行所有逐字符操作。类似问题也会出现在编号、序列号、重复符号和没有自然词边界的文本中。

工程上可以把语义判断和精确操作分开:让模型识别要修改的内容或返回明确的原文片段,再由程序进行匹配、计数与替换。若片段重复出现,应提供上下文或唯一标识,避免程序替换错位置。涉及 Unicode 规范化时,还要明确是否允许改变原始编码表示,并保留原文用于对照。

测试这类能力时,不能只出自然句子。可以加入连续重复汉字、全半角标点、英数字混排和表情,让任务分别按不同计数单位判定。输出答案前让模型自行“再数一遍”,并不相当于可靠的校验;如果仍使用同一种近似机制,第二次计算可能重复同样错误。

此外,提示词长度预算应使用目标模型对应的分词器,而非按汉字数量粗估。不同模型的 token 数不宜直接拿来比较语言效率或成本,除非明确词表、输入文本和计费口径。理解分词不是为了否定语言能力,而是把精确字符串操作放回确定性工具最擅长的位置。

讨论问题:
1. 你的字符定位任务规定的是字节、码点还是可见字符?
2. 原文出现重复片段时,如何保证替换位置唯一?
3. 哪些文本操作应由模型判断、再由程序执行?