Integrace chatbotů s umělou inteligencí do webových aplikací: od základních API po odezvy streamování v Next.js
Naučte se, jak integrovat modely umělé inteligence, jako jsou OpenAI a Anthropic, do webových aplikací. Pokrýváme jednoduchá API volání, Server-Sent Events (SSE) pro streamování odezvy v reálném čase a vytváření chatovacích rozhraní v Next.js.
Integrace umělé inteligence do webových aplikací je dnes jednou z nejžádanějších funkcí. Od automatizovaných robotů zákaznické podpory po chytré osobní asistenty se chatovací rozhraní stávají standardem. Čekání na LLM k vygenerování plné odezvy však může trvat 10 až 30 sekund, což způsobuje špatnou uživatelskou zkušenost. Generování odezvy streamování řeší tento problém zobrazením slov tak, jak jsou generována.
V tomto článku prozkoumáme rozdíly mezi jednoduchými odpověďmi JSON a streamováním a naučíme se, jak vytvořit rozhraní chatbota v reálném čase v Next.js pomocí Server-Sent Events (SSE) a OpenAI SDK.
1. Standardní JSON API Hovory vs. Streamování v reálném čase
Když uživatel spustí požadavek AI, lze k doručení odpovědi použít dva hlavní přístupy:
- Standardní JSON Fetch: Klient odešle požadavek a čeká. Server komunikuje s OpenAI, počká na dokončení celé věty, zkompiluje ji do bloku JSON a odešle zpět. To způsobuje dlouhý indikátor načítání a vysokou míru okamžitého opuštění.
- Streamování s událostmi odeslanými serverem (SSE): Server otevře trvalé připojení HTTP. Jakmile model AI vygeneruje nový token (slovo nebo jeho část), server jej odešle do prohlížeče. Uživatel vidí text, který se objeví okamžitě, což snižuje vnímanou dobu načítání na milisekundy.
2. Implementace backendu v Next.js Route Handlers
Next.js App Router podporuje streamingové odpovědi nativně pomocí Web Streams. Takto vypadá zjednodušený obslužný program trasy pro streamování:
Nejprve nakonfigurujeme klienta OpenAI a spustíme dokončení chatu příznakem `stream: true`. Poté transformujeme OpenAI čitelný stream na standardní HTTP Response stream. Prohlížeč čte bloky a zpracovává je za běhu.
3. Vytvoření uživatelského rozhraní chatu a zpracování streamu na klientovi
Na frontendu používáme stav React k uchovávání zpráv a správě toku odpovědí. Standardní „fetch“ API je schopen číst streamovaná data pomocí čtečky „ReadableStream“:
- Přečtěte si čtečku těla odpovědi. Pomocí smyčky `while(true)` čtěte příchozí bloky pomocí `reader.read()`. Dekódujte tyto binární bloky na textové řetězce pomocí `TextDecoder`.
- Aktualizujte stav zprávy v reálném čase přidáním nových tokenů k poslední zprávě, jakmile dorazí, což způsobí, že React se znovu vykreslí a dynamicky zobrazí proud slov.
- Při tisku nového obsahu se automaticky posouvá na konec kontejneru chatu, takže uživatel vždy vidí nejnovější řádky.
4. Řešení případů hran a správa chyb
Vytváření chatových aplikací na produkční úrovni vyžaduje zvláštní pozornost k detailům:
- Přerušení připojení: Implementujte logiku opětovného připojení a stavy výstrah, pokud se tok HTTP během generování neočekávaně přeruší.
- Zrušit požadavky: Poskytněte v uživatelském rozhraní tlačítko „Zastavit generování“. Pomocí `AbortController` ve svých požadavcích Fetch sdělte serveru, aby zrušil požadavek LLM a přestal plýtvat API náklady.
- Markdown a vykreslování kódu: LLM odpovědi často obsahují tabulky Markdown nebo formátované bloky kódu. K vykreslení strukturovaných rozvržení používejte komponenty jako `react-markdown` a zvýrazňovače syntaxe.
Závěr: Upgradujte své uživatelské prostředí pomocí Streaming AI
Streamování odezvy v reálném čase je nutností pro moderní webové aplikace řízené umělou inteligencí. Využitím událostí odeslaných serverem, Next.js streamování tras a responzivních React chatovacích kontejnerů můžete vytvářet interaktivní rozhraní, která působí rychle, živě a uhlazeně.
Chcete do své firemní aplikace integrovat OpenAI, Anthropic nebo vlastní místní LLM řešení s funkcemi streamování? Kontaktujte nás pomocí kontaktního formuláře níže a pojďme to správně postavit!
Potřebujete to postavit, ne jen vysvětlit?
AI řešení pro podnikání: RAG, agenti, Next.js. Přímý dodavatel.
Jste připraveni diskutovat o svém projektu?
Jsem senior webový inženýr se specializací na React a Next.js – dostupné pro projekty na volné noze po celém světě.
Umístění
Kyjev, Ukrajina
Upwork
Zobrazit profilTelegram
Kontaktujte měViber
Kontaktujte mě