文章

Azure OpenAI生成内容流式输出(配置打字机效果)

AI全文总结:笔者使用 ChatGPT PLUS 和 Azure OpenAI 的 GPT–4 时,发现输出效果不同。ChatGPT 流输出,Azure 缓冲后一次性输出。因 Azure 有默认“内容筛选”功能致缓冲延迟,虽申请关闭常被拒,但可配置异步筛选器解决,包括创建自定义筛选器、设置参数等步骤。

问题描述

笔者在使用ChatGPT PLUS和自己配置的Azure OpenAI的GPT-4时,发现输出的效果上有很大不同,ChatGPT会一个字一个字输出,但是Azure的输出是那种憋了很久一次输出一大坨那种,用起来很不舒服。

如下图所示,左侧为OpenAI的接口,打字机效果输出,像人与人之间面对面聊天一样,体验良好,而右侧Azure的接口,像憋了很久拉了一坨大的。 GIF

问题根因

笔者查阅了各种资料,首先是这种一个字一个字的输出效果,很多人会叫它“打字机效果”,实际上这种效果的官方名称是流输出(stream),Azure称作是内容流式处理;

其次是Azure配置的OpenAI为什么没有流式输出,原因是因为Azure OpenAI默认有一个“内容筛选”功能,这个功能是默认开启的,也就是我们部署模型的时候会见到的这个配置 截图

这个功能会在用户输入和大模型输出的时候检测内容是否“有害”,因为Azure OpenAI的初衷就是为了提供给企业,所以这个功能也是所谓的“必须功能”。

而检测过程,是在模型输入时,阻挡“有害”内容,造成的直接后果就是检测不通过,不会交给大模型,直接返回错误,如下图“暴打”: 截图

还有一个过程,就是在模型输出是,也会进行检测,这个检测的原理是缓冲模型的输出,然后检测是否“有害”,这个就造成我们看到得Azure的输出是那种憋了很久一次输出一大坨那种,很不舒服。 GIF

看起来这个功能是在保护用户,实际上是造成了很多用户的流失,笔者看过一份交互研究,OpenAI的打字机效果,完美掩盖了GPT-4的缓慢问题,虽然Azure只是缓冲延迟了秒级别输出,但使用体验是天壤之别,尤其是已经体验过OpenAI流式输出之后。

解决办法:配置异步筛选器

笔者经过一段时间调研,发现这个内容筛选器,微软提供入口可以关闭,但是需要申请,笔者尝试申请了下,2小时后收到邮件直接被拒绝,原因是非微软合作企业,而微软合作的企业国内很少,也就是说这个内容筛选器提供了关闭选项,但是需要申请并且几乎都会被拒绝,这一步大家也可以避雷了不用申请了。

但是笔者无意间在微软提供的内容筛选器文档中看到有这么一段: 截图

并且微软还贴心的附上了对比 截图

注意上图里面有一个流式处理体验,设置异步筛选器之后,就会变成零延迟的。也就是微软自己知道这个问题的存在,也提供了解决办法,但是默认配置是缓冲(拉一坨大的),需要用户自己配置内容筛选器来设置异步筛选器。

按照说明笔者尝试配置了下内容筛选器,模型配置了异步筛选器之后,确实体验到了零延迟的快乐,下面是笔者给出的配置步骤。

配置步骤

这个内容筛选器配置比较简单,但是配置步骤中坑还是有的,一不小心可能配置出来的筛选器直接拒绝回答问题了。

以下是笔者配置的步骤,建议根据步骤配置,以免聊天时各种被屏蔽

  1. 进入Azure OpenAI的模型部署,选择左侧的内容筛选(预览),点创建自定义内容筛选器: 截图
  2. 配置内容筛选器:

    可以自定义筛选器的名称,这里随意,只要不提示错误一般都可以用,然后下面的低中高配置建议是全拉最高,因为最低的含义不是最宽松,而是最严格。 截图

  3. 其他模型(可选)-预览版

    默认,也不用勾选 截图

  4. 添加阻止列表(可选)-预览

    默认即可,不选 截图

  5. 流模式(可选)-预览

    勾选异步筛选器 截图

配置完成,创建内容筛选器 截图

然后编辑所有已部署的模型,配置成自己的内容筛选器 截图

至此配置完成。

找一个套皮GPT验证下筛选器和流模式是否正常: GIF

本文由作者按照 CC BY 4.0 进行授权