యూనిట్ 3 / 11

స్ట్రీమింగ్ మరియు సుదీర్ఘ ప్రతిస్పందనలు

లాభాలు:

  • స్ట్రీమింగ్ అంటే ఏమిటి, ఈవెంట్ రకాలు మరియు అది ఎందుకు అవసరమో వివరించగలరు.
  • max_tokens సమయం ముగిసింది మరియు 128K దీర్ఘ అవుట్‌పుట్ సంబంధాన్ని గ్రహించింది
  • పని భారం ప్రకారం స్ట్రీమింగ్ మరియు స్ట్రీమింగ్ కాని అభ్యర్థనల మధ్య సరైన ఎంపిక చేసుకోవచ్చు

చాట్ ఇంటర్‌ఫేస్‌లో, ప్రతిస్పందన పదం పదం "టైప్" చేయబడిందని మీరు గమనించి ఉండవచ్చు. ఇది దృశ్య వర్ధిల్లడం కాదు; ఇది స్ట్రీమింగ్ అనే సాంకేతికత యొక్క ఫలితం మరియు ఉత్పత్తి-నాణ్యత LLM ఏకీకరణకు తరచుగా తప్పనిసరి. ఈ యూనిట్‌లో, ఫ్లో అంటే ఏమిటి, అది ఏ ఈవెంట్‌లను కలిగి ఉంటుంది, సుదీర్ఘ అవుట్‌పుట్ మరియు టైమ్‌అవుట్‌తో దాని సంబంధం మరియు ఫ్లోను ఎప్పుడు ఉపయోగించాలి మరియు ఎప్పుడు ఉపయోగించకూడదు అని మీరు నేర్చుకుంటారు. మేము ఒక ప్రొఫెషనల్ — లైవ్ అసిస్టెంట్, లాంగ్ రిపోర్ట్ జనరేషన్, బ్యాచ్ ప్రాసెసింగ్ యొక్క నిజమైన టాస్క్‌ల ద్వారా అంశాన్ని కవర్ చేస్తాము.

ఫ్లో అంటే ఏమిటి?

నాన్-స్ట్రీమింగ్ (సింక్రోనస్) అభ్యర్థనతో, మోడల్ మొత్తం ప్రతిస్పందనను ఉత్పత్తి చేసే వరకు మీరు వేచి ఉండండి; సమాధానం సిద్ధమైనప్పుడు, అది ఒక్క ముక్కలో వస్తుంది. స్ట్రీమింగ్ అభ్యర్థనలో, మోడల్ ఉత్పత్తి చేస్తున్నప్పుడు సర్వర్ ప్రతిస్పందన ముక్కను పంపుతుంది. సాంకేతికంగా, ఇది సర్వర్-పంపిన ఈవెంట్‌లతో చేయబడుతుంది (SSE — సర్వర్-పంపిన ఈవెంట్‌లు, ఓపెన్ కనెక్షన్ ద్వారా సర్వర్ వరుసగా చిన్న ఈవెంట్‌లను పంపే పద్ధతి).

వినియోగదారు అనుభవంలో తేడా స్పష్టంగా కనిపిస్తుంది: 8 సెకన్లు తీసుకునే ప్రతిస్పందనపై, నాన్-స్ట్రీమ్ వినియోగదారు 8 సెకన్ల పాటు ఖాళీ స్క్రీన్ వైపు చూస్తారు; స్ట్రీమింగ్ వినియోగదారు మొదటి పదాలను ~0.5 సెకన్లలో చూస్తారు మరియు వచనం ప్రవహించడం ప్రారంభమవుతుంది. గ్రహించిన జాప్యం-వినియోగదారు భావించే నిరీక్షణ-చాలా తగ్గుతుంది, అయితే మొత్తం సమయం మారదు.

ఈవెంట్ రకాలు ఫ్లో

ప్రవాహం అనేది సంఘటనల క్రమం. సంభావితంగా, ఒక సాధారణ ప్రవాహం ఇలా ఉంటుంది:

సంఘటన

అర్థం

సందేశం_ప్రారంభం

ప్రతిస్పందన ప్రారంభమైంది; మోడల్ మరియు ID వంటి హెడర్ సమాచారం వచ్చింది.

