бирдиги 3 / 11

Агым жана узак жооптор

Пайдалар:

  • Агым деген эмне экенин, окуянын түрлөрүн жана ал эмне үчүн керек экенин түшүндүрө алат.
  • max_tokens тайм-аутту жана 128K узак чыгаруу байланышын түшүнөт
  • Иш жүгүнө жараша агымдык жана агымсыз суроо-талаптардын ортосунда туура тандоо жасай алат

Сиз чат интерфейсинде жооп сөзмө сөз "терилген" экенин байкаган чыгарсыз. Бул визуалдык гүлдөө эмес; Бул агым деп аталган техниканын натыйжасы болуп саналат жана өндүрүштүк сапаттагы LLM интеграциясы үчүн көбүнчө милдеттүү болуп саналат. Бул бөлүмдө сиз агым деген эмне экенин, ал кандай окуялардан тураарын, анын узак өндүрүш жана күтүү убакыты менен болгон байланышын жана агымды качан жана качан колдонбоо керектигин билесиз. Биз теманы профессионалдын реалдуу милдеттери — жандуу жардамчы, узак отчетторду түзүү, партияларды иштетүү аркылуу чагылдырабыз.

Flow деген эмне?

Агымсыз (синхрондуу) өтүнүч менен, сиз модель бүт жоопту чыгарганга чейин күтөсүз; Жооп даяр болгондо, ал бир даана болуп келет. Агымдык суроо-талапта сервер жоопту бөлүк-бөлүк менен жөнөтөт. Техникалык жактан, бул серверден жөнөтүлгөн окуялар менен ишке ашырылат (SSE — Server-Sent Events, сервер ачык туташуу аркылуу кичинекей окуяларды катары менен жөнөтөт).

Айырма колдонуучу тажрыйбасында айкын болот: 8 секундга созулган жоопто, агымсыз колдонуучу 8 секунд бош экранды тиктейт; Агымдагы колдонуучу биринчи сөздөрдү ~0,5 секундада көрөт жана текст агып баштайт. Кабыл алынган күтүү убактысы - колдонуучу сезген күтүү - бир топ кыскарат, ал эми жалпы убакыт өзгөрүүсүз калат.

Окуялардын агымынын түрлөрү

Агым - окуялардын ырааттуулугу. Концепция боюнча, типтүү агым мындай болот:

окуя

Мааниси

билдирүү_баштоо

жооп башталды; Модел жана ID сыяктуу баш маалымат келди.

content_block_start

Мазмун блогу (мисалы, текст) башталды

content_block_delta

Тексттин кичинекей бөлүгү (дельта) келди; сен буларды чогулт

content_block_stop

блок бүттү

message_delta

Stop_reason жана колдонуу сыяктуу бүтүрүү маалыматы жаңырды

message_stop

Жооп бериңиз

Кодуңуз ырааттуу түрдө content_block_delta окуяларында тексттин бөлүктөрүн бириктирет; сиз агымсыз жооп сыяктуу так текст менен аяктайсыз. колдонуу (токен сандары) адатта агымдын аягында айкын болот — агым аяктагандан кийин чыгымдарды көзөмөлдөйсүз.

Кеңеш: Көпчүлүк расмий SDK (Программалык камсыздоону өнүктүрүү комплекти — провайдердин даяр китепканасы) сиз үчүн агымды чогултуучу жардамчыны камсыздайт (мис. stream.get_final_message()). Бардык тректерди кол менен башкаруунун кереги жок; Толук текстти, жеке окуяларды иштеп чыгууну, бирок жандуу басып чыгарууну кааласаңыз, бул жардамчыны колдонуңуз.

Узак жооптор, максимум_токендер жана күтүү

Агымдын экинчи жана көбүрөөк техникалык себеби - күтүү убакыты. Эгер HTTP сурамы белгилүү бир убакыттын ичинде аткарылбаса, кардар байланышты токтотот. Модельден чоң чыгарууну талап кылганыңызда (мисалы, 40 000 токендердин отчету), агымсыз чалуу бул чектен ашып кетиши мүмкүн жана убакыт аяктайт — өтүнүч ишке ашпай калат жана сиз түзүлгөн токендер үчүн төлөшүңүз керек болот.

Заманбап моделдер бир суроодо 128 000 токенге чейин чыгара алат. Бирок негизги эреже түшүнүктүү: эгер `max_tokens` мааниси жогору болсо (болжол менен 16 000ден жогору) агымдарды колдонуңуз. Агым байланышты жандуу кармап, күтүүлөрдүн алдын алат; Ошондой эле прогрессти заматта көрөсүз.

  • `max_tokens`: модель чыгара турган максималдуу чыгаруу белгилери; катуу шып. Эгерде үзгүлтүк пайда болсо, stop_reason max_tokens кайтарылат.
  • Контексттик терезе: Киргизүү + чыгаруунун суммасы туура келиши керек болгон терезе. max_tokens - чыгаруунун шыпы; Экөөнү аралаштырбаңыз.
