Vienetas 1 / 11

LLM API pagrindai: užklausų, atsakymų ir pranešimų vaidmenys

Pelnas:

  • Gali apibūdinti pagrindinę LLM API užklausos struktūrą (galinį tašką, modelį, pranešimus, max_tokens)
  • Supranta skirtumą tarp sistemos, vartotojo ir padėjėjo vaidmenų ir pokalbių istorijos be būsenos
  • Gali skaityti ir interpretuoti grąžinamo atsakymo laukus (turinio blokus, sustabdymo_priežastį, naudojimą).

Ankstesniuose moduliuose naudojome dirbtinį intelektą iš pokalbio lango. Bet jei norite įterpti dirbtinį intelektą į savo produktą, automatizavimą ar darbo eigą, pokalbių sąsaja to nenutrauks; Prie modelio reikia prisijungti programiškai, tai yra su kodu arba automatizavimo įrankiu. Šio tilto pavadinimas yra API (Application Programming Interface, sutartis, leidžianti dviem programinei įrangai kalbėti pagal tam tikras taisykles). Baigę šį skyrių žinosite, kas yra LLM (didelės kalbos modelio) API užklausa, kokie pranešimo vaidmenys ir kaip skaityti atsakymą. Tai yra pagrindas, ant kurio bus pastatyta likusi modulio dalis.

Kaip veikia API?

Pagrindinis API srautas yra toks: siunčiate užklausą tam tikru formatu; Serveris pateikia atsakymą tam tikru formatu. LLM paprastai tai yra HTTP skambutis (HTTP: standartinis užklausų ir atsakų perdavimo žiniatinklyje protokolas) į vieną adresą (galinį tašką, fiksuotą adresą serveryje, kuris apdoroja jūsų užklausą). Pavyzdžiui, pranešimų API, visos užklausos siunčiamos vienu adresu ir pateikiamos kaip JSON („JavaScript Object Notation“ – teksto formatas, susidedantis iš raktų/reikšmių porų, kurias gali perskaityti ir žmonės, ir mašinos).

Prašyme nurodote bent šiuos tris dalykus:

  • Modelis: kurį modelį naudosite (pvz., greitą ir pigų modelį arba galingą modelį).
  • max_tokens: didžiausias žetonų skaičius (mažiausias vienetas, kuriame apdorojamas tekstas, kuris bus išsamiai apdorojamas kitame vienete), kurį modelis gali sukurti; y. išėjimo riba.
  • pranešimai: pranešimų, sudarančių pokalbį, sąrašas.

Žingsnis po žingsnio: kaip nustatyti užklausą

  1. Paruoškite galutinį tašką ir kredencialus. Savo API raktą (slaptąją eilutę, įrodančią jūsų tapatybę) pridedate prie užklausos antraštėje. Jūs niekada neįdėsite rakto į kodą; Mes padengsime saugų saugojimą 9 skyriuje.
  2. Pasirinkite modelį ir išvesties limitą. Lengvas modelis + maži max_tokens paprastai užduočiai atlikti; Galingas modelis + didesnė riba sudėtingai užduočiai.
  3. Sukurkite pranešimų sąrašą. List the system instruction, user message, and past rounds (if any).
  4. Išsiųskite užklausą ir išnagrinėkite atsakymą. Skaitykite teksto turinį, sustabdymo priežastį ir prieigos rakto naudojimą iš grąžinto JSON.

Pranešimo vaidmenys: sistema, vartotojas, asistentas

Pokalbį sudaro pranešimai, išdėstyti seka, ir kiekvienas pranešimas turi savo vaidmenį. Vaidmuo lemia, kaip modelis traktuoja tą tekstą.

Vaidmuo

Kas rašo

Tikslas

sistema

Kūrėjas/operatorius

Nuolatinės instrukcijos, asmenybė ir taisyklės, kurios galioja viso pokalbio metu

naudotojas

galutinis vartotojas

Dabartinis vartotojo klausimas arba įvestis

asistentas

modelis

Modelio sukurtas atsakymas (ir ankstesni atsakymai)

Daugumos teikėjų užklausos turinyje sistemos vaidmuo pasiekiamas kaip atskiras sistemos laukas; vartotojas ir asistentas pateikiami paeiliui pranešimų sąraše. Critical point: the system instruction is the high-level instruction, the user message is the request to be answered at that moment.

{ "model": "claude-opus-4-8", "max_tokens": 1024, "system": "Esate įmonės palaikymo asistentas. Pateikite trumpą, oficialų ir patikrintą atsakymą. Negalvokite informacijos, dėl kurios nesate tikri.", "pranešimai": [ { "role": "user", "content": "Kaip pradėti savo grąžinimo procesą?" } ]}

Kalba yra be pilietybės

