aidoc.uz

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 — misolsiz
Faqat savol. «Bu masalani yech». Model o'z bilimidan foydalanadi. Oddiy vazifalar uchun.
1
One-shot — bitta misol
Bitta yechim namunasi + savol. Model formatni va yondashuvni ko'radi.
N
Few-shot — bir necha misol
Bir 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.

Oddiy: «23 - 20 + 6 = ?»
model to'g'ridan-to'g'ri javob beradi — ko'pincha xato
CoT: «Qadam-baqadam yech»
23 - 20 = 3, keyin 3 + 6 = 9
Javob: 9
qadamlar orqali to'g'ri natija
CoT: model javobni emas, YECHIM YO'LINI yozadi

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, 0
5 marta so'raymiz
temperature=0.7, har xil yo'l
javoblar: 9, 9, 8, 9, 9
biri farq qildi
ko'pchilik: 9 (80%)
ishonchli javob
Self-consistency: bir necha yo'l, ko'pchilik ovozi

Tree-of-thought (ToT)#

Eng ilg'or usul. Model bir necha fikr yo'lini quradi, ularni o'zi baholaydi va eng yaxshisini tanlaydi.

Masala
murakkab, ko'p yo'lli
3 xil yondashuv generatsiya
har biri boshqa yo'l
Har yo'lni baholash
model o'zi: qaysi biri istiqbolli?
Eng yaxshi yo'lni davom ettirish
yoki qidiruv algoritmi bilan
Tree-of-thought: bir necha yo'l, baholash, eng yaxshisini tanlash
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.content

Qaysi usul qachon#

Oddiy usullar (arzon)
  • Zero-shot — oddiy savollar
  • Few-shot — format muhim bo'lsa
  • Zero-shot CoT — mantiqiy masalalar, bitta jumla
  • Prompt chaining — murakkab quvurlar
Ilg'or usullar (qimmat)
  • 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.

Amaliy topshiriq

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:

  1. Aniqlik — nechta masala to'g'ri yechildi
  2. Narx — jami token
  3. 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#

Yodda saqlang
  • 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.