Akış
Akıcı okunan yapay zeka yanıtları akıtın. Modelden gelen patlamalı parçalar, yetişmek için hızlanan sabit bir hızla gösterilir; yeni kelimelerde yumuşak bir solma ve yazarken bir imleç vardır.
Modeller metni patlamalar halinde gönderir: birkaç kelime, bir duraklama, sonra bir cümle birden. Her parçayı geldiği gibi yazdırmak yanıtı kekeme gösterir. Streaming, aldıklarınızı gösterdiklerinizden ayrı tutar ve saniyede sabit 90 karakterle gösterir.
Parçalar biriktiğinde hız, aradaki farkı yaklaşık 0,3 saniyede kapatacak şekilde yükselir ve akış bittiğinde geri kalan yaklaşık 0,12 saniyede boşaltılır; böylece metin modelin çok gerisinde kalmaz. Emoji ve diğer çok parçalı karakterler gösterim ortasında asla bölünmez ve metin eklenmek yerine, yeniden oluşturmadaki gibi değiştirilirse gösterim iki sürümün ortak olduğu yerden yeniden başlar.
Akmayan metin ilk karede tam olarak render edilir; böylece geçmiş ve sunucu render'ları asla animasyonlanmaz. StreamingText en yeni kelimelere yumuşak bir solma ve yazarken bir imleç ekler. useSmoothText, Markdown dahil herhangi bir renderer'ın önüne koymanız için yalnızca hızlandırmayı verir.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/streaming
AI SDK ile
Bir useChat mesajının her metin parçasını render edin. Parçanın kendi durumu StreamingText'e modelin hâlâ yazıp yazmadığını söyler; bu yüzden tamamlanmış mesajlar ve geçmiş anında görünür.
Markdown ile
Metni herhangi bir renderer'dan önce yumuşatmak için hook'u tek başına kullanın. Streamdown akarken tamamlanmamış Markdown'ı ele alır; react-markdown da aynı şekilde çalışır.
Herhangi bir akışla
Her parçayı bir dizeye ekleyin ve iletin. Bu, fetch, OpenAI ya da Anthropic delta'ları veya server-sent events için aynı şekilde çalışır.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
StreamingText | Hızlandıran, solduran ve imleci gösteren hazır bir metin öğesi. Düz metin yanıtları için kullanın. |
useSmoothText | Tek başına hızlandırma. Şu an gösterilecek metni ve hâlâ yetişip yetişmediğini döndürür. |
StreamingText
Ayrıca children dışındaki her div prop'unu kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
textŞimdiye kadar alınan her şey. Parçalar geldikçe ekleyin. | string | – |
streamingDaha fazla metin gelip gelmeyeceği. İmleci gösterir ve yetişme penceresini açık tutar. | boolean | false |
smoothMetni alındığı gibi render etmek için hızlandırmayı kapatın. | boolean | true |
charsPerSecondHerhangi bir yetişmeden önceki temel okuma hızı. | number | 90 |
useSmoothText(text, options)
{ text, animating } döndürür. animating, gösterilen metin tam metne ulaşana kadar true kalır.
| Prop | Tür | Varsayılan |
|---|---|---|
textŞimdiye kadar alınan tam metin. | string | – |
options.streamingKaynağın hâlâ gönderip göndermediği. | boolean | false |
options.enabledfalse iken hook metni değiştirmeden döndürür. | boolean | true |
options.charsPerSecondTemel okuma hızı. | number | 90 |
- Metin kapsayıcısı, akarken aria-busy içeren polite bir live region'dır; böylece ekran okuyucular her karakter yerine yanıt oturduktan sonra duyurur.
- İmleç dekoratiftir ve yardımcı teknolojilerden gizlenir.
- Azaltılmış harekette kelimeler solmadan belirir ve imleç atmayı bırakır. Hızlandırma kalır; çünkü bu hareketle değil okuma hızıyla ilgilidir.
Şunlarla geliştirildi
Streaming bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
3 dosya, components/blocks/streaming konumuna eklendi.