Yksikkö 3 / 11

Suoratoisto ja pitkät vastaukset

Voitot:

  • Osaa selittää mitä suoratoisto on, tapahtumatyypit ja miksi sitä tarvitaan.
  • max_tokens ymmärtää aikakatkaisun ja 128K pitkän lähtösuhteen
  • Pystyy tekemään oikean valinnan suoratoistopyyntöjen ja muiden kuin suoratoistopyyntöjen välillä työmäärän mukaan

Olet ehkä huomannut, että chat-käyttöliittymässä vastaus "kirjoitetaan" sana sanalta. Tämä ei ole visuaalinen kukoistava; Se on tulosta tekniikasta, jota kutsutaan suoratoistoksi, ja se on usein pakollinen tuotantolaatuisen LLM-integraation kannalta. Tässä osiossa opit mitä virtaus on, mistä tapahtumista se koostuu, sen suhteen pitkälle ulostulolle ja aikakatkaisulle sekä milloin virtaa tulee käyttää ja milloin ei. Käsittelemme aihetta ammattilaisen todellisten tehtävien kautta - live-assistentti, pitkä raportin luominen, eräkäsittely.

Mikä on Flow?

Ei-suoratoistopyynnössä (synkronisessa) odotat, kunnes malli tuottaa koko vastauksen; Kun vastaus on valmis, se saapuu yhtenä kappaleena. Suoratoistopyynnössä palvelin lähettää vastauksen pala palalta mallin luoessa. Teknisesti tämä tehdään palvelimen lähettämien tapahtumien kanssa (SSE - Server-Sent Events, menetelmä, jossa palvelin lähettää pieniä tapahtumia peräkkäin avoimen yhteyden kautta).

Ero tulee ilmeiseksi käyttökokemuksessa: 8 sekunnin vastauksessa ei-stream-käyttäjä tuijottaa tyhjää näyttöä 8 sekunnin ajan; Striimauskäyttäjä näkee ensimmäiset sanat ~0,5 sekunnissa ja teksti alkaa virrata. Havaittu latenssi – käyttäjän tuntema odotusaika – pienenee huomattavasti, mutta kokonaisaika pysyy ennallaan.

Tapahtuman kulkutyypit

Flow on tapahtumien sarja. Käsitteellisesti tyypillinen kulku menee näin:

tapaus

Merkitys

message_start

Vastaus alkoi; Otsikkotiedot, kuten malli ja tunnus, ovat saapuneet.

content_block_start

Sisältölohko (esim. teksti) alkoi

content_block_delta

Pieni pala tekstiä (delta) saapui; keräät näitä

content_block_stop

lohko valmis

viesti_delta

Päivitetyt lopputiedot, kuten stop_reason ja käyttö

message_stop

Vastaa yli

Koodisi yhdistää tekstiä peräkkäin content_block_delta -tapahtumissa; päädyt täsmälleen samaan tekstiin kuin suoratoistetussa vastauksessa. käyttö (tunnistenumerot) on yleensä selvää kulun lopussa – voit seurata kustannuksia, kun kulku on ohi.

Vinkki: Useimmat viralliset SDK:t (Software Development Kit – palveluntarjoajan valmis kirjasto) tarjoavat apuohjelman, joka kerää streamin puolestasi (esim. stream.get_final_message()). Sinun ei tarvitse hallita kaikkia raitoja manuaalisesti; Käytä tätä apuohjelmaa, jos haluat koko tekstin, käsitellä yksittäisiä tapahtumia, mutta suoratulostusta varten.

Pitkät vastaukset, max_tokens ja aikakatkaisu

Toinen ja teknisempi syy suoratoistoon on aikakatkaisu. Jos HTTP-pyyntöä ei suoriteta tietyn ajan kuluessa, asiakas katkaisee yhteyden. Kun pyydät mallilta suurta tulosta (esim. 40 000 merkin raporttia), ei-flow-kutsu voi ylittää tämän rajan ja aikakatkaisu - pyyntö epäonnistuu ja joudut maksamaan luoduista tunnuksista.

Nykyaikaiset mallit voivat tuottaa jopa 128 000 merkkiä yhdellä pyynnöllä. Mutta nyrkkisääntö on selvä: käytä streameja, jos max_tokens-arvo on korkea (noin yli 16 000). Suoratoisto pitää yhteyden elossa ja estää aikakatkaisut; Näet myös edistymisen välittömästi.

  • `max_tokens`: Suurin sallittu tuloste, jonka malli voi tuottaa; kova katto. Jos keskeytys tapahtuu, stop_reason max_tokens palautetaan.
  • Kontekstiikkuna: Ikkuna, johon syötteiden ja tulosten summan tulee mahtua. max_tokens on lähdön yläraja; Älä sekoita näitä kahta.