కంటెంట్_బ్లాక్_స్టార్ట్

కంటెంట్ బ్లాక్ (ఉదా. టెక్స్ట్) ప్రారంభించబడింది

కంటెంట్_బ్లాక్_డెల్టా

ఒక చిన్న టెక్స్ట్ (డెల్టా) వచ్చింది; మీరు వీటిని సేకరించండి

కంటెంట్_బ్లాక్_స్టాప్

బ్లాక్ పూర్తయింది

సందేశం_డెల్టా

stop_reason మరియు వినియోగం వంటి ముగింపు సమాచారం నవీకరించబడింది

సందేశం_ఆపు

పైగా ప్రత్యుత్తరం ఇవ్వండి

మీ కోడ్ కంటెంట్_బ్లాక్_డెల్టా ఈవెంట్‌లలో టెక్స్ట్ ముక్కలను వరుసగా మిళితం చేస్తుంది; మీరు స్ట్రీమ్ చేయని ప్రతిస్పందన వలె అదే ఖచ్చితమైన వచనంతో ముగుస్తుంది. వినియోగం (టోకెన్ నంబర్లు) సాధారణంగా ప్రవాహం చివరిలో స్పష్టంగా ఉంటాయి - ప్రవాహం ముగిసిన తర్వాత మీరు ఖర్చులను ట్రాక్ చేస్తారు.

చిట్కా: చాలా అధికారిక SDKలు (సాఫ్ట్‌వేర్ డెవలప్‌మెంట్ కిట్ — ప్రొవైడర్ యొక్క రెడీమేడ్ లైబ్రరీ) మీ కోసం స్ట్రీమ్‌ను సేకరించే సహాయకుడిని అందిస్తాయి (ఉదా. stream.get_final_message()). మీరు అన్ని ట్రాక్‌లను మాన్యువల్‌గా నిర్వహించాల్సిన అవసరం లేదు; మీకు పూర్తి వచనం కావాలంటే, వ్యక్తిగత ఈవెంట్‌లను ప్రాసెస్ చేయడం కానీ ప్రత్యక్ష ముద్రణ కోసం ఈ సహాయకుడిని ఉపయోగించండి.

దీర్ఘ ప్రతిస్పందనలు, max_tokens మరియు గడువు ముగిసింది

స్ట్రీమింగ్ యొక్క రెండవ మరియు మరింత సాంకేతిక కారణం గడువు ముగిసింది. HTTP అభ్యర్థన ఒక నిర్దిష్ట వ్యవధిలో పూర్తి కాకపోతే, క్లయింట్ కనెక్షన్‌ను తొలగిస్తుంది. మీరు మోడల్ నుండి పెద్ద అవుట్‌పుట్‌ను అభ్యర్థించినప్పుడు (ఉదా. 40,000 టోకెన్‌ల నివేదిక), నాన్-ఫ్లో కాల్ ఈ పరిమితిని మించి ఉండవచ్చు మరియు సమయం ముగియవచ్చు - అభ్యర్థన విఫలమవుతుంది మరియు మీరు రూపొందించిన టోకెన్‌లకు చెల్లించాల్సి ఉంటుంది.

ఆధునిక మోడల్‌లు ఒకే అభ్యర్థనలో 128,000 టోకెన్‌ల వరకు అవుట్‌పుట్ చేయగలవు. కానీ సూత్రం స్పష్టంగా ఉంది: `max_tokens` విలువ ఎక్కువగా ఉంటే (దాదాపు 16,000 కంటే ఎక్కువ) స్ట్రీమ్‌లను ఉపయోగించండి. స్ట్రీమింగ్ కనెక్షన్‌ని సజీవంగా ఉంచుతుంది మరియు గడువు ముగియకుండా చేస్తుంది; మీరు తక్షణమే పురోగతిని కూడా చూస్తారు.

  • `max_tokens`: మోడల్ ఉత్పత్తి చేయగల గరిష్ట అవుట్‌పుట్ టోకెన్‌లు; ఒక గట్టి పైకప్పు. అంతరాయం ఏర్పడితే, stop_reason max_tokens అందించబడుతుంది.
  • సందర్భ విండో: ఇన్‌పుట్ + అవుట్‌పుట్ మొత్తం తప్పనిసరిగా సరిపోయే విండో. max_tokens అనేది అవుట్‌పుట్ యొక్క సీలింగ్; రెండింటినీ కలపవద్దు.
