10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure OpenAI Service の非同期変更フィルターによる Stream 対応

Last updated at Posted at 2024-04-02

Azure OpenAI Service では stream = True に設定してもチャンク単位で結果が返ってくるのでちょっと微妙でした。これはデフォルトでコンテンツフィルタリングが同期的に実行されていて、ある程度の文章の長さをバッファしてフィルタリングしているため、トークン単位ではなく、チャンク単位で Stream 結果が返ってきているからです。この同期的処理によって、常に出力コンテンツの安全性が担保されています。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3637343334342f64316335333134362d643632342d636136322d383336322d3965373261623266303462362e676966.gif

今パブリックプレビュー中の「非同期変更フィルター」を使用すると、このフィルタリング処理を Stream 出力と非同期に実行することで OpenAI 社と同様の Stream 処理が実現できるようになりました。

5/22 すべての Azure OpenAI カスタマーが利用できるようになりました。

Azure OpenAI 限定アクセスのレビュー: 変更されたコンテンツ フィルタリング の承認から1日程度経つと、以下のようにコンテンツフィルター作成ウィザードの「ストリーミングモード」の設定を変更できるようになります。この設定を既定から「非同期変更フィルター」に変更して保存します。

image.png

この設定のコンテンツフィルターをモデルのデプロイにセットすれば使用できるようになります。あとは、OpenAI SDK などで、 stream = True に設定すれば、以下のようにトリックではないヌルヌル出力が可能となります。

002.gif

この機能の注意点として、Stream が非同期で停止(最大 1,000 文字の増分)されるまでは本来フィルタリングするべき文章が出力されてしまうことがあります。そのためプログラム処理として必ず出力後に finish_reason および content_filter_result の返却値をチェックしてフィルターに引っかかっていれば速やかに UI を修正することが求められます。

参考

非同期変更フィルターチェック用

トリックで見せる用

10
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?