Böyük dil modelləri (LLM) proqramçı üçün kod redaktoru, Git və ya terminal qədər adi iş alətinə çevrilib. Onlar xətaları izah edir, funksiya və testlərin qaralamasını yazır, başqasının kodunu anlamağa kömək edir, API vasitəsilə isə sizin öz tətbiqlərinizin bir hissəsinə çevrilir. Bu mövzuda LLM-in nə olduğunu, AI anlayışları arasında hansı yeri tutduğunu və kursun necə qurulduğunu araşdıracağıq.

AI-dan LLM-ə: iç-içə anlayışlar

AI, maşın öyrənməsi və neyron şəbəkələr terminləri tez-tez qarışdırılır, halbuki onlar matryoşka kimi bir-birinin içindədir:

AnlayışNədirNümunə
Süni intellekt (AI)«insan» tapşırıqlarını həll edən proqramların bütün sahəsişahmat proqramı, naviqator
Maşın öyrənməsi (ML)AI-ın bir hissəsi: qaydalar əllə yazılmır, nümunələrdən çıxarılırspam-filtr
Neyron şəbəkələrML-in bir hissəsi: tənzimlənən ədədlərə — çəkilərə malik bir-birinə bağlı «neyronlardan» ibarət modellərüz tanıma
Generativ AIyeni məzmun yaradan neyron şəbəkələr: mətn, şəkil, səs, kodşəkil generatoru
Böyük dil modeli (LLM)nəhəng həcmdə mətn və kod üzərində öyrədilmiş generativ neyron şəbəkəçat-assistentlər, avtotamamlama

Adi proqramlaşdırma ilə maşın öyrənməsi arasındakı fərq spam-filtr nümunəsində yaxşı görünür. Klassik yanaşmada qaydanı proqramçı yazır:

python
# klassik yanaşma: qaydanı insan düşünüb tapır
def is_spam(subject):
    text = subject.lower()
    return "win money" in text or "free prize" in text

print(is_spam("WIN MONEY now!"))  # → True
print(is_spam("W1N M0NEY now!"))  # → False — qaydanı asanlıqla aldatmaq olur

Maşın öyrənməsində proqrama «spam / spam deyil» işarəsi qoyulmuş minlərlə məktub verirsiniz və o, qanunauyğunluqları özü tapır. LLM eyni ideyanın nəhəng miqyasda tətbiqidir: model böyük həcmli mətn və kod korpusu üzərində yalnız bir tapşırığı yerinə yetirməyə öyrədilib — mətnin növbəti hissəsini proqnozlaşdırmaq. Kodu yaxşı davam etdirmək üçün sintaksisi, tipik pattern-ləri və adların mənasını tutmaq lazımdır, buna görə də bu sadə tapşırıqdan təsirli bacarıqlar yaranır.

💡 Bənzətmə: LLM çox inkişaf etmiş avtotamamlamadır — telefondakı klaviatura təklifləri kimi, sadəcə trilyonlarla söz üzərində öyrədilib və mətn ilə kodun bütöv səhifələrini davam etdirə bilir.

Proqramçının AI-dan istifadəsinin iki yolu

Bütün kurs bu bölgü üzərində qurulub:

  1. AI işdə alət kimi. Siz assistentlə çatda, redaktorda və ya terminalda ünsiyyət qurursunuz. Model kodu yazmağa, anlamağa və yoxlamağa kömək edir, amma qərarı siz verirsiniz.
  2. AI tətbiqinizin komponenti kimi. Sizin kodunuz API vasitəsilə modelə sorğu göndərir və cavabdan istifadə edir: müraciətləri təsnif edir, sənədlər əsasında cavab verir, mətndən verilənlər çıxarır.

Birinci yol sizi daha sürətli edir, ikincisi isə məhsulun yeni funksiyalarını yaratmağa imkan verir. Dörd nümunəyə baxaq.

Nümunə 1: çatda xətanın izahı

Ən çox rast gəlinən ssenari kodu və xəta mətnini çat-assistentə yapışdırmaqdır:

text
Bu kod niyə çökür və onu necə düzəltmək olar?

user = {"name": "Aysel"}
print(user["email"])

