Daromadlar:
- Oqim nima ekanligini, hodisa turlarini va nima uchun kerakligini tushuntira oladi.
- max_tokens vaqt tugashini va 128K uzoq chiqish munosabatini tushunadi
- Ish yukiga ko'ra oqimli va oqimsiz so'rovlar o'rtasida to'g'ri tanlov qila oladi
Chat interfeysida javob so'zma-so'z "yozilgan"ligini payqagandirsiz. Bu vizual gullash emas; Bu oqim deb ataladigan texnikaning natijasidir va ko'pincha ishlab chiqarish sifati LLM integratsiyasi uchun majburiydir. Ushbu bo'limda siz oqim nima ekanligini, u qanday hodisalardan iboratligini, uning uzoq chiqish va kutish vaqti bilan bog'liqligini va oqimdan qachon foydalanishni va qachon foydalanmaslikni bilib olasiz. Biz mavzuni professionalning haqiqiy vazifalari - jonli yordamchi, uzoq hisobot yaratish, partiyalarni qayta ishlash orqali yoritamiz.
Flow nima?
Oqimsiz (sinxron) so'rov bilan siz model butun javobni ishlab chiqarguncha kutasiz; Javob tayyor bo'lgach, u bitta bo'lakda keladi. Oqimli so'rovda server javobni model ishlab chiqarayotganda parcha-parcha yuboradi. Texnik jihatdan, bu server tomonidan yuborilgan hodisalar bilan amalga oshiriladi (SSE — Server tomonidan yuborilgan hodisalar, server ochiq ulanish orqali kichik hodisalarni ketma-ket yuboradigan usul).
Farq foydalanuvchi tajribasida yaqqol namoyon bo'ladi: 8 soniya davom etadigan javobda, oqimsiz foydalanuvchi 8 soniya davomida bo'sh ekranga tikiladi; Oqimli foydalanuvchi ~0,5 soniyada birinchi so'zlarni ko'radi va matn oqishni boshlaydi. Qabul qilingan kechikish - foydalanuvchi sezadigan kutish - sezilarli darajada kamayadi, umumiy vaqt esa o'zgarishsiz qoladi.
Hodisalar oqimining turlari
Oqim - bu hodisalar ketma-ketligi. Kontseptual tarzda, odatiy oqim quyidagicha bo'ladi:
voqea
Ma'nosi
message_start
Javob boshlandi; Model va ID kabi sarlavha ma'lumotlari keldi.
content_block_start
Kontent bloki (masalan, matn) boshlandi
content_block_delta
Matnning kichik qismi (delta) keldi; siz bularni yig'asiz
content_block_stop
blok tugallandi
message_delta
stop_reason va foydalanish kabi tugatish ma'lumotlari yangilandi
message_stop
Javob bering
Sizning kodingiz ketma-ketlikdagi matn qismlarini content_block_delta hodisalarida birlashtiradi; siz oqimsiz javob bilan bir xil matn bilan yakunlanasiz. foydalanish (token raqamlari) odatda oqim oxirida aniq bo'ladi - oqim tugagandan so'ng siz xarajatlarni kuzatib borasiz.
Maslahat: Ko'pgina rasmiy SDKlar (Dasturiy ta'minotni ishlab chiqish to'plami — provayderning tayyor kutubxonasi) siz uchun oqimni to'playdigan yordamchini taqdim etadi (masalan, stream.get_final_message()). Barcha treklarni qo'lda boshqarishingiz shart emas; Toʻliq matnni, alohida hodisalarni qayta ishlashni, lekin jonli chop etishni istasangiz, ushbu yordamchidan foydalaning.
Uzoq javoblar, max_tokens va Timeout
Oqimning ikkinchi va ko'proq texnik sababi - bu vaqt tugashi. Agar HTTP so'rovi ma'lum vaqt ichida bajarilmasa, mijoz ulanishni to'xtatadi. Modeldan katta hajmdagi chiqishni so'raganingizda (masalan, 40 000 tokenli hisobot), oqimsiz qo'ng'iroq bu chegaradan oshib ketishi va vaqt tugashi mumkin - so'rov bajarilmaydi va siz yaratilgan tokenlar uchun to'lashingiz kerak bo'ladi.
Zamonaviy modellar bitta so'rovda 128 000 tagacha tokenni chiqarishi mumkin. Ammo asosiy qoida aniq: agar "max_tokens" qiymati yuqori bo'lsa (taxminan 16 000 dan yuqori) oqimlardan foydalaning. Streaming ulanishni saqlab qoladi va vaqt tugashining oldini oladi; Siz ham bir zumda taraqqiyotni ko'rasiz.
- `max_tokens`: model ishlab chiqarishi mumkin bo'lgan maksimal chiqish tokenlari; qattiq shift. Agar uzilish yuzaga kelsa, stop_reason max_tokens qaytariladi.
- Kontekst oynasi: Kirish + chiqish yig'indisi mos kelishi kerak bo'lgan oyna. max_tokens - chiqishning shipi; Ikkisini aralashtirmang.
Diqqat: Katta max_tokens bilan oqimsiz so'rovlarni tashlash ishlab chiqarishdagi klassik xatodir. Javob bo'lmasa, ulanish uziladi, foydalanuvchi xatoni ko'radi va token narxi behuda ketadi. Uzoq chiqish = oqim.
Qachon oqish kerak va qachon emas?
Status
afzal ko'rish
Nima uchun
Jonli suhbat / yordamchi
oqim
Qabul qilingan kechikish kamayadi, foydalanuvchi taraqqiyotni ko'radi
Uzoq hisobot / hujjat ishlab chiqarish
oqim
Vaqt tugashini oldini oladi, katta chiqishni xavfsiz olib boradi
Qisqa tasniflash (masalan, bitta so'z tegi)
oqim yo'q
Chiqish allaqachon kichik; qo'shimcha murakkablik kerak emas
To'plamni qayta ishlash
oqimsiz/to'plam
Natijalar bir zumda ko'rsatilmaydi; 7-qismga qarang
Avtomatlashtirish bosqichi (fonda)
Odatda oqim yo'q
Natijani keyingi bosqichga o'tkazasiz, jonli ekran yo'q
Nusxalanadigan taklif/shablonlar
Oqimning o'zi taklif emas, lekin ko'rsatmalar oqim tomonidan ishlab chiqarilgan mahsulotni boshqarish uchun juda muhimdir. Uzoq va oqimli ishlab chiqarishlarda strukturani old tomondan qo'llash sifatni ham, kuzatuvni ham oshiradi.
# Uzoq hisobotni bo'limlarga bo'ling (shuningdek, jarayon oqimda ko'rinadi) Hisobotni quyidagi sarlavhalar bilan aniq tartibda yozing. Har bir sarlavhani "##" bilan boshlang:## Xulosa## Topilmalar## Tavsiyalar## Keyingi qadamlar
# Uzoq ishlab chiqarishda kesishning oldini olish uchun maqsadli uzunlikni bering. Umumiy matn taxminan 800 so'zdan iborat bo'ladi. Porsiyalarni muvozanatda saqlang; Oxirida yarim jumla qoldirmang.
# Oqimli yordamchi uchun birinchi jumlani darhol bering. Avval bir jumladan iborat to'g'ridan-to'g'ri javob bering, so'ngra tafsilotlarga o'ting. Shunday qilib, foydalanuvchi kutish vaqtida darhol natijani ko'radi.
# Uzoq chiqishni tuzilgan holda saqlang (keyinroq tahlil qilish uchun) Chiqishni ushbu bo'limlarda chiqaring va har bir bo'limni alohida '### ' sarlavhasi bilan belgilang, shunda men uni dasturiy jihatdan tahlil qila olaman: ### KIRISH ### TASAMI ### MANBALAR
Zaif tezkor / Kuchli tezkor (uzoq ishlab chiqarish)
# ZAFIZUshbu mavzu bo'yicha uzoq va batafsil hisobot yozing.
# STRONGUshbu mavzu bo'yicha taxminan 900 so'zdan iborat hisobot yozing. Sarlavhalar: ## Xulosa, ## Tahlil, ## Risklar, ## Tavsiyalar. Har bir sarlavha ko'pi bilan 3 ta paragrafdan iborat bo'lishi kerak. Oxirida yarim jumla qoldirmang.
Kuchli versiya; Bu uzunligi, tuzilishi va tugatish sifatini oldindan aniqlaydi. Bo'limlar oqimga kirganda, foydalanuvchi taraqqiyotni aniq ko'radi va modelning uzilishi xavfiga qarshi uzunligini o'zi boshqaradi.
Uchta mini korpus
1-holat - bo'sh ekran shikoyati. Maslahatchilar guruhining mijoz yordamchisi oqimsiz javob berdi; o'rtacha javob 7 soniya davom etadi, foydalanuvchilar "muzlaydimi?" shikoyat qildi. Men oqimga kirganimdan so'ng, birinchi so'z ~ 0,6 soniyada keldi; Umumiy vaqt bir xil bo'lib qoldi, ammo "sekin" shikoyatlar deyarli yo'qoldi.
2-holat - eskirgan hisobot. Moliyaviy guruh 30 betlik chorak hisobotini tayyorlayotgan edi; Max_tokens: 30000 bilan, oqimsiz so'rov mijozning 60 soniyalik kutish vaqtiga yopishib qoladi, so'rov bajarilmaydi - va yaratilgan tokenlar hisob-fakturaga yoziladi. Ular oqim bilan ketishdi; ulanish jonli bo'lib qoldi, hisobot to'liq yetkazildi va behuda sarflangan xarajatlar bartaraf etildi.
3-holat - keraksiz oqim. Operatsion guruh kiruvchi xatlarni “shoshilinch/muntazam” deb belgilagan; Chiqish bir so'z edi, lekin ular odatda oqimdan foydalanishgan. Oqim bir so'zli javobda hech qanday foyda keltirmadi, bu kodni keraksiz murakkablashtirdi. Men oqimsiz rejimga o'tganimda, kod soddalashtirildi va xatti-harakatlar bir xil bo'lib qoldi. Dars: oqim uzoq/jonli chiqishda qimmatlidir, hamma joyda emas.
Umumiy xatolar
- Uzoq chiqishda oqimlardan foydalanmaslik: Vaqt tugashi va bekor qilingan token narxi.
- Qisqa chiqishda oqimdan foydalanish: Keraksiz murakkablik, nol foyda.
- Oqim oxirida `stop_reason` belgilanmagan: max_tokens bilan kesilgan javob tugallangan deb hisoblanadi.
- Deltalarni noto'g'ri birlashtirish: SDK yordamchisi bilan qo'lda yig'ish ketma-ketlik/etishmayotgan qismlar xatosini keltirib chiqaradi.
- "Usage" ni o'rta oqimda o'qishga harakat qilish: Token raqamlari odatda oxirida aniq bo'ladi; Oxirida xarajatlarni kuzatib boring.
- Xarajatlarni kamaytirish uchun oqimni xato qilish: Streaming tajriba va chidamlilikni oshiradi; Bu token narxini o'zgartirmaydi.
Chuqurroq: Oqim uzilishlari va chidamlilik
Streaming - bu jonli ulanish; Bu ham uning kuchi, ham zaifligi. Agar ulanish o'rtada tushib qolsa (tarmoqning o'zgarishi, mijozning kutish vaqti), siz hozirgacha to'plangan matnni saqlab qolasiz, ammo javob to'liq bo'lmaydi. Ishlab chiqarish sifatidagi oqim mijozi bunga tayyor bo'lishi kerak: u qisman matnni "tugallangan javob" deb hisoblamasligi va message_stop hodisasini ko'rmaguncha javobni tugallangan deb hisoblamasligi kerak.
Ikkinchi noziklik shundaki, oqim xarajatlarni o'zgartirmaydi. Oqimli yoki oqimsiz javob olasizmi, token narxiga ta'sir qilmaydi; oqim faqat tajriba va chidamlilikni yaxshilaydi. Shunday qilib, "agar biz oqimli bo'lsak, ular arzonroq bo'ladimi?" Savolga javob yo'q - xarajat uchun 5 va 6 birliklarga qarang (model tanlash, kesh).
Uchinchi nuqta - amaliy muvozanatni saqlash: jonli yordamchilar bilan birinchi so'zning tez kelishi (sezilgan kechikish) juda qadrlanadi; Shuning uchun, modeldan to'g'ridan-to'g'ri javobni kiritish va birinchi navbatda qisqa natija berishni so'rash (4-birlikdagi tizim so'rovi orqali) oqimning foydasini ko'paytiradi. Agar foydalanuvchi birinchi soniyada mazmunli narsani ko'rsa, ular sabr bilan keyingi tafsilotni kutadilar. Boshqa tomondan, oqim fonda ishlaydigan ishlarga hech qanday hissa qo'shmaydi, uning chiqishi keyingi avtomatlashtirish bosqichiga o'tadi; U erda yagona mezon - bu ishning to'g'ri va to'liq bajarilishi.
Xulosa
Streaming javobni parcha-parcha oladi, bu sezilgan kechikishni kamaytiradi va katta o'tkazuvchanlikdagi vaqt tugashining oldini oladi. Jonli yordamchi va uzoq hujjat ishlab chiqarish uchun deyarli majburiy; Qisqa/fonda ishlash uchun bu kerak emas. Uzoq ishlab chiqarishlarda struktura va uzunlikni old tomondan tezkorlik bilan o'rnatish sifatni ham, kuzatuvchanlikni ham oshiradi; Oqim tugagach, stop_reason va foydalanish albatta tekshiriladi.
Ilova vazifasi
Ikki stsenariyni tanlang: biri jonli/uzoq (masalan, mijozga hisobot), bitta qisqa/fon (masalan, teglash). (1) Har biri uchun oqimdan foydalanasizmi yoki yo'qmi, qaror qiling va asoslang. (2) Uzoq skript (sarlavhalar + maqsad uzunligi) uchun tuzilmani belgilovchi taklifni yozing. (3) max_tokens qiymatlarini aniqlang. (4) Oqim oxirida stop_reason va foydalanish bilan qanday tekshiruvlarni bajarishingizni sanab o'ting.
nazorat ro'yxati
- [ ] Men oqim nima ekanligini va u qanday kechikishni kamaytirishini tushuntira olaman.
- [ ] Men oqim va deltani birlashtirishning asosiy hodisa turlarini tushundim.
- [ ] Men katta max_tokens bilan translatsiya qilish zarurati va vaqt tugashi munosabati haqida bilaman.
- [ ] Men qaysi ish yukida strimingdan foydalanishim va qaysi birida foydalanmasligimni hal qila olaman.
- [ ] Men oqim oxirida stop_reason va foydalanishni tekshirishim mumkin.