Varoitus: Ei-flow-pyyntöjen lähettäminen suurilla max_token-arvoilla on klassinen virhe tuotannossa. Ilman vastausta yhteys katkeaa, käyttäjä näkee virheen ja tunnuksen hinta menee hukkaan. Pitkä lähtö = stream.

Milloin Flow ja milloin ei?

Tila

etusija

Miksi?

Live chat / assistentti

virtaus

Havaittu latenssi laskee, käyttäjä näkee edistymisen

Pitkä raportti / asiakirjatuotanto

virtaus

Estää aikakatkaisun, kuljettaa suuren tehon turvallisesti

Lyhyt luokittelu (esim. yksisanainen tunniste)

ei virtausta

Tuotos on jo pieni; ylimääräinen monimutkaisuus tarpeeton

Eräkäsittely

virtaamaton/erä

Tuloksia ei näytetä välittömästi; Katso yksikkö 7

Automatisointivaihe (taustalla)

Yleensä ei virtausta

Siirrät tuloksen seuraavaan vaiheeseen, ei live-näyttöä

Kopioitavissa olevat kehote/mallit

Virta itsessään ei ole kehote, mutta kehotteet ovat kriittisiä virran tuottaman lähdön hallinnassa. Pitkissä ja virtaavissa tuotannoissa rakenteen näyttäminen edestäpäin lisää sekä laatua että jäljitettävyyttä.

# Jaa pitkä raportti osiin (jotta edistyminen näkyy kulussa) Kirjoita raportti seuraavilla otsikoilla, täsmälleen tässä järjestyksessä. Aloita jokainen otsikko "##":## Yhteenveto## Havainnot## Suositukset## Seuraavat vaiheet

# Anna tavoitepituus välttääksesi katkaisun pitkässä tuotannossa. Tekstin kokonaispituus on noin 800 sanaa. Pidä annokset tasapainossa; Älä jätä puolikasta lausetta loppuun.

# Anna ensimmäinen lause välittömästi suoratoistoavustajalle. Anna ensin suora yhden lauseen vastaus ja mene sitten yksityiskohtiin. Joten käyttäjä näkee välittömän tuloksen odottaessaan.

# Säilytä pitkä tuloste rakenteellisena (jotta se voidaan jäsentää myöhemmin) Anna tulos näissä osioissa ja merkitse jokainen osa erillisellä ###-otsikolla, jotta voin jäsentää sen ohjelmallisesti: ### JOHDANTO ### BODY ### LÄHTEET

Heikko kehote / Vahva kehote (pitkä tuotanto)

# HEIKKOKirjoita pitkä ja yksityiskohtainen raportti tästä aiheesta.

# STRONG Kirjoita tästä aiheesta noin 900 sanan mittainen raportti. Otsikot: ## Yhteenveto, ## Analyysi, ## Riskit, ## Suositukset. Jokaisessa otsikossa saa olla enintään 3 kappaletta. Älä jätä puolikasta lausetta loppuun.

Tehokas versio; Se määrittää pituuden, rakenteen ja viimeistelyn laadun etukäteen. Kun osia tulee virtaan, käyttäjä näkee edistymisen selkeästi ja hallitsee pituuden itse mallin katkeamisen riskiä vastaan.

Kolme minikoteloa

Tapaus 1 – Tyhjä näyttö valitus. Konsulttiryhmän asiakasassistentti vastasi ilman virtausta; Keskimääräinen vastaus kestää 7 sekuntia, käyttäjät kysyvät "jäätyykö se?" hän valitti. Kun pääsin virtaan, ensimmäinen sana tuli ~0,6 sekunnissa; Kokonaisaika pysyi samana, mutta "hitaat" valitukset melkein hävisivät.

Tapaus 2 — Vanhentunut raportti. Rahoitustiimi laati 30-sivuisen vuosineljänneksen raportin; Max_tokens: 30000:lla no-flow-pyyntö juuttuisi 60 sekunnin asiakkaan aikakatkaisuun, pyyntö epäonnistuu - ja luodut tunnukset kirjoitettaisiin laskuun. He menivät virran mukana; yhteys säilyi, raportti toimitettiin kokonaisuudessaan ja turhat kustannukset eliminoituivat.

Tapaus 3 – Tarpeeton virtaus. Operaatiotiimi merkitsi saapuvia sähköposteja "kiireellisiksi/säännöllisiksi"; Tulos oli yksi sana, mutta he käyttivät tavallisesti virtausta. Vuosta ei ollut hyötyä yhden sanan vastauksessa, mikä teki koodista tarpeettoman monimutkaisen. Kun vaihdoin flowlessiin, koodi yksinkertaistui ja käyttäytyminen pysyi samana. Oppitunti: suoratoisto on arvokasta pitkässä/live-lähetyksessä, ei kaikkialla.

