Vienība 1 / 11

LLM API pamati: pieprasījuma, atbildes un ziņojuma lomas

Ieguvumi:

  • Var aprakstīt LLM API pieprasījuma pamatstruktūru (galapunkts, modelis, ziņojumi, max_tokens)
  • Izprot atšķirību starp sistēmas, lietotāja un asistenta lomām un bezvalsts sarunu vēsturi
  • Var lasīt un interpretēt atgrieztās atbildes laukus (satura blokus, stop_reason, usage).

Iepriekšējos moduļos mēs izmantojām mākslīgo intelektu no tērzēšanas loga. Bet, ja vēlaties iegult AI savā produktā, automatizācijā vai darbplūsmā, tērzēšanas interfeiss to neizjauks; Jums ir nepieciešams programmatiski izveidot savienojumu ar modeli, tas ir, ar kodu vai automatizācijas rīku. Šī tilta nosaukums ir API (Application Programming Interface, līgums, kas ļauj divām programmatūras sarunāties ar noteiktiem noteikumiem). Pabeidzot šo vienību, jūs uzzināsit, kas ir LLM (Lielās valodas modeļa) API pieprasījums, kādas ir ziņojumu lomas un kā lasīt atbildi. Tas ir pamats, uz kura tiks būvēts pārējais modulis.

Kā darbojas API?

API pamata plūsma ir šāda: jūs nosūtāt pieprasījumu noteiktā formātā; Serveris atgriež atbildi noteiktā formātā. LLM tas parasti ir HTTP izsaukums (HTTP: standarta protokols pieprasījuma-atbildes pārnēsāšanai tīmeklī) uz vienu adresi (galapunkts, fiksētā adrese serverī, kas apstrādā jūsu pieprasījumu). Piemēram, ziņojumapmaiņas API visi pieprasījumi tiek nosūtīti uz vienu adresi un tiek sūtīti kā JSON (JavaScript Object Notation — teksta formāts, kas sastāv no atslēgu/vērtību pāriem, ko var nolasīt gan cilvēki, gan mašīnas).

Pieprasījumā norādiet vismaz šīs trīs lietas:

  • Modelis: kuru modeli izmantosit (piemēram, ātrs un lēts modelis vai jaudīgs modelis).
  • max_tokens: maksimālais marķieru skaits (mazākā vienība, kurā tiek apstrādāts teksts, kas tiks detalizēti apstrādāts nākamajā vienībā), ko modelis var radīt; i., izejas limits.
  • ziņojumi: to ziņojumu saraksts, kas veido sarunu.

Soli pa solim: kā iestatīt pieprasījumu

  1. Sagatavojiet beigu punktu un akreditācijas datus. Jūs pievienojat savu API atslēgu (slepeno virkni, kas apliecina jūsu identitāti) pieprasījumam galvenē. Jūs nekad neiegulsiet atslēgu kodā; Mēs segsim drošu uzglabāšanu 9. nodaļā.
  2. Izvēlieties modeli un izvades ierobežojumu. Viegls modelis + mazi max_tokens vienkāršam uzdevumam; Jaudīgs modelis + lielāks ierobežojums sarežģītam uzdevumam.
  3. Iestatiet ziņojumu sarakstu. List the system instruction, user message, and past rounds (if any).
  4. Nosūtiet pieprasījumu un parsējiet atbildi. Lasiet teksta saturu, apturēšanas iemeslu un marķiera lietojumu no atgrieztā JSON.

Ziņojumu lomas: sistēma, lietotājs, palīgs

Saruna sastāv no ziņojumiem, kas sakārtoti secībā, un katram ziņojumam ir sava loma. Loma nosaka, kā modelis apstrādā šo tekstu.

Loma

Kas raksta

Mērķis

sistēma

Izstrādātājs/operators

Pastāvīgi norādījumi, personība un noteikumi, kas attiecas uz visu sarunu

lietotājs

gala lietotājs

Lietotāja pašreizējais jautājums vai ievade

palīgs

modelis

Modeļa radītā atbilde (un iepriekšējās atbildes)

Sistēmas loma lielākajā daļā pakalpojumu sniedzēju ir pieejama kā atsevišķs sistēmas lauks pieprasījuma pamattekstā; lietotājs un palīgs tiek uzskaitīti secīgi ziņojumu sarakstā. 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": "Jūs esat korporatīvā atbalsta palīgs. Sniedziet īsu, formālu un pārbaudītu atbildi. Neveidojiet informāciju, par kuru neesat pārliecināts.", "Ziņojumi": [ { "role": "user", "content": "Kā sākt savu atgriešanas procesu?" } ]}

Runa ir bezvalsts