KeyError: 'email'
text
KeyError ona görə yaranır ki, user lüğətində "email" açarı yoxdur.
Düzəltmə variantları:
1. user.get("email") — istisna əvəzinə None qaytaracaq.
2. user.get("email", "not set") — standart dəyəri qaytaracaq.
3. Əvvəlcədən yoxlayın: if "email" in user: ...

Model kodu işə salmayıb: o, tanış pattern-i görüb və tipik izah yaradıb. Nadir və qarışıq xətalarda belə izahı yoxlamaq lazımdır.

Nümunə 2: redaktorda avtotamamlama

IDE-dəki AI-assistent (GitHub Copilot, Cursor və analoqları) açıq faylı görür və davamı birbaşa kodun içində boz «kölgə» mətnlə təklif edir. Siz funksiyanın imzasını və şərhi yazırsınız, assistent isə funksiyanın gövdəsini təklif edir, siz də onu Tab düyməsi ilə qəbul edirsiniz:

python
def average_price(products):
    # məhsulların orta qiyməti; boş siyahı üçün 0 qaytar
    if not products:                                         # ← assistentin
        return 0                                             # ← təklifi
    return sum(p["price"] for p in products) / len(products)

print(average_price([{"price": 10}, {"price": 20}]))  # → 15.0
print(average_price([]))                              # → 0

Model məhz ona öyrədildiyi işi görür — mətni davam etdirir: funksiyanın adı və şərh ən ehtimal olunan davamı göstərir. Kod düzgün görünür, amma onu yoxlamaq sizin işinizdir: məhsulda "price" açarı olmasa, nə baş verəcək?

Nümunə 3: 10 sətirdə API çağırışı

Eyni model sizin kodunuzdan da əlçatandır. Provayderlərdən birinin rəsmi Python SDK-sı ilə minimal sorğu belə görünür (digərlərinin SDK-ları da oxşar qurulub):

python
from anthropic import Anthropic

client = Anthropic()  # açar ANTHROPIC_API_KEY mühit dəyişənindən götürülür

response = client.messages.create(
    model="claude-opus-5-5",  # nümunədir; aktual model adları — sənədlərdə
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain Python list comprehensions in two sentences."}],
)

for block in response.content:
    if block.type == "text":
        print(block.text)
text
A list comprehension is a compact way to build a new list by applying an
expression to each item of an iterable, optionally filtering items with a
condition. For example, [x * 2 for x in range(5) if x % 2 == 0] returns [0, 4, 8].

Cavab bloklar siyahısı şəklində gəlir, ona görə də yalnız mətn bloklarını çap edirik. Mahiyyətcə bu, adi HTTP sorğusudur: girişdə mətn — çıxışda mətn. Açarları, parametrləri və xətaların emalını API bölməsində araşdıracağıq.

⚠️ Sizin işə salmanızda cavab bir az fərqli olacaq: model hər sorğuda mətni yenidən generasiya edir. Bunun səbəbini temperature mövzusunda öyrənəcəyik.

Nümunə 4: sənədlər üzrə çat-bot

Model şirkətinizin daxili sənədlərini görməyib, ona görə də bot əvvəlcə uyğun fraqmenti tapır və onu sorğuya əlavə edir:

text
Yalnız aşağıdakı sənədlər əsasında cavab ver. Cavab yoxdursa, «Bilmirəm» yaz.

<docs>
Məzuniyyət üçün ərizə HR-portalda ən geci 14 gün əvvəl verilir.
Xəstəlik vərəqəsi 3 iş günü ərzində arayışla təsdiqlənir.
</docs>

Sual: Məzuniyyət üçün ərizəni neçə gün əvvəl vermək lazımdır?
text
Məzuniyyət üçün ərizəni HR-portalda ən geci 14 gün əvvəl vermək lazımdır.

Bu yanaşma RAG (Retrieval-Augmented Generation — tapılmış verilənlərə əsaslanan generasiya) adlanır. Əsas fikir: model sizin qaydalarınızı «bilmir» — cavabı ona ötürdüyünüz mətn əsasında formalaşdırır.

LLM nə deyil