జాగ్రత్త: పెద్ద max_tokensతో నాన్-ఫ్లో అభ్యర్థనలను విసరడం అనేది ఉత్పత్తిలో ఒక క్లాసిక్ తప్పు. ప్రతిస్పందన లేకుండా, కనెక్షన్ పడిపోతుంది, వినియోగదారు లోపాన్ని చూస్తారు మరియు టోకెన్ ఖర్చు వృధా అవుతుంది. లాంగ్ అవుట్‌పుట్ = స్ట్రీమ్.

ఎప్పుడు ప్రవహించాలి మరియు ఎప్పుడు కాదు?

స్థితి

ప్రాధాన్యత

ఎందుకు

లైవ్ చాట్ / అసిస్టెంట్

ప్రవాహం

గ్రహించిన జాప్యం తగ్గుతుంది, వినియోగదారు పురోగతిని చూస్తారు

సుదీర్ఘ నివేదిక / పత్రం ఉత్పత్తి

ప్రవాహం

గడువు ముగియకుండా నిరోధిస్తుంది, పెద్ద అవుట్‌పుట్‌ను సురక్షితంగా తీసుకువెళుతుంది

చిన్న వర్గీకరణ (ఉదా. ఒకే పద ట్యాగ్)

ప్రవాహం లేదు

అవుట్పుట్ ఇప్పటికే చిన్నది; అదనపు సంక్లిష్టత అనవసరం

బ్యాచ్ ప్రాసెసింగ్

ప్రవాహం లేని/బ్యాచ్

ఫలితాలు తక్షణమే చూపబడవు; యూనిట్ 7 చూడండి

ఆటోమేషన్ దశ (నేపథ్యంలో)

సాధారణంగా ప్రవాహం ఉండదు

మీరు ఫలితాన్ని తదుపరి దశకు పంపుతారు, ప్రత్యక్ష ప్రదర్శన లేదు

కాపీ చేయదగిన ప్రాంప్ట్/టెంప్లేట్‌లు

స్ట్రీమ్ ప్రాంప్ట్ కాదు, కానీ స్ట్రీమ్ ద్వారా ఉత్పత్తి చేయబడిన అవుట్‌పుట్‌ను నిర్వహించడానికి ప్రాంప్ట్‌లు కీలకం. పొడవైన మరియు ప్రవహించే ఉత్పత్తిలో, ముందు నుండి నిర్మాణాన్ని విధించడం నాణ్యత మరియు ట్రేస్బిలిటీ రెండింటినీ పెంచుతుంది.

# పొడవైన నివేదికను విభాగాలుగా విభజించండి (తద్వారా పురోగతి ప్రవాహంలో కనిపిస్తుంది) ఈ ఖచ్చితమైన క్రమంలో కింది శీర్షికలతో నివేదికను వ్రాయండి. ప్రతి శీర్షికను '## 'తో ప్రారంభించండి:## సారాంశం## అన్వేషణలు## సిఫార్సులు## తదుపరి దశలు

# సుదీర్ఘ ఉత్పత్తిలో కత్తిరించబడకుండా ఉండటానికి లక్ష్య పొడవును ఇవ్వండి. మొత్తం వచనం దాదాపు 800 పదాలు ఉంటుంది. భాగాలను సమతుల్యంగా ఉంచండి; చివర్లో సగం వాక్యాన్ని వదలకండి.

# స్ట్రీమింగ్ అసిస్టెంట్ కోసం మొదటి వాక్యాన్ని వెంటనే ఇవ్వండి. ముందుగా నేరుగా ఒక వాక్యం సమాధానం ఇవ్వండి, ఆపై వివరాలలోకి వెళ్లండి. కాబట్టి వినియోగదారు వేచి ఉన్నప్పుడు తక్షణ ఫలితాన్ని చూస్తారు.