Čia yra labiausiai paplitusi klaidinga nuomonė: LLM API skambučiai yra be būsenos – serveris neišsaugo atminties tarp dviejų užklausų. Modelis neprisimena jūsų ankstesnio prašymo. Jei nustatote kelių raundų pokalbį, su kiekvienu nauju prašymu turėsite iš naujo išsiųsti ankstesnius pokalbius. Modelio „atmintį“ sudaro jūsų išsiųstų pranešimų sąrašas.

{ "modelis": "claude-opus-4-8", "max_tokens": 512, "messages": [ { "role": "user", "content": "Sveiki, mano vardas Denizas." }, { "role": "asistentas", "content": "Sveiki, Denizai, kaip aš galiu jums padėti?" }, { "role": "user", "content": "Aš ką tik pasakiau savo vardą, ar prisimeni?" } ]}

Ar teisingai atsakysite į trečią žinutę, priklauso nuo to, ar siuntėte abu ankstesnius pranešimus. Jei neatsiųsite, modelis nežinos „Jūra“ ir atsakys neteisingai. Tai taip pat tiesiogiai įtakoja išlaidas: kuo ilgesnis pokalbis, tuo didesnis sąrašas, kiekvienai užklausai reikia daugiau žetonų.

Patarimas: ilgų pokalbių metu apibendrinant ir perkėlus senus turus (santrauka + keli paskutiniai raundai), o ne siųsti visą istoriją, sumažinamos išlaidos ir išsaugomas konteksto langas. Tai pagilinsime 6 ir 11 skyriuose.

Perskaitykite atsakymą

Kai modelis pateikia atsakymą, gaunate struktūrinį objektą, o ne paprastą tekstą. Tipiškos sritys:

{ "id": "msg_01ABC...", "model": "claude-opus-4-8", "role": "asistentas", "content": [ { "type": "text", "text": "Norėdami inicijuoti grąžinimą, eikite į puslapį "Mano užsakymai" savo paskyroje..." } ], "stop_reason": "usage_turn": "usage" "input_tokens": 47, "output_tokens": 88 }}

  • turinys: pats atsakymas; Tai turinio blokų sąrašas. Teksto bloko teksto laukas yra tikrasis atsakymas.
  • stop_reason: Kodėl modelis sustojo. end_turn = natūrali pabaiga; max_tokens = įstrigo ties išvesties riba (atsakymas gali būti neišsamus); atsisakymas = atsisakyta saugumo sumetimais. Jūsų kodas visada pirmiausia turėtų būti rodomas stop_reason.
  • naudojimas: įvesties ir išvesties žetonų numeriai. Tai yra išlaidų ir limitų stebėjimo pagrindas.
Dėmesio: jei stop_reason yra max_tokens, atsakymas nebaigtas. To traktavimas kaip „sėkmingas atsakymas“ ir pusės teksto rodymas vartotojui yra viena dažniausių gamybos klaidų. Padidinkite max_tokens arba naudokite srautinį perdavimą.

Silpnas raginimas / Stiprus raginimas

Ta pati užduotis su dviem skirtingais sistemos raginimais:

# SILPNATu esi asistentas. Atsakykite į klausimus.

# STRONGEsate įmonės palaikymo asistentas. Taisyklės: - Pasikliaukite tik pateiktame politikos dokumente pateikta informacija; Jei dokumente jos nėra, pasakykite „Neturiu šios informacijos, nukreipiu ją į atitinkamą padalinį“. – Atsakymai neturėtų viršyti 3 sakinių, būti formalūs ir aiškūs. - Neprašykite asmens duomenų (TC ID numerio, kortelės numerio) ir nekartokite. – Nespėk, kai nesate tikras.

Galinga versija; Jis apibrėžia apimtį, formą, saugos ribą ir elgesį neapibrėžtumo atveju. Modelio išvesties nuoseklumas tiesiogiai kyla iš šio aiškumo.

Trys mini dėklai

1 atvejis – atraminis robotas (nepilietybės spąstai). Elektroninės prekybos komanda perėmė robotą tiesiogiai; Kai vartotojas pasakė „atšaukti ankstesnį užsakymą“, botas „pamiršo“ užsakymo numerį. Priežastis: kiekvieną užklausą jie siųsdavo tik su paskutiniu pranešimu. Sprendimas: jie įtraukė paskutinius 6 raundus į pranešimų sąrašą. Rezultatas: kontekstas išsaugotas, bet įvestis vienai užklausai padidėjo nuo 40 žetonų iki ~600 žetonų – padengsime išlaidų pamoką 2 skyriuje.

2 atvejis. Neišsami sutarties santrauka. Teisininkų komanda sudarė 10 puslapių sutartis; max_tokens: 300 liko mažai, santraukos buvo nutrauktos sakinio viduryje. stop_reason buvo max_tokens kiekvieną kartą, bet niekas neieškojo. padidintas max_tokens iki 1500 ir pridėtas stop_reason check; Sutrumpintas suvestinis rodiklis sumažėjo nuo 18% iki 0%.