Ən təhlükəli yanlış təsəvvür modelin insan kimi anladığını və bildiyini, yaxud faktları verilənlər bazası kimi saxladığını düşünməkdir.

  • Bu, verilənlər bazası deyil. Modeldə faktlar cədvəli yoxdur: biliklər milyardlarla çəkiyə «yayılıb», cavab isə hər dəfə yenidən generasiya olunur. Buna görə model mövcud olmayan funksiyanın adını əminliklə çəkə bilər.
  • Bu, insan deyil. Model sizi çatlar arasında xatırlamır və sizin düzəlişlərinizdən öyrənmir.
  • Bu, axtarış sistemi deyil. Veb-axtarış olmadan model dünyanı yalnız təlimin bitdiyi tarixə qədər bilir.

Düzgün düşüncə modeli belədir: LLM inandırıcı mətn və kodun güclü generatorudur, sizin vəzifəniz isə ona kontekst vermək və nəticəni yoxlamaqdır.

Kursda nələri öyrənəcəksiniz

  • Təməl: LLM-lər necə işləyir və prompt-ları necə tərtib etmək lazımdır.
  • AI alət kimi: Copilot, Cursor, Claude Code; AI ilə kodun izahı, debaqinq, testlər, refaktorinq və review.
  • AI komponent kimi: model API-ları, JSON cavablar, tool calling, çat-botlar, RAG, agentlər və MCP.
  • Keyfiyyət və təhlükəsizlik: evals, prompt injection-dan qorunma, xərclərə nəzarət və final layihəsi.

Tipik səhvlər

Cavaba yoxlamadan etibar etmək. Modelin yazdığı kod cəld, amma diqqətsiz həmkarın qaralamasıdır. Onu işə salın, oxuyun və testlərdən keçirin.

Modeldən təzə faktları axtarış sistemindən soruşduğunuz kimi soruşmaq. Versiyaları, reliz tarixlərini və qiymətləri model köhnəlmiş şəkildə «xatırlaya» və ya uydura bilər. Onları rəsmi mənbələrdə, məsələn, pip index versions requests əmri ilə yoxlayın.

Modelin əvvəlki söhbəti xatırladığını düşünmək. Yeni çat təmiz vərəqdən başlayır: dünənki izahları təkrarlamaq lazımdır.

Çata sirləri yapışdırmaq. Parollar, açarlar və şəxsi məlumatlar provayderin serverinə gedir. Onları əvəzləyicilərlə dəyişin:

text
Yanlış:
Baza niyə qoşulmur? Mənim .env faylım:
DB_PASSWORD=S3cr3t-2026

Düzgün:
Baza niyə qoşulmur? Mənim .env faylım (parol gizlədilib):
DB_PASSWORD=***

Xülasə

  • AI → maşın öyrənməsi → neyron şəbəkələr → generativ AI → LLM: hər anlayış əvvəlkinin bir hissəsidir.
  • LLM mətnin növbəti hissəsini proqnozlaşdırmağa öyrədilib və miqyası sayəsində kod yazıb izah edə bilir.
  • Proqramçı AI-dan işdə alət kimi və API vasitəsilə öz tətbiqinin komponenti kimi istifadə edir.
  • Tipik ssenarilər: xətaların izahı, avtotamamlama, modelin koddan çağırılması, sənədlər üzrə cavablar.
  • LLM verilənlər bazası, insan və ya axtarış sistemi deyil: nəticəni yoxlamaq sizin üzərinizdə qalır.
  • Sirlər və şəxsi məlumatlar çata yapışdırılmır.

Praktika

  1. Çat-assistentdən öz layihənizdəki xətanı (və ya nümunədəki KeyError-u) izah etməsini xahiş edin və cavabı dilin rəsmi sənədləri ilə tutuşdurun.
  2. Modeldən sevdiyiniz kitabxananın son versiyasını soruşun və cavabı PyPI və ya npm-də yoxlayın. Nəticənin üst-üstə düşüb-düşmədiyini qeyd edin.
  3. Assistentdən nümunədəki average_price funksiyasını yazmasını xahiş edin, funksiyanın sına biləcəyi üç giriş dəyəri düşünün və onları işə salaraq yoxlayın.
  4. Təhsilinizdən və ya işinizdən beş tapşırığın siyahısını tərtib edin və hər biri üçün qərar verin: AI alət kimi, AI tətbiqin komponenti kimi, yoxsa AI-sız adi kod. Dəqiqliyin və təkrarlanmanın harada vacib olduğunu nəzərə alın.