# పొడవైన అవుట్‌పుట్‌ను నిర్మాణాత్మకంగా ఉంచండి (కాబట్టి ఇది తర్వాత అన్వయించబడుతుంది) ఈ విభాగాలలోని అవుట్‌పుట్‌ను అవుట్‌పుట్ చేయండి మరియు ప్రతి విభాగాన్ని ప్రత్యేక '###' హెడర్‌తో గుర్తించండి, తద్వారా నేను దానిని ప్రోగ్రామాటిక్‌గా అన్వయించగలను: ### పరిచయం ### బాడీ ### సోర్సెస్

బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్ (దీర్ఘ ఉత్పత్తి)

# బలహీనత ఈ అంశంపై సుదీర్ఘమైన మరియు వివరణాత్మక నివేదికను వ్రాయండి.

# STRONGఈ అంశంపై సుమారు 900 పదాల నివేదికను వ్రాయండి. శీర్షికలు: ## సారాంశం, ## విశ్లేషణ, ## ప్రమాదాలు, ## సిఫార్సులు. ప్రతి శీర్షిక గరిష్టంగా 3 పేరాలు ఉండాలి. చివర్లో సగం వాక్యాన్ని వదలకండి.

శక్తివంతమైన వెర్షన్; ఇది పొడవు, నిర్మాణం మరియు ముగింపు నాణ్యతను ముందుగానే నిర్ణయిస్తుంది. విభాగాలు ప్రవాహంలో వచ్చినందున, వినియోగదారు పురోగతిని స్పష్టంగా చూస్తారు మరియు మోడల్ అంతరాయం యొక్క ప్రమాదానికి వ్యతిరేకంగా నిడివిని స్వయంగా నిర్వహిస్తారు.

మూడు మినీ కేసులు

కేసు 1 — ఖాళీ స్క్రీన్ ఫిర్యాదు. ఒక కన్సల్టింగ్ టీమ్ యొక్క క్లయింట్ అసిస్టెంట్ ఎటువంటి ప్రవాహం లేకుండా ప్రతిస్పందిస్తున్నాడు; సగటు ప్రతిస్పందన 7 సెకన్లు పడుతుంది, వినియోగదారులు "ఇది స్తంభింపజేసిందా?" అతను ఫిర్యాదు చేశాడు. ఒకసారి నేను ప్రవాహంలోకి వచ్చాను, మొదటి పదం ~0.6 సెకన్లలో వచ్చింది; మొత్తం సమయం అలాగే ఉంది, కానీ "నెమ్మదిగా" ఫిర్యాదులు దాదాపు అదృశ్యమయ్యాయి.

కేసు 2 - కాలం చెల్లిన నివేదిక. ఒక ఆర్థిక బృందం 30-పేజీల త్రైమాసిక నివేదికను రూపొందించింది; max_tokens: 30000తో, నో-ఫ్లో అభ్యర్థన 60-సెకన్ల క్లయింట్ గడువులో చిక్కుకుపోతుంది, అభ్యర్థన విఫలమవుతుంది - మరియు ఉత్పత్తి చేయబడిన టోకెన్‌లు ఇన్‌వాయిస్‌కు వ్రాయబడతాయి. వారు ప్రవాహంతో వెళ్ళారు; కనెక్షన్ ప్రత్యక్షంగా ఉంది, నివేదిక పూర్తిగా అందించబడింది మరియు వృధా ఖర్చులు తొలగించబడ్డాయి.

కేసు 3 - అనవసరమైన ప్రవాహం. ఒక కార్యాచరణ బృందం ఇన్‌కమింగ్ ఇమెయిల్‌లను "అత్యవసరం/రెగ్యులర్" అని లేబుల్ చేస్తోంది; అవుట్‌పుట్ అనేది ఒక పదం, కానీ అవి అలవాటుగా ప్రవాహాన్ని ఉపయోగించాయి. ఒక పదం ప్రతిస్పందనలో ప్రవాహం ఎటువంటి ప్రయోజనాన్ని అందించలేదు, కోడ్‌ను అనవసరంగా సంక్లిష్టంగా చేస్తుంది. నేను ఫ్లోలెస్‌కి మారినప్పుడు, కోడ్ సరళీకృతం చేయబడింది మరియు ప్రవర్తన అలాగే ఉంది. పాఠం: స్ట్రీమింగ్ లాంగ్/లైవ్ అవుట్‌పుట్‌లో విలువైనది, ప్రతిచోటా కాదు.

