Üksus 3 / 11

Voogesitus ja pikad vastused

Kasu:

  • Oskab selgitada, mis on voogesitus, sündmuste tüübid ja miks seda vaja on.
  • max_tokens haarab ajalõpu ja 128K pikkuse väljundsuhte
  • Oskab vastavalt töökoormusele teha õige valiku voogesituse ja mittevoogedastustaotluste vahel

Võib-olla olete märganud, et vestlusliideses kirjutatakse vastus sõna haaval. See ei ole visuaalne õitseng; See on voogedastuseks kutsutava tehnika tulemus ja on sageli tootmiskvaliteediga LLM-i integreerimiseks kohustuslik. Selles üksuses saate teada, mis voog on, millistest sündmustest see koosneb, selle seost pika väljundi ja ajalõpuga ning millal kasutada voogu ja millal mitte. Teemat käsitleme läbi professionaali reaalsete ülesannete — otseabi, pika aruande genereerimise, partiitöötluse.

Mis on Flow?

Mittevoogesituse (sünkroonse) päringu korral ootate, kuni mudel annab kogu vastuse; Kui vastus on valmis, saabub see ühes tükis. Voogesituse päringus saadab server vastuse tükkhaaval, kui mudel genereerib. Tehniliselt tehakse seda serveri poolt saadetud sündmustega (SSE — Server-Sent Events, meetod, mille puhul server saadab avatud ühenduse kaudu järjest väikseid sündmusi).

Erinevus ilmneb kasutajakogemuses: vastuseks, mis võtab aega 8 sekundit, vaatab mittevookasutaja 8 sekundit tühja ekraani; Voogedastuskasutaja näeb esimesi sõnu ~0,5 sekundi pärast ja tekst hakkab voolama. Tajutav latentsusaeg – ooteaeg, mida kasutaja tunneb – väheneb oluliselt, samas kui koguaeg jääb muutumatuks.

Sündmuste voo tüübid

Voog on sündmuste jada. Põhimõtteliselt on tüüpiline voog järgmine:

juhtum

Tähendus

message_start

Vastus algas; Päise teave, nagu mudel ja ID, on saabunud.

content_block_start

Sisuplokk (nt tekst) algas

sisu_ploki_delta

Saabus väike tekstitükk (delta); sa kogud neid

content_block_stop

blokk lõpetatud

sõnum_delta

Värskendatud lõputeave, nagu stop_reason ja kasutus

sõnum_peatus

Vasta üle

Teie kood kombineerib järjestikku sisu_block_delta sündmuste tekstiosasid; saate sama täpse teksti kui voogesituseta vastus. kasutamine (lubade numbrid) on tavaliselt voo lõpus selged – jälgite kulusid, kui voog on lõppenud.

Näpunäide. Enamik ametlikke SDK-sid (Software Development Kit – pakkuja valmis teek) pakuvad abistajat, mis kogub teie eest voogu (nt stream.get_final_message()). Te ei pea kõiki lugusid käsitsi haldama; Kasutage seda abimeest, kui soovite täisteksti, töödelda üksikuid sündmusi, kuid reaalajas printimiseks.

Pikad vastused, max_tokenid ja ajalõpp

Voogesituse teine ja tehnilisem põhjus on ajalõpp. Kui HTTP-päringut ei täideta teatud aja jooksul, katkestab klient ühenduse. Kui taotlete mudelilt suurt väljundit (nt aruannet 40 000 märgist), võib vooväline kõne ületada selle limiidi ja aeguda – taotlus nurjub ja te peate genereeritud žetoonide eest maksma.

Kaasaegsed mudelid suudavad ühe päringuga väljastada kuni 128 000 märki. Kuid rusikareegel on selge: kasutage vooge, kui väärtus „max_tokens” on kõrge (umbes üle 16 000). Voogesitus hoiab ühenduse elus ja hoiab ära ajalõpu; Samuti näete koheselt edusamme.

  • "max_tokens": maksimaalne väljundmärk, mida mudel suudab toota; kõva lagi. Katkestuse korral tagastatakse stop_reason max_tokens.
  • Kontekstikaken: aken, kuhu peab mahtuma sisendi ja väljundi summa. max_tokens on väljundi ülemmäär; Ärge segage neid kahte.