3 atvejis. Vaidmenų maišymas. Rinkodaros komanda rašė visas instrukcijas į vartotojo pranešimą, palikdama sistemą tuščią. Kai vartotojo įvestis sumaišoma su instrukcijomis, modelis kartais atitiktų vartotojo komandą „pamiršti ankstesnes taisykles“. Jie perkėlė nuolatines taisykles į sistemą; Atskyrus vartotojo įvestį nuo nurodymų, taisyklių pažeidimų žymiai sumažėjo.

Dažnos klaidos

  • Pamiršus siųsti praeitį: manoma, kad modelis „neprisimena“; kadangi jis yra be pilietybės. Jūs nešiojate kontekstą.
  • Nežiūrint į „stop_reason“: atsakymas sustabdytas naudojant max_tokens laikomas baigtu.
  • Instrukcijos įterpimas į „vartotoją“: nuolatinės taisyklės sistemoje; momentinė įvestis patenka į vartotoją. Maišymas sukuria saugumo spragas.
  • Klaidingai „turinys“ reiškia paprastą eilutę: atsakymas yra blokų sąrašas; perskaitykite pirmojo teksto bloko teksto lauką, patikrinkite jo tipą prieš gaudami turinį[0] su akluoju indeksu.
  • Rakto įterpimas į kodą: naudokite aplinkos kintamąjį (9 vienetas).

Deeper: turinio blokai ir kelių dalių atsakymai

Supratimas, kodėl atsakyme esantis turinio laukas yra sąrašas, yra labai svarbus pažangioms funkcijoms, su kuriomis susidursite vėliau. Kartais modelis grąžina ne vieną teksto bloką, o kelis blokus: mąstymo blokas, po kurio seka teksto blokas; arba teksto blokas, po kurio eina įrankio naudojimo blokas. Štai kodėl aklai skaičiuoti turinį[0] kaip „atsakymą“ yra trapu. Teisingas būdas yra peržiūrėti sąrašą ir rūšiuoti jį pagal tipą: renkate blokų, kurių tipo laukas yra tekstas, tekstinį turinį, o kitus tipus (mąstymą, įrankį) traktuojate atskirai.

Praktiškai šis skirtumas yra tas, kad galite užregistruoti modelio samprotavimus (jei yra) jo neatskleidę vartotojui, nukreipti įrankių iškvietimus į atskirą logiką ir ekrane spausdinti tik tikrąjį atsakymą. Modulio eigoje (ypač 4 ir 11 blokuose) pamatysite, kokia naudinga ši bloko struktūra yra patvirtinant ir nukreipiant išvestį.

Kitas praktinis aspektas: galite pasiekti tą patį modelį iš skirtingų tiekėjų platformų (tiesioginis API, per debesies paslaugų teikėją). Nors galutinio taško adresas ir autentifikavimo formatas gali keistis, pagrindinės sąvokos, pvz., pranešimų vaidmenys, be būsenos ir atsakymo struktūra, išlieka tos pačios. Taigi šio įrenginio pagrindai galioja, nesvarbu, kokią platformą naudojate.

Apibendrinant

LLM API užklausą sudaro modelis, išvesties riba ir pranešimų sąrašas; vaidmenys (sistema, vartotojas, asistentas) lemia modelio elgesį. Skambučiai yra be pilietybės: su kiekviena užklausa pateikiate kontekstą. Atsakymas yra struktūrizuotas objektas; Turinio, stop_priežasties ir naudojimo laukų skaitymas ir interpretavimas yra gamybos patvarumo pagrindas.

Taikymo užduotis

Pasirinkite užduotį iš savo profesijos (pvz., rūšiuoti gaunamus el. laiškus, kurti trumpas santraukas). Ant popieriaus lapo: (1) parašykite sistemos raginimą su 4–5 taisyklėmis, (2) nustatykite vartotojo pranešimo pavyzdį ir 2 raundų istoriją, jei tokia yra, (3) nustatykite pagrįstą max_tokens reikšmę ir parašykite pagrindimą, (4) nurodykite, kokias stop_reason reikšmes tvarkysite grįžtamame atsakyme ir kaip.

kontrolinis sąrašas

  • [ ] Galiu suskaičiuoti tris privalomas užklausos dalis (modelis, max_tokens, pranešimai).
  • [ ] Galiu paaiškinti skirtumą tarp sistemos, vartotojo ir asistento vaidmenų.
  • [ ] Žinau, kad skambučiai yra be pilietybės ir kad man reikia neštis praeitį.
  • Galiu skaityti ir komentuoti [ ] turinį, stop_priežastį ir naudojimo laukus.
  • [ ] Su max_tokens galiu pastebėti ir tvarkyti sutrumpintą atsakymą.