సాధారణ తప్పులు

  • దీర్ఘ అవుట్‌పుట్‌లో స్ట్రీమ్‌లను ఉపయోగించడం లేదు: సమయం ముగిసింది మరియు వృధా అయిన టోకెన్ ధర.
  • చిన్న అవుట్‌పుట్‌లో స్ట్రీమింగ్‌ని ఉపయోగించడం: అనవసరమైన సంక్లిష్టత, సున్నా ప్రయోజనం.
  • స్ట్రీమ్ చివరిలో `stop_reason`ని తనిఖీ చేయడం లేదు: max_tokensతో కత్తిరించబడిన ప్రతిస్పందన పూర్తయినట్లుగా పరిగణించబడుతుంది.
  • డెల్టాలను తప్పుగా విలీనం చేయడం: SDK హెల్పర్‌తో మాన్యువల్ సమ్మషన్ సీక్వెన్స్/మిస్సింగ్ పార్ట్స్ ఎర్రర్‌ను ఉత్పత్తి చేస్తుంది.
  • మధ్య మధ్యలో `వినియోగం`ని చదవడానికి ప్రయత్నిస్తోంది: టోకెన్ నంబర్‌లు సాధారణంగా చివరిలో స్పష్టంగా కనిపిస్తాయి; చివరిలో ఖర్చులను ట్రాక్ చేయండి.
  • ఖర్చు తగ్గింపు కోసం స్ట్రీమింగ్‌ను తప్పుగా అర్థం చేసుకోవడం: స్ట్రీమింగ్ అనుభవం మరియు ఓర్పును మెరుగుపరుస్తుంది; ఇది టోకెన్ ధరను మార్చదు.

లోతుగా: ప్రవాహ విరామాలు మరియు స్థితిస్థాపకత

స్ట్రీమింగ్ అనేది ప్రత్యక్ష కనెక్షన్; ఇది దాని బలం మరియు దుర్బలత్వం రెండూ. కనెక్షన్ మధ్యలో పడిపోతే (నెట్‌వర్క్ హెచ్చుతగ్గులు, క్లయింట్ సమయం ముగిసింది), మీరు ఇప్పటివరకు సేకరించిన వచనాన్ని మీరు అలాగే ఉంచుకుంటారు, కానీ ప్రతిస్పందన అసంపూర్ణంగా ఉంటుంది. దీని కోసం ఉత్పత్తి-నాణ్యత స్ట్రీమింగ్ క్లయింట్ సిద్ధంగా ఉండాలి: ఇది పాక్షిక వచనాన్ని "పూర్తి ప్రతిస్పందన"గా పరిగణించకూడదు లేదా సందేశం_స్టాప్ ఈవెంట్‌ను చూసే వరకు ప్రతిస్పందనను పూర్తి చేయకూడదు.

రెండవ సూక్ష్మభేదం ఏమిటంటే, ప్రవాహం ఖర్చును మార్చదు. మీరు స్ట్రీమింగ్‌తో లేదా లేకుండా ప్రతిస్పందనను స్వీకరించినా టోకెన్ ధరపై ప్రభావం చూపదు; ప్రవాహం అనుభవం మరియు ఓర్పును మాత్రమే మెరుగుపరుస్తుంది. కాబట్టి "మేము స్ట్రీమింగ్‌కు వెళితే, అవి చౌకగా ఉంటాయా?" ప్రశ్నకు సమాధానం లేదు — ధర కోసం, 5వ మరియు 6వ యూనిట్ (మోడల్ ఎంపిక, కాష్) చూడండి.