Šis ir visizplatītākais nepareizs priekšstats: LLM API zvani ir bezvalsts — serveris nesaglabā atmiņu starp diviem pieprasījumiem. Modelis neatceras jūsu iepriekšējo pieprasījumu. Ja iestatāt vairāku kārtu tērzēšanu, jums būs atkārtoti jānosūta iepriekšējās kārtas ar katru jaunu pieprasījumu. Modeļa "atmiņa" sastāv no jūsu nosūtīto ziņojumu saraksta.

{ "model": "claude-opus-4-8", "max_tokens": 512, "messages": [ { "role": "user", "content": "Labdien, mani sauc Denizs." }, { "role": "asistents", "content": "Sveiks, Deniz, kā es varu jums palīdzēt?" }, { "role": "user", "content": "Es tikko pateicu savu vārdu, vai atceries?" } ]}

Pareiza atbilde uz trešo ziņojumu ir atkarīga no tā, vai esat nosūtījis abus iepriekšējos ziņojumus. Ja nenosūtīsi, modele nezinās "Jūra" un atbildēs nepareizi. Tas arī tieši ietekmē izmaksas: jo garāka saruna, jo lielāks saraksts, katrs pieprasījums patērē vairāk marķieru.

Padoms. Garās sarunās veco kārtu apkopošana un pārvietošana (kopsavilkums + dažas pēdējās kārtas), nevis visas vēstures nosūtīšana, samazina izmaksas un saglabā konteksta logu. Mēs to padziļināsim 6. un 11. vienībā.

Izlasiet Atbildi

Kad modelis atgriež atbildi, jūs saņemat strukturētu objektu, nevis vienkāršu tekstu. Tipiski apgabali:

{ "id": "msg_01ABC...", "model": "claude-opus-4-8", "role": "asistents", "content": [ { "type": "text", "text": "Lai sāktu atgriešanu, savā kontā dodieties uz lapu Mani pasūtījumi..." } ], "stop_reason": "usage_turn", "usage" "input_tokens": 47, "output_tokens": 88 }}

  • saturs: pati atbilde; Tas ir satura bloku saraksts. Teksta bloka teksta lauks ir faktiskā atbilde.
  • stop_reason: Kāpēc modelis apstājās. end_turn = dabiskais beigas; max_tokens = iestrēdzis pie izvades ierobežojuma (atbilde var būt nepilnīga); atteikums = atteikts drošības apsvērumu dēļ. Jūsu kodam vienmēr vispirms ir jāaplūko stop_reason.
  • lietojums: ievades un izvades marķiera numuri. Tas ir izmaksu un ierobežojumu izsekošanas pamats.
Uzmanību: ja stop_reason ir max_tokens, atbilde netiek pabeigta. Tā uztveršana kā "veiksmīga atbilde" un puse teksta parādīšana lietotājam ir viena no visbiežāk pieļautajām kļūdām ražošanā. Palieliniet max_tokens vai izmantojiet straumēšanu.

Vāja uzvedne / spēcīga uzvedne

Tas pats uzdevums ar divām dažādām sistēmas uzvednēm:

# VĀJS Jūs esat palīgs. Atbildiet uz jautājumiem.

# STRONGJūs esat korporatīvā atbalsta palīgs. Noteikumi: - paļaujieties tikai uz sniegtajā politikas dokumentā sniegto informāciju; Ja dokumentā tā nav, sakiet: "Man nav šīs informācijas, es to virzu uz attiecīgo vienību." - Atbildes nedrīkst pārsniegt 3 teikumus, jābūt formālām un skaidrām. - Neprasiet personas datus (TC ID numuru, kartes numuru) un neatkārtojiet. - Neuzmini, kad neesi pārliecināts.

Jaudīga versija; Tas nosaka darbības jomu, formu, drošības rezervi un uzvedību nenoteiktības gadījumā. Modeļa izvades konsekvence izriet tieši no šīs skaidrības.

Trīs mini futrāļi

1. gadījums — atbalsta robots (bezvalstniecības slazds). E-komercijas komanda paņēma robotu tiešraidē; Kad lietotājs teica "atcelt iepriekšējo pasūtījumu", robots "aizmirsa" pasūtījuma numuru. Iemesls: viņi katru pieprasījumu nosūtīja tikai ar pēdējo ziņojumu. Risinājums: viņi pievienoja ziņojumu sarakstam pēdējās 6 kārtas. Rezultāts: konteksts saglabāts, bet viena pieprasījuma ievade ir palielināta no 40 marķieriem līdz ~ 600 marķieriem — mēs segsim izmaksu nodarbību 2. vienībā.

2. gadījums — nepilnīgs līguma kopsavilkums. Juridiskajai komandai bija 10 lappušu gari līgumi; max_tokens: 300 palika zems, kopsavilkumi tika pārtraukti teikuma vidū. stop_reason bija max_tokens katru reizi, bet neviens nemeklēja. palielināts max_tokens līdz 1500 un pievienota stop_reason pārbaude; Saīsinātā kopsavilkuma likme samazinājās no 18% līdz 0%.

