内容提要
AI聊天机器人从按下回车到输出首个词之间,经历约十几个阶段:组装包含系统提示、工具定义、记忆和对话历史的文档,进行输入安全检查,将文本分词,排队与其他请求共享硬件,然后分预填充和解码两阶段生成。长对话因重新处理全部历史而变慢变贵,缓存和流式技术优化了性能,工具调用则形成循环。
延伸解读
长对话为何变慢变贵
模型本身无记忆,每次请求都要重建整个对话历史。随着对话轮次增加,输入token数不断累积,导致处理时间变长、成本上升。例如,20轮对话的输入量可能接近5000 token,远超首轮。因此,长对话的延迟主要来自输入处理,而非输出速度。
缓存与成本优化
为缓解重复计算,系统会缓存已处理的前缀,缓存输入价格通常仅为普通输入的十分之一。但缓存有有效期,且要求稳定内容放在提示词开头。此外,连续批处理技术可将吞吐量提升23倍,但也会导致相同请求在不同批次下产生不同结果。
工具调用的隐藏成本
工具调用并非一次生成,而是形成循环:模型输出工具请求,应用执行后把结果放回上下文,再重新走一遍完整流程。一次含多次搜索的回复可能经历多次完整往返,导致响应时间显著增加,且每次往返都会重复处理历史上下文,使成本急剧上升。
Q&A
AI聊天机器人在按下回车后到输出第一个词之间发生了什么?
在按下回车后,AI聊天机器人会经历一系列阶段:首先组装包含系统提示、工具定义、记忆和对话历史的文档,然后进行输入安全检查,接着将文本分词,排队等待与其他请求共享硬件,最后分预填充和解码两个阶段生成回复。
为什么长对话会让AI聊天机器人变慢且更贵?
因为模型是无状态的,每次对话都需要重新处理整个对话历史。随着对话轮次增加,输入token数量不断累积,导致处理时间变长和成本增加。
AI聊天机器人如何共享硬件资源?
AI聊天机器人通过批处理共享硬件资源。现代加速器加载模型参数后,可以同时处理多个请求。连续批处理(continuous batching)允许在单个请求完成后立即插入新请求,提高了吞吐量,但也会导致相同请求在不同批次下产生不同结果。
为什么AI聊天机器人的回复是逐字出现的?
因为生成回复分为预填充和解码两个阶段。预填充阶段并行处理所有输入token,产生初始状态;解码阶段逐个生成输出token,每个token依赖前一个,无法并行。流式传输使得生成的token能立即发送给用户,从而逐字显示。
AI聊天机器人如何执行工具调用(如搜索网页)?
模型本身不直接执行工具,而是生成请求工具的文本。应用程序识别该请求并执行工具,然后将结果放回上下文,重新运行整个生成流程。这导致工具调用比普通回复更耗时。
AI聊天机器人的输入安全检查是如何工作的?
输入安全检查由一个独立的小模型执行,在生成前对组装好的文档进行审查。它可能允许、阻止、路由或升级请求。现代系统采用级联设计,先用廉价验证筛选,仅对标记的对话使用昂贵分类器,以降低开销。
为什么AI聊天机器人对相同问题可能给出不同答案?
即使关闭随机性,由于批处理中并发请求数量不同,数值运算的敏感性可能导致结果差异。此外,不同产品对上下文工程的处理不同,也会导致答案不同。
AI聊天机器人的缓存机制如何工作?
缓存机制存储预填充阶段的计算结果,以便在后续生成步骤中重用,避免重复计算。这减少了延迟和成本,但缓存占用大量内存,且通常有有效期。