Yleisiä virheitä

  • Virtojen käyttämättä jättäminen pitkässä ulostulossa: Aikakatkaisu ja hukatut tunnukset.
  • Suoratoiston käyttäminen lyhyessä lähdössä: tarpeetonta monimutkaisuutta, nolla hyötyä.
  • Ei tarkista `stop_reason` streamin lopussa: katkaistu vastaus max_tokensilla katsotaan valmiiksi.
  • Virheellinen deltojen yhdistäminen: Manuaalinen summaus SDK-apuohjelman kanssa tuottaa sekvenssi-/puuttuvien osien virheen.
  • Yritetään lukea "käyttö" puolivälissä: Token-numerot yleensä selviävät lopussa; Pidä kirjaa kustannuksista lopussa.
  • Striimauksen yhdistäminen kustannusten leikkaamiseen: Suoratoisto parantaa kokemusta ja kestävyyttä; Se ei muuta merkkien hintaa.

Deeper: Flow Breaks and Resilience

Suoratoisto on suora yhteys; Tämä on sekä sen vahvuus että haavoittuvuus. Jos yhteys katkeaa kesken (verkon vaihtelu, asiakkaan aikakatkaisu), säilytät tähän mennessä keräämäsi tekstin, mutta vastaus on epätäydellinen. Tuotantolaatuisen suoratoistoasiakkaan tulee varautua tähän: se ei saa käsitellä osittaista tekstiä "valmis vastauksena" eikä myöskään katsoa vastausta valmiiksi ennen kuin se näkee message_stop -tapahtuman.

Toinen hienous on, että virtaus ei muuta kustannuksia. Se, saatko vastauksen suoratoistolla vai ilman, ei vaikuta tunnuksen hintaan. flow vain parantaa kokemusta ja kestävyyttä. Joten "jos aloitamme suoratoiston, ovatko ne halvempia?" Vastaus kysymykseen on ei – katso kustannukset 5. ja 6. yksiköstä (mallin valinta, välimuisti).

Kolmas kohta on käytännön tasapainon löytäminen: live-assistenttien kanssa ensimmäisen sanan nopeaa saapumista arvostetaan suuresti; Siksi mallin pyytäminen syöttämään vastaus suoraan ja antamaan ensin lyhyt tulos (4. yksikön järjestelmäkehotteen kautta) moninkertaistaa virtauksen hyödyn. Jos käyttäjä näkee jotain merkityksellistä ensimmäisen sekunnin aikana, hän odottaa kärsivällisesti seuraavaa yksityiskohtaa. Toisaalta vuo ei vaikuta taustalla suoritettaviin töihin, joiden tulos siirtyy seuraavaan automatisointivaiheeseen; Ainoa kriteeri siinä on, että työ on suoritettu oikein ja täydellisesti.

Yhteenvetona

Striimaus hakee vastauksen pala kerrallaan, mikä vähentää havaittua latenssia ja estää aikakatkaisut suurilla suorituskyvyillä. Melkein pakollinen live-assistentin ja pitkien asiakirjojen tuotannossa; Se on tarpeeton lyhyt/taustatyössä. Pitkissä tuotannoissa rakenteen ja pituuden esittäminen edestä käskyllä ​​lisää sekä laatua että jäljitettävyyttä; Kun kulku on valmis, stop_reason ja käyttö tarkistetaan ehdottomasti.

Sovellustehtävä

Valitse kaksi skenaariota: yksi live/pitkä (esim. raportoi asiakkaalle), yksi lyhyt/tausta (esim. taggaus). (1) Päätä ja perustele, käytätkö virtausta kullekin. (2) Kirjoita kehote, joka määrää pitkän skriptin rakenteen (otsikot + tavoitepituus). (3) Määritä max_tokens-arvot. (4) Listaa suoritettavat tarkistukset stop_reason- ja käytöllä virran lopussa.

tarkistuslista

  • [ ] Osaan selittää, mitä suoratoisto on ja kuinka se vähentää havaittua latenssia.
  • [ ] Ymmärsin streamin ja delta-liitoksen perustapahtumatyypit.
  • [ ] Tiedän tarpeesta suoratoistaa suurilla max_tokensilla ja aikakatkaisusuhteesta.
  • [ ] Voin päättää missä työmäärässä käytän suoratoistoa ja missä en.
  • [ ] Voin tarkistaa stop_reason- ja käytön streamin lopussa.