3. gadījums — lomu sajaukšana. Mārketinga komanda lietotāja ziņojumā ierakstīja visus norādījumus, atstājot sistēmu tukšu. Ja lietotāja ievade tiek sajaukta ar norādījumiem, modelis dažreiz atbilst lietotāja komandai "aizmirst iepriekšējos noteikumus". Viņi pārcēla pastāvīgos noteikumus uz sistēmu; Atdalot lietotāja ievadi no norādījumiem, noteikumu pārkāpumi ievērojami samazinājās.

Biežas kļūdas

  • Aizmirstot nosūtīt pagātni: tiek uzskatīts, ka modelis "neatceras"; tā kā tas ir bezvalstnieks. Jūs nesat kontekstu.
  • Neskata `stop_reason`: atbilde apturēta ar max_tokens tiek uzskatīta par pabeigtu.
  • Instrukcijas iegulšana sadaļā "lietotājs": pastāvīgi noteikumi sistēmā; tūlītēja ievade nonāk lietotājam. Sajaukšana rada drošības ievainojamības.
  • Saturs tiek sajaukts ar vienkāršu virkni: atbilde ir bloku saraksts; izlasiet pirmā teksta bloka teksta lauku, pārbaudiet tā veidu, pirms iegūstat saturu[0] ar aklo indeksu.
  • Atslēgas iegulšana kodā: izmantojiet vides mainīgo (9. vienība).

Deeper: satura bloki un vairāku daļu atbildes

Izpratne par to, kāpēc atbildes satura lauks ir saraksts, ir būtiska papildu funkcijām, ar kurām saskarsities vēlāk. Dažreiz modelis atgriež nevis vienu teksta bloku, bet vairākus blokus: domāšanas bloks, kam seko teksta bloks; vai teksta bloks, kam seko rīku lietošanas bloks. Tāpēc akli satura[0] skaitīšana kā "atbilde" ir trausla. Pareizā pieeja ir iet cauri sarakstam un kārtot to pēc veida: jūs savācat teksta saturu blokos, kuru tipa lauks ir teksts, un apstrādājat citus veidus (domāšanu, rīku) atsevišķi.

Praksē šī atšķirība ir tāda, ka varat reģistrēt modeļa pamatojumu (ja tāds ir), neatklājot to lietotājam, novirzīt rīku izsaukumus uz atsevišķu loģiku un ekrānā izdrukāt tikai faktisko atbildi. Modulim attīstoties (īpaši 4. un 11. blokā), jūs redzēsit, cik šī bloka struktūra ir noderīga izvades apstiprināšanai un virzīšanai.

Vēl viens praktisks punkts: varat piekļūt vienam un tam pašam modelim no dažādām pakalpojumu sniedzēju platformām (tiešā API, izmantojot mākoņa pakalpojumu sniedzēju). Lai gan galapunkta adrese un autentifikācijas formāts var mainīties, tādi pamatjēdzieni kā ziņojumu lomas, bezpavalstniecība un atbildes struktūra paliek nemainīgi. Tāpēc šīs ierīces pamatprincipi ir spēkā neatkarīgi no izmantotās platformas.

Rezumējot

LLM API pieprasījums sastāv no modeļa, izvades ierobežojuma un ziņojumu saraksta; lomas (sistēma, lietotājs, palīgs) nosaka modeļa uzvedību. Zvani ir bezvalstnieki: katram pieprasījumam ir konteksts. Atbilde ir strukturēts objekts; Satura, stop_reason un lietojuma lauku lasīšana un interpretācija ir ražošanas noturības pamats.

Lietojumprogrammas uzdevums

Izvēlieties uzdevumu no savas profesijas (piemēram, kārtojiet ienākošos e-pastus, izveidojiet īsus kopsavilkumus). Uz papīra lapas: (1) uzrakstiet sistēmas uzvedni ar 4–5 kārtulām, (2) iestatiet lietotāja ziņojuma paraugu un 2 kārtu vēsturi, ja tāda ir, (3) nosakiet saprātīgu vērtību max_tokens un uzrakstiet pamatojumu, (4) uzskaitiet, kuras stop_reason vērtības tiks apstrādātas atgrieztajā atbildē un kā.

kontrolsaraksts

  • [ ] Es varu saskaitīt trīs obligātās pieprasījuma daļas (modelis, max_tokens, ziņojumi).
  • [ ] Es varu izskaidrot atšķirību starp sistēmas, lietotāja un asistenta lomām.
  • [ ] Es zinu, ka zvani ir bezvalstnieki un ka man ir jānes pagātne.
  • Es varu lasīt un komentēt [ ] saturu, stop_reason un lietošanas laukus.
  • [ ] Izmantojot max_tokens, es varu pamanīt un apstrādāt saīsinātu atbildi.