Ettevaatust. Mittevootaotluste esitamine suurte max_tokenidega on klassikaline viga tootmises. Ilma vastuseta ühendus katkeb, kasutaja näeb viga ja märgikulu läheb raisku. Pikk väljund = voog.

Millal voolata ja millal mitte?

Olek

eelistus

Miks

Reaalajas vestlus / assistent

voolu

Tajutav latentsusaeg väheneb, kasutaja näeb edusamme

Pikk aruanne/dokumentide koostamine

voolu

Hoiab ära ajalõpu, kannab suurt väljundit ohutult

Lühike klassifikatsioon (nt ühesõnaline silt)

voolu pole

Väljund on juba väike; täiendav keerukus pole vajalik

Partii töötlemine

vooluvaba/partii

Tulemusi ei kuvata koheselt; Vaata üksust 7

Automatiseerimise samm (taustal)

Tavaliselt pole voolu

Saate tulemuse edasi järgmisele etapile, reaalajas kuvamist ei toimu

Kopeeritav viip/mallid

Voog ise ei ole viip, kuid viipad on voo toodetud väljundi haldamisel kriitilise tähtsusega. Pikkade ja voogavate lavastuste puhul tõstab esiküljelt struktuuri kehtestamine nii kvaliteeti kui ka jälgitavust.

# Jagage pikk aruanne osadeks (nii et edenemine oleks voos näha) Kirjutage aruanne järgmiste pealkirjadega, täpselt selles järjekorras. Alustage iga pealkirjaga "##":## Kokkuvõte## Leiud## Soovitused## Järgmised sammud

# Pikemas tootmises kärpimise vältimiseks määrake sihtpikkus. Kogu teksti pikkus on umbes 800 sõna. Hoidke portsjonid tasakaalus; Ärge jätke poolik lause lõppu.

# Andke voogesituse assistendi jaoks kohe esimene lause. Andke esmalt otsene ühelauseline vastus, seejärel minge detailidesse. Nii näeb kasutaja ootamise ajal kohest tulemust.

# Hoidke pikk väljund struktureeritud (et saaks seda hiljem sõeluda) Väljastage väljund nendes jaotistes ja märkige iga jaotis eraldi päisega ###, et saaksin seda programmiliselt sõeluda: ### SISSEJUHATUS ### BODY ### ALLIKAD

Nõrk viip / Tugev viip (pikk tootmine)

# NÕRKKirjutage sellel teemal pikk ja üksikasjalik aruanne.

# STRONG Kirjutage sellel teemal umbes 900-sõnaline aruanne. Pealkirjad: ## Kokkuvõte, ## Analüüs, ## Riskid, ## Soovitused. Iga pealkiri peaks koosnema maksimaalselt 3 lõigust. Ärge jätke poolik lause lõppu.

Võimas versioon; See määrab eelnevalt pikkuse, struktuuri ja viimistluskvaliteedi. Kui lõigud tulevad voolu, näeb kasutaja edenemist selgelt ja juhib pikkust ise, et vältida mudeli katkemise ohtu.

Kolm miniümbrist

Juhtum 1 – tühja ekraani kaebus. Konsultatsioonimeeskonna kliendiassistent vastas ilma vooluta; keskmine reageerimine võtab aega 7 sekundit, kasutajad küsivad "kas see hangub?" kurtis ta. Kui ma voolu sisse sain, tuli esimene sõna ~0,6 sekundiga; Koguaeg jäi samaks, kuid "aeglased" kaebused peaaegu kadusid.

Juhtum 2 – aegunud aruanne. Finantsmeeskond koostas 30-leheküljelise kvartaliaruande; Kui kasutate väärtust max_tokens: 30000, takerdub voo puudumise taotlus 60-sekundilise kliendi ajalõpu vahele, taotlus nurjub ja genereeritud märgid kirjutatakse arvele. Nad läksid vooluga kaasa; ühendus jäi tööle, aruanne edastati täies mahus ja raisatud kulud kõrvaldati.

Juhtum 3 – tarbetu vool. Operatiivmeeskond sildistas sissetulevad meilid kui "kiireloomulised/tavalised"; Väljund oli üks sõna, kuid nad kasutasid tavaliselt voolu. Voog ei toonud ühesõnalises vastuses kasu, muutes koodi tarbetult keeruliseks. Vooluvabale üle minnes kood lihtsustas ja käitumine jäi samaks. Õppetund: voogesitus on väärtuslik pika/reaalajas väljundis, mitte kõikjal.

