机器人

Telegram 机器人如何使用话题与流式文本:并行对话与实时 AI 生成

解析 Telegram 机器人流式回复的原理:消息通过反复编辑而非逐字输入来“生长”,受速率限制影响分批到达,格式通常最后才出现。文章还说明何时该用流式、何时不该用,以及如何用话题把多个对话分开。

内容导读

解析 Telegram 机器人流式回复的原理:消息通过反复编辑而非逐字输入来“生长”,受速率限制影响分批到达,格式通常最后才出现。文章还说明何时该用流式、何时不该用,以及如何用话题把多个对话分开。

Telegram 机器人如何使用话题与流式文本:并行对话与实时 AI 生成主题插画

有些机器人会当着你的面把答案写出来:一条消息先出现,然后逐渐变长,最后定型。其实并没有人在打字——机器人只是在答案陆续生成的过程中,反复编辑同一条消息。

它让人感觉很有生命力,也改变了回复应该怎么写,因为一条不断变化的消息,在变化过程中是没法读的。

你将能够做到

  • 解释一条“生长中的消息”到底是什么。
  • 判断什么时候流式输出有帮助,什么时候只会让人烦。
  • 在同一个房间里把多个对话彼此分开。
  • 认识到机器人所面对的各种限制。

同一条消息被反复编辑——所以只有最终版本才是完整的。

这是编辑,不是打字

机器人无法一个字母一个字母地发送。它的做法是先发一条简短的消息,然后在答案逐渐生成时反复替换其内容,这就产生了“生长”的效果——也解释了你可能注意到的所有奇怪现象。

文字是跳着出现的,而不是流畅地流出,因为它是分批到达而非连续到达。格式通常只在最后才出现,因为半张表格或未闭合的代码块没法正常渲染。而在网络不佳时,你可能会看到消息从一小段直接跳到完整内容,因为中间版本根本没送达你这里。

这些都不是故障。对于耗时较长的任务来说,这是一种合理的进度展示方式,而另一种做法——先空白等待,然后突然冒出四段文字——即便整体更快,感觉也要糟糕得多。

消息的更新频率是有上限的 编辑操作有速率限制,所以文字才会以肉眼可见的块状出现,而不是平滑流出。更新过于频繁的机器人会被限流,结果反而更慢,所以你看到的分批是刻意的折中,而不是马虎。
为什么格式只在最后才出现?

因为不完整的格式就是坏掉的格式。一张只有两行的表格、一个写了一半的链接、一个还没闭合的代码块——这些都无法正确显示,所以明智的机器人会先以纯文本流式输出,等答案完整后再套用结构。如果你读的是中间版本,那你读的就是草稿。

简短的答案应该用流式输出吗?

不应该,而这是最常见的误用。流式输出存在的意义是填补等待;如果答案只有两行,就没有等待需要填补,动画只会拖延一个本可以完整到达的答案。长回复用流式,短回复直接发。让用户盯着三个词自己拼装出来,等于强迫他看一场表演。

它在群组里会怎样?

它会霸占整个房间。一条每几分之一秒就变化一次的消息,会一直停在所有人屏幕的底部,而其他人正想说话,在活跃的群组里这确实很打扰。在共享空间里,更好的做法是先简短确认,再发一条完整的答案——把流式输出留给私聊,那里只有提问的人在看。

我能中止它吗?

只有当机器人提供这个功能时才行,通常是消息上的一个按钮。没有的话,客户端没有办法取消另一方正在写的内容——你可以离开聊天,但消息还是会写完。对机器人开发者来说,这就是一个理由:任何可能长时间运行的功能都应该带上停止控件。

值得在答案写完前就复制吗?

不值得。复制一条还在被编辑的消息,你拿到的只是那一刻的内容,往往句子还没写完,也没有最终格式。留在聊天里的始终是完成版,所以多等一会儿永远是对的——而且如果答案很重要,完成版也是唯一值得引用的版本。

为什么有些机器人为此使用话题?

因为在一个消息流里塞进好几个长答案会变得没法读。给每个对话单独一个话题,能让问题和答案待在一起,也避免两组交流互相穿插。这跟繁忙群组使用话题是同一个道理,只是用在了某个参与者会大段写作的房间里。

如果你是开发者

三个决定就能解决大部分问题。只对足够长的内容用流式输出。按足够可读的批次更新,而不是按限制允许的最快频率更新——变化速度快过人的阅读速度,比按段落到达的文字更糟。并且始终以一次干净利落的最终编辑收尾,这样留在聊天里的才是一条格式良好的消息,而不是动画的最后一帧。

第四个决定经常被跳过:想清楚中途失败时该怎么办。一条停止生长、永远没有完成的消息,会在别人的聊天里留下一个被截断的片段,而且没有任何迹象表明出了问题。把它编辑成“答案被中断”只多花一次调用,却是坏掉的机器人和“遇到了问题的机器人”之间的区别。

半完成的消息看起来和完整的一样 聊天里没有任何标记表明一条流式消息还在进行中,所以一条卡住的回复和一条已经结束的回复无法区分。无论你做什么,都要让答案的结束变得可见。

使用它们

  1. 等它稳定下来再读 中间的文字是草稿。
  2. 只复制完成的版本 编辑中途复制会被截断。
  3. 格式总是最后才来 不完整的结构无法渲染。
  4. 开发者:只对长答案用流式 短答案直接发就好。
  5. 别在繁忙群组里用流式 它会占住屏幕底部。
  6. 标出结束,也标出失败 除此之外没人会标。

← 返回 TG知识库