Jedinica 1 / 11

Osnove LLM API-ja: Uloge zahtjeva, odgovora i poruka

Dobici:

  • Može opisati osnovnu strukturu LLM API zahtjeva (krajnja tačka, model, poruke, max_tokeni)
  • Razumije razliku između uloga sistema, korisnika i pomoćnika i historije razgovora bez državljanstva
  • Može čitati i interpretirati polja (blokovi sadržaja, stop_reason, upotreba) vraćenog odgovora

U prethodnim modulima koristili smo umjetnu inteligenciju iz prozora za ćaskanje. Ali ako želite da ugradite veštačku inteligenciju u svoj proizvod, automatizaciju ili radni tok, interfejs za ćaskanje to neće smanjiti; Na model se morate povezati programski, odnosno pomoću koda ili alata za automatizaciju. Naziv ovog mosta je API (Application Programming Interface, ugovor koji dozvoljava dva softvera da razgovaraju sa određenim pravilima). Kada završite ovu jedinicu, znat ćete šta čini LLM (Large Language Model) API zahtjev, koje uloge poruke rade i kako pročitati odgovor. Ovo je temelj na kojem će se graditi ostatak modula.

Kako radi API?

Osnovni tok u API-ju je sljedeći: šaljete zahtjev u određenom formatu; Server vraća odgovor u određenom formatu. U LLM-ovima, ovo je obično HTTP poziv (HTTP: standardni protokol za prenošenje zahtjeva-odgovora na webu) na jednu adresu (krajnja tačka, fiksna adresa na serveru koji obrađuje vaš zahtjev). Na primjer, u API-ju za razmjenu poruka, svi zahtjevi idu na jednu adresu i prenose se u tijelu kao JSON (JavaScript Object Notation — tekstualni format koji se sastoji od parova ključ/vrijednost koje mogu čitati i ljudi i mašine).

U zahtjevu navodite najmanje ove tri stvari:

  • Model: Koji model ćete koristiti (npr. brz i jeftin model ili moćan model).
  • max_tokens: Maksimalan broj tokena (najmanja jedinica u kojoj se obrađuje tekst, koja će biti detaljno obrađena u sljedećoj jedinici) koje model može proizvesti; odnosno granica izlaza.
  • poruke: Lista poruka koje čine razgovor.

Korak po korak: Kako postaviti zahtjev

  1. Pripremite krajnju tačku i vjerodajnice. Dodati svoj API ključ (tajni niz koji dokazuje vaš identitet) zahtjevu u zaglavlju. Nikada ne ugrađujete ključ u kod; Pokrićemo sigurno skladištenje u jedinici 9.
  2. Odaberite model i ograničenje izlaza. Lagani model + mali max_tokeni za jednostavan zadatak; Snažan model + veće ograničenje za složen zadatak.
  3. Postavite listu poruka. List the system instruction, user message, and past rounds (if any).
  4. Pošaljite zahtjev i analizirajte odgovor. Pročitajte sadržaj teksta, zaustavite razlog i upotrebu tokena iz vraćenog JSON-a.

Uloge poruke: sistem, korisnik, pomoćnik

Razgovor se sastoji od poruka raspoređenih u nizu, a svaka poruka ima svoju ulogu. Uloga određuje kako model tretira taj tekst.

Uloga

Ko piše

Svrha

sistem

Programer/operater

Trajne instrukcije, ličnost i pravila koja se primenjuju tokom čitavog razgovora

korisnik

krajnji korisnik

Korisnikovo trenutno pitanje ili unos

asistent

model

Odgovor proizveden od strane modela (i prethodni odgovori)

Sistemska uloga je dostupna kao zasebno sistemsko polje u tijelu zahtjeva u većini provajdera; korisnik i pomoćnik su navedeni uzastopno na listi poruka. 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": "Vi ste korporativni pomoćnik za podršku. Dajte kratak, formalan i potvrđen odgovor. Ne izmišljajte informacije u koje niste sigurni.", "messages": [ { "role": "user", "content": "Kako da pokrenem svoj proces vraćanja?" } ]}

Govor je bez državljanstva