Levinud vead

  • Vooge ei kasutata pikas väljundis: ajalõpp ja raisatud märgikulu.
  • Voogesituse kasutamine lühikeses väljundis: tarbetu keerukus, null kasu.
  • Voo lõpus ei kontrollita 'stop_reason': kärbitud vastus koos max_tokensiga loetakse lõpetatuks.
  • Deltade vale ühendamine: käsitsi summeerimine SDK abimehega tekitab järjestuse / puuduvate osade vea.
  • Püüab lugeda "kasutust" voo keskel: märginumbrid saavad tavaliselt selgeks lõpus; Jälgige kulusid lõpus.
  • Voogesituse ekslik kasutamine kulude vähendamiseks: voogesitus parandab kogemusi ja vastupidavust; See ei muuda märgi hinda.

Sügavam: voolu katkestused ja vastupidavus

Voogesitus on otseühendus; See on nii selle tugevus kui ka haavatavus. Kui ühendus katkeb keskel (võrgu kõikumine, kliendi ajalõpp), jääb seni kogutud tekst alles, kuid vastus jääb puudulikuks. Tootmiskvaliteediga voogedastusklient peaks selleks valmis olema: ta ei tohiks käsitleda osalist teksti "lõpetatud vastusena" ega lugeda vastust lõpetatuks enne, kui näeb sündmust message_stop.

Teine peensus on see, et voog ei muuda kulusid. See, kas saate vastuse voogedastusega või ilma, ei mõjuta märgi hinda; flow parandab ainult kogemust ja vastupidavust. Nii et "kui läheme voogesitusesse, kas need on odavamad?" Vastus küsimusele on eitav — hinna kohta vaadake 5. ja 6. ühikut (mudelivalik, vahemälu).

Kolmas punkt on praktilise tasakaalu leidmine: elavate assistentide puhul hinnatakse kõrgelt esimese sõna kiiret saabumist (tajutav viivitus); Seega, kui paluda mudelil sisestada vastus otse ja anda esmalt lühike tulemus (4. ühikus oleva süsteemiviipa kaudu), mitmekordistub see voost saadav kasu. Kui kasutaja näeb esimesel sekundil midagi tähenduslikku, ootab ta kannatlikult järgnevat detaili. Teisest küljest ei anna voog mingit panust taustal töötavatesse töödesse, mille väljund läheb järgmisse automatiseerimisetappi; Ainus kriteerium on see, et töö oleks tehtud õigesti ja täielikult.

Kokkuvõttes

Voogesitus hangib vastuse tükkhaaval, vähendades tajutavat latentsust ja vältides suure läbilaskevõime ajalõppusid. Peaaegu kohustuslik reaalajas assistendi ja pikkade dokumentide tootmisel; Lühi-/taustatöö jaoks pole see vajalik. Pikkade lavastuste puhul tõstab struktuuri ja pikkuse esiotsa pealesurumine nii kvaliteeti kui ka jälgitavust; Kui voog on lõppenud, kontrollitakse kindlasti stop_reason ja usage.

Rakenduse ülesanne

Valige kaks stsenaariumi: üks reaalajas/pikk (nt kliendile teatamine), üks lühike/taust (nt sildistamine). (1) Otsustage ja põhjendage, kas kasutate igaühe puhul voogu. (2) Kirjutage viip, mis määrab pika skripti struktuuri (pealkirjad + sihtpikkus). (3) Määrake max_tokens väärtused. (4) Loetlege, milliseid kontrolle te teete koos stop_reason ja kasutamisega voo lõpus.

kontrollnimekiri

  • [ ] Saan selgitada, mis on voogesitus ja kuidas see tajutavat latentsust vähendab.
  • [ ] Sain aru voo ja delta liitumise põhisündmuste tüüpidest.
  • [ ] Ma tean vajadust voogesitada suurte max_tokenidega ja aegumissuhtest.
  • [ ] Saan otsustada, millises töökoormuses kasutan voogedastust ja millises mitte.
  • [ ] Saan voo lõpus kontrollida stop_reason ja kasutust.