Azure Content Filter domyślnie buforuje tokeny zanim je wyśle, przez co streaming wygląda na "paczki" zamiast płynnego strumienia słowo po słowie.
- Wejdź na Azure AI Studio (https://ai.azure.com)
- Wybierz swój zasób OpenAI
- Idź do Safety + Security > Content Filters
- Utwórz nowy filtr lub edytuj istniejący
- W sekcji Streaming mode zmień z "Default" na "Asynchronous Filter"
- Zapisz i przypisz do swojego deploymentu
- ✅ Tokeny płyną natychmiast - bez buforowania
- ✅ Prawdziwy real-time streaming - litera po literze
- ✅ Zero opóźnień - filtr działa asynchronicznie w tle
⚠️ Filtrowanie treści odbywa się po wysłaniu tokena- Szkodliwa treść może pojawić się na chwilę przed flagowaniem
const AZURE_API_VERSION = "2024-12-01-preview"; // ✅ Wspiera async streamingimport { flushSync } from "react-dom";
// Każdy token renderuje się NATYCHMIAST
flushSync(() => {
setMessages([...messagesRef.current]);
});export const runtime = 'nodejs';
export const dynamic = 'force-dynamic';
export const revalidate = 0;
// HTTP headers wymuszają zero cache
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'X-Accel-Buffering': 'no',
'Connection': 'keep-alive'
}Przed włączeniem Asynchronous Filter:
[02:31:33.367Z] token
[02:31:33.367Z] token ← wszystkie w tej samej ms
[02:31:33.367Z] token
[02:31:34.240Z] token ← kolejna paczka
[02:31:34.240Z] token
Po włączeniu Asynchronous Filter:
[02:31:33.001Z] token
[02:31:33.015Z] token ← każdy osobno
[02:31:33.032Z] token
[02:31:33.047Z] token ← płynny strumień