Evo najčešće zablude: LLM API pozivi su bez stanja — server ne zadržava memoriju između dva zahtjeva. Model se ne sjeća vašeg prethodnog zahtjeva. Ako postavljate razgovor u više krugova, morat ćete ponovo poslati prethodne runde sa svakim novim zahtjevom. "Memorija" modela se sastoji od liste poruka koje ste poslali.

{ "model": "claude-opus-4-8", "max_tokens": 512, "messages": [ { "role": "user", "content": "Zdravo, moje ime je Deniz." }, { "role": "assistant", "content": "Zdravo Deniz, kako vam mogu pomoći?" }, { "role": "user", "content": "Upravo sam rekao svoje ime, sjećate li se?" } ]}

Ispravan odgovor na treću poruku zavisi od toga da li ste poslali obe prethodne poruke. Ako ga ne pošaljete, model neće znati "More" i neće tačno odgovoriti. Ovo takođe direktno utiče na cenu: što je razgovor duži, lista je veća, svaki zahtev troši više tokena.

Savjet: U dugim razgovorima, sažimanje i pomicanje starih rundi (sažetak + posljednjih nekoliko rundi) umjesto slanja cijele historije smanjuje troškove i čuva prozor konteksta. Ovo ćemo produbiti u jedinicama 6 i 11.

Pročitajte odgovor

Kada model vrati odgovor, dobijate strukturirani objekat, a ne običan tekst. Tipična područja:

{ "id": "msg_01ABC...", "model": "claude-opus-4-8", "role": "assistant", "content": [ { "type": "text", "text": "Da započnete vraćanje, idite na stranicu 'Moje narudžbe' na svom računu..." } ], "stopage_reaturn":"in "stopage_put_tok": 47, "output_tokeni": 88 }}

  • sadržaj: Sam odgovor; To je lista blokova sadržaja. Tekstualno polje tekstualnog bloka je stvarni odgovor.
  • stop_reason: Zašto je model stao. end_turn = prirodni kraj; max_tokens = zaglavljen na izlaznoj granici (odgovor može biti nepotpun); odbijanje = odbijeno iz sigurnosnih razloga. Vaš kod uvijek treba prvo pogledati stop_reason.
  • upotreba: Ulazni i izlazni brojevi tokena. To je osnova za praćenje troškova i limita.
Pažnja: Ako je stop_reason max_tokens, odgovor nije dovršen. Tretiranje ovoga kao "uspješnog odgovora" i pokazivanje pola teksta korisniku jedna je od najčešćih grešaka u produkciji. Ili povećajte max_tokena ili koristite streaming.

Slaba prompt / Jaka prompt

Isti zadatak sa dva različita sistemska prompta:

# SLABOTi si asistent. Odgovori na pitanja.

# JAKO Vi ste pomoćnik za korporativnu podršku. Pravila: - Oslonite se isključivo na informacije u datom dokumentu politike; Ako ga nema u dokumentu, recite „Nemam ovu informaciju, upućujem je relevantnoj jedinici“. - Odgovori ne bi trebali biti duži od 3 rečenice, biti formalni i jasni. - Ne tražite lične podatke (TC ID broj, broj kartice) i ne ponavljajte. - Ne pogađajte kada niste sigurni.

Moćna verzija; Definira obim, oblik, sigurnosnu marginu i ponašanje u neizvjesnosti. Konzistentnost rezultata modela dolazi direktno iz ove jasnoće.

Tri mini futrole

Slučaj 1 — Bot za podršku (zamka bez državljanstva). Tim za e-trgovinu pokrenuo je bot uživo; Kada je korisnik rekao "otkaži prethodnu narudžbu", bot je "zaboravio" broj narudžbe. Razlog: slali su svaki zahtjev samo sa posljednjom porukom. Rješenje: dodali su posljednjih 6 rundi na listu poruka. Rezultat: kontekst je sačuvan, ali je unos po zahtjevu povećan sa 40 tokena na ~600 tokena — pokriti ćemo lekciju o troškovima u jedinici 2.

Slučaj 2 — Nepotpuni sažetak ugovora. Pravni tim je imao ugovore na 10 stranica; max_tokens: 300 je ostalo malo, rezimei su prekidali usred rečenice. stop_reason je svaki put bio max_tokens, ali niko nije gledao. povećao max_tokena na 1500 i dodao stop_reason provjeru; Skraćena zbirna stopa smanjena je sa 18% na 0%.

Slučaj 3 — Miješanje uloga. Marketinški tim je upisivao sva uputstva u korisničku poruku, ostavljajući sistem praznim. Kada se korisnički unos pomiješa s uputama, model bi ponekad bio u skladu s korisnikovom naredbom da "zaboravi prethodna pravila". Premjestili su trajna pravila u sistem; Odvajanjem korisničkog unosa od instrukcija, kršenja pravila su se značajno smanjila.

Uobičajene greške

  • Zaboravljanje poslati prošlost: za model se smatra da se "ne sjeća"; dok je osoba bez državljanstva. Vi nosite kontekst.
  • Ne gledajući `stop_reason`: odgovor zaustavljen s max_tokensom smatra se potpunim.
  • Ugrađivanje instrukcije u `user`: Trajna pravila u sistem; trenutni unos ide korisniku. Miješanje stvara sigurnosne propuste.
  • Pogreška `sadržaj` za običan niz: odgovor je lista blokova; pročitajte tekstualno polje prvog tekstualnog bloka, provjerite njegov tip prije nego što dobijete sadržaj[0] sa slijepim indeksom.
  • Ugrađivanje ključa u kod: Koristite varijablu okruženja (jedinica 9).

Dublje: blokovi sadržaja i odgovori iz više dijelova

Razumijevanje zašto je polje sadržaja u odgovoru lista je fundamentalno za napredne funkcije s kojima ćete se kasnije susresti. Ponekad model vraća ne jedan blok teksta, već nekoliko blokova: blok razmišljanja, nakon čega slijedi blok teksta; ili blok teksta nakon kojeg slijedi blok upotrebe alata. Zato je slijepo brojanje sadržaja[0] kao "odgovora" krhko. Ispravan pristup je proći kroz listu i sortirati je po tipu: skupljate tekstualni sadržaj blokova čije je polje tipa tekst, a druge tipove (razmišljanje, alat) tretirate zasebno.

Ono što ova razlika čini u praksi je da možete evidentirati obrazloženje modela (ako ga ima) bez da ga otkrijete korisniku, preusmjeriti pozive alata na odvojenu logiku i samo ispisati stvarni odgovor na ekranu. Kako modul napreduje (posebno u jedinicama 4 i 11) vidjet ćete koliko je korisna ova blok struktura za validaciju i usmjeravanje izlaza.

Još jedna praktična stvar: istom modelu možete pristupiti sa različitih platformi provajdera (direktan API, preko provajdera u oblaku). Iako se adresa krajnje točke i format provjere autentičnosti mogu promijeniti, osnovni koncepti kao što su uloge poruke, status bez državljanstva i struktura odgovora ostaju isti. Dakle, osnove u ovoj jedinici važe bez obzira koju platformu koristite.

Ukratko

LLM API zahtjev se sastoji od modela, ograničenja izlaza i liste poruka; uloge (sistem, korisnik, pomoćnik) određuju ponašanje modela. Pozivi su bez državljanstva: nosite kontekst sa svakim zahtjevom. Odgovor je strukturirani objekat; Čitanje i tumačenje sadržaja, stop_reason i polja upotrebe je osnova trajnosti u proizvodnji.

Zadatak aplikacije

Odaberite zadatak iz svoje profesije (npr. sortiranje dolazne e-pošte, kreiranje kratkih sažetaka). Na komadu papira: (1) napišite sistemski prompt sa 4-5 pravila, (2) postavite uzorak korisničke poruke i 2 kruga istorije ako postoji, (3) odredite razumnu vrijednost za max_tokens i napišite opravdanje, (4) navedite koje stop_reason vrijednosti ćete obraditi u vraćenom odgovoru i kako.

kontrolna lista

  • [ ] Mogu izbrojati tri obavezna dijela zahtjeva (model, max_tokeni, poruke).
  • [ ] Mogu objasniti razliku između uloga sistema, korisnika i pomoćnika.
  • [ ] Znam da su pozivi bez državljanstva i da moram da nosim prošlost.
  • Mogu čitati i komentirati [ ] sadržaj, stop_reason i polja upotrebe.
  • [ ] Sa max_tokens mogu primijetiti i rukovati skraćenim odgovorom.