Абайлаңыз: чоң max_tokens менен агымсыз сурамдарды ыргытуу өндүрүштөгү классикалык ката. Жооп жок болсо, байланыш үзүлүп, колдонуучу катаны көрүп, токендин баасы текке кетет. Узун чыгаруу = агым.

Качан агып, качан болбойт?

Статус

артыкчылык

Эмне үчүн

Жандуу чат / жардамчы

агым

Кабыл алынган күтүү азайып, колдонуучу прогрессти көрөт

Узак отчет / документ өндүрүү

агым

Тайм-ауттун алдын алат, чоң өндүрүштү коопсуз алып жүрөт

Кыска классификация (мисалы, бир сөз теги)

агым жок

Продукция буга чейин эле аз; кошумча татаалдыктын кереги жок

Пакеттик иштетүү

агымсыз/партия

Натыйжалар дароо көрсөтүлбөйт; 7-бөлүктү караңыз

Автоматташтыруу кадамы (фондо)

Адатта агым жок

Натыйжаны кийинки кадамга өткөрүп бересиз, жандуу дисплей жок

Көчүрмө чакыруу/Шаблондор

Агымдын өзү ыкчам эмес, бирок агым тарабынан өндүрүлгөн продукцияны башкаруу үчүн эскертүүлөр маанилүү. Узун жана агымдуу өндүрүштө структураны алдыңкы жактан таңуулоо сапатты да, байкоону да жогорулатат.

# Узун отчетту бөлүктөргө бөлүңүз (прогресс агымда көрүнүп турушу үчүн) Отчетту төмөнкү аталыштар менен дал ушундай тартипте жазыңыз. Ар бир аталышты "##" менен баштаңыз:## Жыйынтык## Жыйынтык## Сунуштар## Кийинки кадамдар

# Узак өндүрүштө кыскартпоо үчүн максаттуу узундукту бериңиз. Жалпы текст болжол менен 800 сөздү түзөт. порцияларды тең салмактуу кармоо; Аягына жарым сүйлөм калтырба.

# Биринчи сүйлөмдү агымдык жардамчыга дароо бериңиз. Адегенде түз бир сүйлөм менен жооп бериңиз, анан майда-чүйдөсүнө чейин айтыңыз. Ошентип, колдонуучу күтүп жатканда дароо натыйжаны көрөт.

# Узун чыгарууну структуралаштырыңыз (аны кийинчерээк талдоо үчүн) Бул бөлүмдөрдүн жыйынтыгын чыгарыңыз жана ар бир бөлүмдү өзүнчө '### ' аталышы менен белгилеңиз, ошондуктан мен аны программалык түрдө талдай алам: ### КИРИШҮҮ ### ТАПКАН ### БУЛАКТАР

Алсыз тез / Күчтүү ыкчам (узак өндүрүш)

# АЛСЫЗ Бул тема боюнча узун жана деталдуу баяндама жазыңыз.

# STRONGБул тема боюнча болжол менен 900 сөздөн турган баяндама жазыңыз. Рубрикалар: ## Жыйынтык, ## Талдоо, ## Тобокелдиктер, ## Сунуштар. Ар бир аталыш эң көп дегенде 3 абзацтан турушу керек. Аягына жарым сүйлөм калтырба.

Күчтүү версия; Ал алдын ала узундугун, түзүлүшүн жана бүтүрүү сапатын аныктайт. Бөлүмдөр агып келгенде, колдонуучу прогрессти даана көрөт жана моделдин үзгүлтүккө учурашы коркунучуна каршы узундукту өзү башкарат.

Үч мини Case

1-жагдай - Бош экрандын арызы. Консалтинг тобунун кардар жардамчысы агымсыз жооп берип жатты; орточо жооп 7 секунд талап кылынат, колдонуучулар "ал тоңуп жатабы?" — деп даттанды ал. Мен агымга киргенден кийин, биринчи сөз ~ 0,6 секундада келди; Жалпы убакыт ошол эле бойдон калды, бирок "жай" даттануулар дээрлик жок болду.

2-жагдай - Эскирген отчет. Каржы тобу 30 барактан турган кварталдык отчетту даярдап жаткан; max_tokens: 30000 менен, агымсыз өтүнүч 60 секунддук кардар тайм-аутуна тыгылып калат, сурам ишке ашпай калат — жана түзүлгөн токендер эсеп-фактурага жазылат. Алар агым менен жөнөштү; байланыш жандуу бойдон калды, отчёт толук жеткирилди, текке кеткен чыгымдар жоюлду.

3-жагдай - Керексиз агым. Операциялар тобу келип түшкөн электрондук каттарды “шашылыш/кадимки” деп белгилөөдө; Чыгуу бир сөз болгон, бирок алар адатта агымды колдонушкан. Агым бир сөздөн турган жоопто эч кандай пайда берген жок, бул кодду керексиз татаал кылып койду. Мен агымсыз режимге өткөндө, код жөнөкөйлөштүрүлүп, жүрүм-турум ошол эле бойдон калды. Сабак: агым бардык жерде эмес, узак/жандуу чыгарууда баалуу.