మూడవ అంశం ఆచరణాత్మక సమతుల్యతను కొట్టడం: ప్రత్యక్ష సహాయకులతో, మొదటి పదం యొక్క వేగవంతమైన రాక (గ్రహించిన ఆలస్యం) అత్యంత విలువైనది; అందువల్ల, మోడల్‌ను నేరుగా సమాధానాన్ని నమోదు చేయమని మరియు ముందుగా చిన్న ఫలితాన్ని ఇవ్వమని అడగడం (4వ యూనిట్‌లోని సిస్టమ్ ప్రాంప్ట్ ద్వారా) ప్రవాహం యొక్క ప్రయోజనాన్ని గుణిస్తుంది. వినియోగదారు మొదటి సెకనులో ఏదైనా అర్థవంతమైనదాన్ని చూసినట్లయితే, వారు తదుపరి వివరాల కోసం ఓపికగా వేచి ఉంటారు. మరోవైపు, నేపథ్యంలో అమలు చేసే ఉద్యోగాలకు ఫ్లో ఎలాంటి సహకారం అందించదు, దీని అవుట్‌పుట్ తదుపరి ఆటోమేషన్ దశకు వెళుతుంది; ఉద్యోగం సరిగ్గా మరియు పూర్తిగా పూర్తి చేయడం మాత్రమే ప్రమాణం.

సారాంశంలో

స్ట్రీమింగ్ ప్రతిస్పందన ముక్కల వారీగా తిరిగి పొందుతుంది, గ్రహించిన జాప్యాన్ని తగ్గిస్తుంది మరియు పెద్ద నిర్గమాంశలపై సమయం ముగియడాన్ని నివారిస్తుంది. లైవ్ అసిస్టెంట్ మరియు లాంగ్ డాక్యుమెంట్ ప్రొడక్షన్ కోసం దాదాపు తప్పనిసరి; షార్ట్/బ్యాక్‌గ్రౌండ్ వర్క్ కోసం ఇది అనవసరం. లాంగ్ ప్రొడక్షన్స్‌లో, ప్రాంప్ట్‌తో ముందు నుండి నిర్మాణం మరియు పొడవును విధించడం నాణ్యత మరియు ట్రేస్‌బిలిటీ రెండింటినీ పెంచుతుంది; ప్రవాహం పూర్తయినప్పుడు, stop_reason మరియు వినియోగం ఖచ్చితంగా తనిఖీ చేయబడతాయి.

అప్లికేషన్ టాస్క్

రెండు దృశ్యాలను ఎంచుకోండి: ఒకటి ప్రత్యక్షం/దీర్ఘకాలం (ఉదా. కస్టమర్‌కు నివేదించండి), ఒక చిన్న/నేపథ్యం (ఉదా. ట్యాగింగ్). (1) మీరు ప్రతిదానికి ప్రవాహాన్ని ఉపయోగించాలా వద్దా అని నిర్ణయించుకోండి మరియు సమర్థించండి. (2) పొడవైన స్క్రిప్ట్ కోసం నిర్మాణాన్ని విధించే ప్రాంప్ట్‌ను వ్రాయండి (శీర్షికలు + లక్ష్య పొడవు). (3) max_tokens విలువలను నిర్ణయించండి. (4) ప్రవాహం ముగింపులో stop_reason మరియు వినియోగంతో మీరు నిర్వహించే తనిఖీలను జాబితా చేయండి.

చెక్లిస్ట్

  • [ ] స్ట్రీమింగ్ అంటే ఏమిటి మరియు అది గ్రహించిన జాప్యాన్ని ఎలా తగ్గిస్తుందో నేను వివరించగలను.
  • [ ] నేను స్ట్రీమ్ మరియు డెల్టా చేరడం యొక్క ప్రాథమిక ఈవెంట్ రకాలను అర్థం చేసుకున్నాను.
  • [ ] పెద్ద max_tokens మరియు గడువు ముగిసిన సంబంధంతో ప్రసారం చేయవలసిన అవసరం గురించి నాకు తెలుసు.
  • [ ] నేను ఏ పనిలో స్ట్రీమింగ్‌ని ఉపయోగించాలో మరియు దేనిలో ఉపయోగించకూడదో నేను నిర్ణయించగలను.
  • [ ] నేను స్ట్రీమ్ చివరిలో stop_reason మరియు వినియోగాన్ని తనిఖీ చేయగలను.