3-qism · Ilg'or imkoniyatlar·10-bob
Agent fikrlashi va baholash
LLM'ni yaxshiroq fikrlashga majburlash. To'g'ridan-to'g'ri yechim, zero/few-shot, chain-of-thought, prompt chaining, self-consistency va tree-of-thought — kod bilan.
LLM fikrlash uchun o'qitilmagan. U chat completion modeli — matnni davom ettiradi, xolos.
Lekin uning o'quv ma'lumotida fikrlash namunalari bor. Shuning uchun to'g'ri prompt bilan modelni fikrlashga undash mumkin. Bu bob shu usullarni ko'rsatadi.
Fikrlash nima#
Kitob aniq ta'rif beradi:
Fikrlash — aql (sun'iy yoki tabiiy) fikr jarayonini tushunish qobiliyati. Aql harakatlar oqibatga ega ekanini biladi va shu qobiliyatdan foydalanib, vazifani hal qilish uchun qaysi harakatni tanlashni mulohaza qiladi.
Fikrlashni sinash uchun modelga o'zi hal qila olmaydigan murakkab masalalar beriladi: mantiq, matematik va so'z masalalari.
To'g'ridan-to'g'ri yechim promptlari#
Eng oddiy uch usul — misollar soniga qarab:
- 0
- Zero-shot — misolsizFaqat savol. «Bu masalani yech». Model o'z bilimidan foydalanadi. Oddiy vazifalar uchun.
- 1
- One-shot — bitta misolBitta yechim namunasi + savol. Model formatni va yondashuvni ko'radi.
- N
- Few-shot — bir necha misolBir necha namuna + savol. Model naqshni yaxshiroq tushunadi. Murakkab format uchun.
# Zero-shot
zero = "23 - 20 + 6 nechaga teng?"
# Few-shot
few = """Savol: 5 - 2 + 3 nechaga teng?
Javob: 6
Savol: 10 - 4 + 1 nechaga teng?
Javob: 7
Savol: 23 - 20 + 6 nechaga teng?
Javob:"""Few-shot modelga format va uslubni ko'rsatadi. Model misollarga qarab xuddi shunday javob beradi.
Chain-of-thought (CoT)#
Bu — eng muhim fikrlash usuli. G'oyasi: modeldan qadamlarni ko'rsatishni so'rash.
Few-shot CoT#
Misolda yechim yo'lini ko'rsatasiz:
cot = """Savol: Do'konda 15 ta olma bor edi. 6 tasi sotildi, keyin 10 ta keltirildi. Nechta?
Javob: Boshida 15 ta bor edi.
6 tasi sotildi: 15 - 6 = 9 ta qoldi.
10 ta keltirildi: 9 + 10 = 19 ta.
Javob: 19.
Savol: Aleks o'tmishda 6 kun, keyin 50 yil oldinda 20 kun qoldi. Jami necha kun o'tdi?
Javob:"""Model birinchi misoldagi fikrlash namunasini ko'radi va ikkinchi masalaga ham xuddi shunday — qadamlar bilan — javob beradi.
Zero-shot CoT#
Eng arzon hiyla. Promptga bitta jumla qo'shasiz:
zero_cot = "Aleks o'tmishda necha kun o'tkazadi? Qadam-baqadam o'ylab ko'ring."Misol kerak emas — faqat "qadam-baqadam o'ylang" so'zlari. Va natija sezilarli yaxshilanadi.
Prompt chaining#
Murakkab vazifani bir necha promptga bo'lish — har biri oldingisining natijasiga tayanadi.
def prompt_chaining(matn, client):
# 1-qadam: xulosalash
xulosa = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": f"Quyidagi matnni xulosala:\n{matn}"}],
).choices[0].message.content
# 2-qadam: xulosadan asosiy g'oyalarni ajratish
goyalar = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": f"Bu xulosadan 3 ta asosiy g'oyani ajrat:\n{xulosa}"}],
).choices[0].message.content
# 3-qadam: g'oyalardan savol tuzish
savollar = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": f"Bu g'oyalar bo'yicha 3 ta savol tuz:\n{goyalar}"}],
).choices[0].message.content
return {"xulosa": xulosa, "goyalar": goyalar, "savollar": savollar}Har qadam aniq va oddiy. Model bir vaqtda bir ishni qiladi — bu bitta katta promptdan ishonchliroq.
Self-consistency#
Muammo: LLM stoxastik — bir xil savolga har xil javob berishi mumkin. Qaysi biri to'g'ri?
Yechim: bir necha marta so'rab, ko'pchilik ovozini olish.
from collections import Counter
def self_consistency(savol, client, urinishlar=5):
"""Bir savolni bir necha marta so'rab, ko'pchilik javobini oladi."""
javoblar = []
for _ in range(urinishlar):
j = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": savol + "\n\nQadam-baqadam o'ylang."}],
temperature=0.7, # xilma-xillik uchun temperatura > 0
)
matn = j.choices[0].message.content
# Oxirgi sondan javobni ajratamiz
import re
sonlar = re.findall(r"\d+", matn)
if sonlar:
javoblar.append(sonlar[-1])
# Ko'pchilik javobi
if javoblar:
eng_kop = Counter(javoblar).most_common(1)[0]
return eng_kop[0], eng_kop[1] / len(javoblar) # javob va ishonch
return None, 0Tree-of-thought (ToT)#
Eng ilg'or usul. Model bir necha fikr yo'lini quradi, ularni o'zi baholaydi va eng yaxshisini tanlaydi.
def tree_of_thought(masala, client, yollar_soni=3):
"""Bir necha yo'l generatsiya qilib, eng yaxshisini tanlaydi."""
# 1. Bir necha yondashuv
yollar = []
for i in range(yollar_soni):
j = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user",
"content": f"Bu masalani hal qilishning BIR yondashuvini taklif qil "
f"(boshqalardan farqli):\n{masala}"}],
temperature=0.8,
)
yollar.append(j.choices[0].message.content)
# 2. Har yo'lni baholash
baholash = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user",
"content": f"Masala: {masala}\n\nQuyidagi yondashuvlarni bahola va "
f"eng istiqbollisini tanla:\n\n" +
"\n\n".join(f"[{i+1}] {y}" for i, y in enumerate(yollar))}],
temperature=0,
)
return baholash.choices[0].message.contentQaysi usul qachon#
- Zero-shot — oddiy savollar
- Few-shot — format muhim bo'lsa
- Zero-shot CoT — mantiqiy masalalar, bitta jumla
- Prompt chaining — murakkab quvurlar
- Self-consistency — javob aniq bo'lishi kerak (5× narx)
- Tree-of-thought — juda murakkab masala
- Ikkalasi ham bir necha model chaqiruvi
- Faqat oddiy usullar yetmasa
Tartib: zero-shot CoT dan boshlang — arzon va ko'pincha yetarli. Yetmasa few-shot CoT. Javob kritik bo'lsa self-consistency. Eng murakkab holatda ToT. Har qadamda narx oshadi.
Fikrlash usullarini murakkab masalada sinang
Murakkab masalalar to'plamini oling (matematik, mantiqiy yoki vaqt sayohati) va to'rt usulni sinang: zero-shot, zero-shot CoT, few-shot CoT, self-consistency.
Har usul uchun o'lchang:
- Aniqlik — nechta masala to'g'ri yechildi
- Narx — jami token
- Vaqt — soniya
Natijalarni jadvalga yozing.
Asosiy savollar:
- Zero-shot CoT'ning bitta jumlasi aniqlikni qancha oshirdi?
- Self-consistency 5 barobar narxga arzidimi?
- Sizning masalalaringiz uchun eng yaxshi narx/sifat nisbati qaysi usulda?
Maslahatni ko'rsatish
Vaqt sayohati yoki mantiqiy masalalar to'plamini oling (yoki tuzing). Masalan GSM8K datasetidan matematik masalalar. 10-15 ta murakkab masala uchun har usulni sinang: 1. Zero-shot: shunchaki savol 2. Zero-shot CoT: + «qadam-baqadam o'ylang» 3. Few-shot CoT: 2 ta yechim namunasi 4. Self-consistency: 5 marta + ko'pchilik Har usul uchun o'lchang: - Aniqlik: nechta to'g'ri? (javobni qo'lda tekshiring) - Narx: jami token - Vaqt: soniya Jadval: usul aniqlik narx vaqt ---------------------------------------- zero-shot 40% $0.02 2s zero-shot CoT 70% $0.04 4s few-shot CoT 75% $0.06 5s self-consistency 85% $0.20 15s Savol: zero-shot CoT'ning bitta jumlasi aniqlikni qancha oshirdi? Self-consistency 5× narxga arzidimi?
Xulosa#
- 01LLM fikrlash uchun o'qitilmagan, lekin o'quv ma'lumotidagi fikrlash namunalari uni fikrlashga undash imkonini beradi.
- 02Chain-of-thought — modeldan javobni emas, yechim yo'lini so'rash. Murakkab mantiqiy masalalarda aniqlikni keskin oshiradi.
- 03Zero-shot CoT — eng katta samara/mehnat nisbati. Bitta jumla («qadam-baqadam o'ylang») misolsiz aniqlikni oshiradi.
- 04Prompt chaining murakkab vazifani alohida promptlarga bo'ladi — har oraliq natijani tekshirish mumkin. CoT'dan ko'proq nazorat.
- 05Self-consistency bir necha javobdan ko'pchilik ovozini oladi — 5× narx, lekin kritik masalalarda ishonchli. temperature > 0 shart.
- 06Tree-of-thought eng kuchli va eng qimmat — bir necha yo'l, oraliq baholash. Faqat juda murakkab masalalar uchun.
Kitobning oxirgi bobida rejalashtirish va feedbackga o'tamiz: agent murakkab maqsadni qadamlarga bo'lib, natijaga qarab rejasini o'zgartiradigan tizimlar quramiz.