Жалпы каталар

  • Узак чыгарууда агымдарды колдонбоо: Таймут жана текке кеткен токен баасы.
  • Кыска чыгарууда агымды колдонуу: Керексиз татаалдык, нөлдүк пайда.
  • Агымдын аягында `stop_reason` текшерилбейт: max_tokens менен кыскартылган жооп аяктады деп эсептелет.
  • Дельталарды туура эмес бириктирүү: SDK жардамчысы менен кол менен жыйынтыктоо ырааттуулук/жетишпеген бөлүктөр катасын жаратат.
  • `usage` орто агымын окууга аракет кылуу: Токендердин сандары адатта аягында айкын болуп калат; Акырында чыгашаларга көз салыңыз.
  • Чыгымдарды кыскартуу деп жаңылыштык: Агым тажрыйбаны жана туруктуулукту жакшыртат; Ал токендин баасын өзгөртпөйт.

Тереңирээк: Агымдын бузулушу жана туруктуулугу

Streaming - бул түз байланыш; Бул анын күчтүүлүгү да, алсыздыгы да. Эгер туташуу ортого түшүп калса (тармактын термелүүсү, кардар күтүү убакыты), сиз буга чейин топтогон текстти сактап каласыз, бирок жооп толук эмес болот. Бул үчүн өндүрүштүк сапаттагы агымдык кардар даярдалышы керек: ал жарым-жартылай текстти "аякталган жооп" катары карабашы керек жана ал message_stop окуясын көрмөйүнчө жоопту бүттү деп эсептебеши керек.

Экинчи кылдаттык - агым баасын өзгөртпөйт. Сиз агым менен же агымсыз жооп аласызбы, токендин баасына таасир этпейт; агым гана тажрыйбаны жана туруктуулукту жакшыртат. Ошентип, "эгер биз агымга барсак, алар арзаныраак болобу?" Суроого жооп жок - наркы үчүн, 5-жана 6-бөлүктөрдү (моделди тандоо, кэш) караңыз.

Үчүнчү пункт - практикалык тең салмактуулукту сактоо: жандуу жардамчылар менен биринчи сөздүн тез келиши (кабыл алынган кечигүү) жогору бааланат; Ошондуктан, моделден жоопту түз киргизип, адегенде кыска жыйынтыкты берүүсүн сурануу (4-бөлүктөгү системанын сунушу аркылуу) агымдын пайдасын көбөйтөт. Колдонуучу биринчи секундда кандайдыр бир мааниге ээ болсо, анда алар кийинки деталдарды чыдамдуулук менен күтүшөт. Башка жагынан алып караганда, агымдын фонунда иштеген жумуштарга эч кандай салымы жок, анын чыгышы кийинки автоматташтыруу кадамына өтөт; Ал жерде бир гана критерий – бул иштин туура жана толук аткарылышы.

Кыскача айтканда

Агым жоопту бөлүк-бөлүк менен чыгарып, кабыл алынган күтүү убактысын азайтат жана чоң өткөрүмдүүлүктө күтүү убактысын алдын алат. дээрлик тирүү жардамчысы жана узак документ өндүрүү үчүн милдеттүү; Бул кыска/фондук иш үчүн кереги жок. Узун өндүрүштө түзүмүн жана узундугун алдынан ыкчам таңуулоо сапатты да, байкоону да жогорулатат; Агым аяктагандан кийин, токтотуу_себеби жана колдонуу сөзсүз текшерилет.

Колдонмо тапшырмасы

Эки сценарийди тандаңыз: бири жандуу/узак (мисалы, кардарга отчет), бир кыска/фон (мисалы, тег коюу). (1) Ар бири үчүн агымды колдоносузбу же жокпу, чечиңиз жана негиздеңиз. (2) Узун скрипттин структурасын таңуулаган сунушту жазыңыз (башкы аталыштар + максаттуу узундук). (3) max_tokens маанилерин аныктоо. (4) Stop_reason менен кандай текшерүүлөрдү аткара турганыңызды жана агымдын аягында колдонууну тизмектеңиз.

текшерүү тизмеси

  • [ ] Мен агым деген эмне экенин жана ал кабыл алынган күтүү убактысын кантип азайтарын түшүндүрө алам.
  • [ ] Мен агымдын жана дельтанын кошулуусунун негизги окуя түрлөрүн түшүндүм.
  • [ ] Мен чоң max_tokens менен агымдын зарылдыгы жана тайм-аут мамилеси жөнүндө билем.
  • [ ] Мен кайсы жүктөмдө агымды колдонуп, кайсынысында колдонбойм деп чече алам.
  • [ ] Мен агымдын аягында stop_reason жана колдонулушун текшере алам.