---
title: 'Sistem Yönergesi'
source: 'https://academia.sh/tr/kurslar/istem-muhendisligi/sistem-yonergesi'
course: 'İstem Mühendisliği'
language: tr
updated: '2026-08-17T18:06:39+00:00'
license: 'CC BY-SA 4.0'
---

# Sistem Yönergesi

Kalıcı davranış tanımının her istekte yeniden gönderildiği ve bedelinin istek sayısıyla çarpıldığı ölçülüyor: 62 belirteçlik bir yönerge tek istemin 0,8378 payını, 120 istekte 7440 belirteci tutuyor. Dört uzunluk yan yana konuyor. Yönergesiz istem 0,4583 etiket isabeti ve 2985 belirteç, kısa yönerge 0,7167 ve 4751, orta yönerge 0,7500 ve 5856, uzun yönerge 0,7417 ve 9343 veriyor. Uzun yönergeyi ortaya indirmek 3487 belirteç kazandırıyor ve isabetten hiçbir şey götürmüyor; ortayı kısaya indirmek 1105 belirteç kazandırıyor ama etiketsiz yanıt payını 0,0250'den 0,2167'ye çıkarıyor.

Önceki ders istemi üç bileşene ayırdı ve yönerge ile bağlamın toplam girişin 0,7059 payını
tuttuğunu ölçtü. O ölçüm tek bir isteğin içinde yapıldı. Kod aynı iki metni yüz yirmi kez
gönderdiğinde bedel tek satırda saklı kaldı, çünkü tekrar döngünün içindeydi ve hiçbir yerde
sayılmadı.

Bu ders o tekrarı sayar. Bir **sistem yönergesi**, modelin her istekte aynı biçimde davranması
için yazılan kalıcı davranış tanımıdır: görev nedir, hangi seçenekler vardır, yanıt hangi biçimde
verilir, belirsizlikte ne yapılır. Adı kalıcıdır ama saklandığı yer istemin kendisidir; model iki
çağrı arasında hiçbir şey hatırlamaz. Yönerge bu yüzden **bir kez yazılır ve her istekte
ödenir**. Ölçülecek olan da budur: tekrarın toplamı, tekrarın payı, ve yönergeyi kısaltmanın
isabetten ne kadarını geri aldığı.

- **IT9.** Kod bir **benzeticiyi** çağırır; gerçek bir model uç noktası çağrılmaz. Destek
  talepleri **kurgudur** ve önceki dersteki 120 kayıtla aynıdır.
- **IT10.** Sistem yönergesi ile girdi aynı istemin içindedir. Benzeticide ayrı bir yönerge alanı
  yoktur, çünkü ölçülen şey **belirteç bedelidir** ve alanın adı bedeli değiştirmez.
- **IT11.** Dört yönerge uzunluğu artımlı kurulur: yok, kısa (yalnız etiket kümesi), orta (etiket
  kümesi ve görev ile yanıt biçimi), uzun (buna belirsizlik kuralları eklenmiş hâli).
- **IT12.** Yönergenin bedeli **uzunluk çarpı istek sayısıdır**. Tabloda `tekrar` sütunu bu
  çarpımdır ve toplam giriş belirtecinin içindedir.
- **IT13.** Ölçüt etiket isabetidir; etiketsiz yanıt payı ayrıca basılır. Doğru etiket başına
  belirteç, toplam belirtecin isabete ve kayıt sayısına bölünmesiyle bulunur.
- **IT14.** Her satır iki tohumla koşulur (20260218 ve 20260219). İki koşum farkından küçük kalan
  bir isabet farkı bu kursta ölçülmüş sayılmaz.
- **IT15.** Hız sınırı her otuz yedinci çağrıda tetiklenir ve boş yanıt döndürür. Yüz yirmi
  çağrıda üç kayıt bu yüzden etiketsiz kalır; bu pay istemin değil **yüzeyin** payıdır.
- **IT16.** Belirteç maliyeti ve bütçe önceki kursun kapanış dersinde ölçüldü; burada yalnızca
  belirteç birimi kullanılır.

## Yönerge Modelde Durmaz

İlk blok benzeticiyi ve kurguyu kurar, dört yönerge uzunluğunu artımlı olarak tanımlar ve her
birinin yüz yirmi istekteki toplam bedelini yazar. Sonunda tek bir kurgu talep, kısa ve orta
yönergeyle, iki ayrı tohumda çağrılır.

```python
# BENZETICI. Bu kod gercek bir model uc noktasi cagirmaz; standart kitaplikla yazilmis
# bir dil modeli benzeticisidir. Destek talepleri de KURGU'dur.
import math

TOHUM, M32 = 20260218, 0xFFFFFFFF
PENCERE, EN_UZUN = 240, 24          # baglam penceresi ve en buyuk cikti, belirtec


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


def ayrik(u, w):
    t = 0.0
    for i, x in enumerate(w):
        t += x
        if u < t:
            return i
    return len(w) - 1


def belirtecle(m):                  # KURGU belirtecleyici: parca en cok bes damga
    b = []
    for s in m.lower().replace(",", " , ").split():
        while len(s) > 5:
            b.append(s[:5])
            s = s[5:]
        b.append(s)
    return b


def izno(m):                        # istemin icerigine bagli, kosumdan bagimsiz iz
    h = 2166136261
    for c in m:
        h = ((h ^ ord(c)) * 16777619) & M32
    return h


KONU = ["fatura", "ariza", "sayac", "tarife", "kesinti"]
KALIP = {
    "fatura": ["bu ayki fatura tutari gecen aya gore cok yuksek geldi",
               "faturami odedim ama sistemde borc gorunuyor",
               "fatura ayrintisini nereden gorebilirim"],
    "ariza": ["evde su akmiyor bir ariza var galiba",
              "baglanti bozuk oldu ve hic calismiyor",
              "ariza kaydi actim ama ekip gelmedi"],
    "sayac": ["sayac okumasi yanlis girilmis endeks tutmuyor",
              "sayac degisimi icin randevu istiyorum",
              "sayac uzerindeki endeks ile fatura ayni degil"],
    "tarife": ["hangi tarife basamagindayim ogrenmek istiyorum",
               "tarife degisikligi icin ne yapmam gerekiyor",
               "birim ucret abone tipine gore degisiyor mu"],
    "kesinti": ["mahallede kesinti var ne zaman gelecek",
                "planli kesinti duyurusu nereden takip edilir",
                "aksamdan beri kesinti yasiyoruz"],
}
EK = ["ayrica gecen ay da ayni sorun olmustu", "bu konuda memnun degilim",
      "acil bilgi almam gerekiyor", "kayit numaram elimde yok"]

TALEP = []
for i in range(120):
    r = uretec(TOHUM + i)
    k = KONU[ayrik(r(), [0.24, 0.22, 0.18, 0.20, 0.16])]
    m = KALIP[k][int(r() * 3)]
    if r() < 0.34:
        m += " " + EK[int(r() * 4)]
    TALEP.append({"no": 4001 + i, "metin": m, "konu": k})

KAVRAM = KONU + ["odeme", "sikayet", "bilgi", "genel"]
IZ = {"fatur": "fatura", "tutar": "fatura", "ayrin": "fatura",
      "ariza": "ariza", "bozuk": "ariza", "calis": "ariza", "akmiy": "ariza",
      "sayac": "sayac", "endek": "sayac", "okuma": "sayac",
      "tarif": "tarife", "birim": "tarife", "abone": "tarife", "basam": "tarife",
      "kesin": "kesinti", "duyur": "kesinti", "mahal": "kesinti",
      "borc": "odeme", "odedi": "odeme", "ucret": "odeme",
      "memnu": "sikayet", "sorun": "sikayet", "acil": "sikayet",
      "bilgi": "bilgi", "ogren": "bilgi", "nered": "bilgi"}
TUZAK = {"degis": "tarife", "kayit": "ariza", "yukse": "tarife", "gorun": "fatura",
         "ekip": "kesinti", "takip": "tarife", "giril": "fatura"}   # yaniltici baglar
SERBEST = ["talebiniz {k} konusuyla ilgili gorunuyor",
           "bu kayit {k} basligina girer , ilgili ekibe yonlendirildi",
           "kaydiniz alindi , konuyu inceleyip donus yapacagiz"]
SAYAC = [0]


def cagir(istem, tohum=TOHUM, sicaklik=0.6, en_uzun=EN_UZUN):
    SAYAC[0] += 1
    bel = belirtecle(istem)
    if len(bel) > PENCERE:
        return {"durum": "baglam_asimi", "giris": len(bel), "cikis": 0, "yanit": ""}
    if SAYAC[0] % 37 == 0:
        return {"durum": "hiz_siniri", "giris": len(bel), "cikis": 0, "yanit": ""}
    r = uretec(tohum ^ izno(istem))
    if len(bel) > 90 and r() < 0.04:
        return {"durum": "zaman_asimi", "giris": len(bel), "cikis": 0, "yanit": ""}
    aday = [k for k in KAVRAM if k[:5] in bel]      # istemde adi gecen kavramlar
    if len(aday) < 3:
        aday = KAVRAM
    p = {k: 0.15 for k in aday}
    for t in bel:
        for tablo, w in ((IZ, 1.0), (TUZAK, 1.3)):
            if tablo.get(t) in p:
                p[tablo[t]] += w
    if sicaklik <= 0.0:
        k = max(sorted(p), key=lambda a: p[a])       # en olasi secim
    else:
        e = [math.exp(p[a] / sicaklik) for a in sorted(p)]
        k = sorted(p)[ayrik(r(), [v / sum(e) for v in e])]
    y = k if "tek" in bel else SERBEST[ayrik(r(), [0.42, 0.26, 0.32])].format(k=k)
    cb = belirtecle(y)
    if len(cb) > en_uzun:                            # durdurma kosulu
        cb = cb[:en_uzun]
        y = " ".join(cb)
    return {"durum": "tamam", "giris": len(bel), "cikis": len(cb), "yanit": y}


def oku(y):                                          # yanittan etiket cikarma
    for s in y.lower().split():
        if s in KONU:
            return s
    return None


E1 = "Etiketler: fatura , ariza , sayac , tarife , kesinti ."
E2 = " Talebi bu etiketlerden birine ata . Yanit olarak tek etiket yaz ."
E3 = (" Birden cok etiket uyuyorsa talebin ana konusunu sec ."
      " Hicbiri uymuyorsa en yakin etiketi sec . Aciklama ekleme .")
YONERGE = (("yok", ""), ("kisa", E1), ("orta", E1 + E2), ("uzun", E1 + E2 + E3))


def kur(s, x):                              # kalici yonerge + her istekte degisen girdi
    return (s + " " if s else "") + "Talep: " + x["metin"]


print(f"{'yonerge':<8} {'belirtec':>9} {'120 istekte':>12}")
for ad, s in YONERGE:
    b = len(belirtecle(s))
    print(f"{ad:<8} {b:>9d} {b * len(TALEP):>12d}")
x0 = TALEP[1]
gb = len(belirtecle("Talep: " + x0["metin"]))
ub = len(belirtecle(YONERGE[3][1]))
print(f"uzun istem: yonerge {ub} + girdi {gb} belirtec, yonergenin payi "
      f"{ub / (ub + gb):.4f}")
print(f"KURGU talep {x0['no']} ({x0['konu']}): {x0['metin']}")
for ad, s in YONERGE[1:3]:
    SAYAC[0] = 0
    for th in (TOHUM, TOHUM + 1):
        print(f"{ad} / tohum {th}: {cagir(kur(s, x0), tohum=th)['yanit']}")
```

```
yonerge   belirtec  120 istekte
yok              0            0
kisa            15         1800
orta            33         3960
uzun            62         7440
uzun istem: yonerge 62 + girdi 12 belirtec, yonergenin payi 0.8378
KURGU talep 4002 (fatura): fatura ayrintisini nereden gorebilirim
kisa / tohum 20260218: talebiniz fatura konusuyla ilgili gorunuyor
kisa / tohum 20260219: bu kayit fatura basligina girer , ilgili ekibe yonlendirildi
orta / tohum 20260218: fatura
orta / tohum 20260219: fatura
```

Son dört satır orta yönergenin ne yaptığını gösteriyor. Kısa yönergede iki koşum aynı etiketi
buluyor ama **iki ayrı cümleyle**; orta yönergede iki koşum da tek sözcük veriyor. Etiket ikisinde
de doğru. Değişen şey isabet değil, yanıtın **okunabilirliğidir** ve bedeli on sekiz belirteçtir.

Üstteki satırlar ise ölçülecek asıl orantıdır. Uzun yönerge 62 belirteç; sınıflandırılacak talep
12 belirteç. Tek bir istemde yönerge **0,8378 pay** tutuyor. Yüz yirmi istekte aynı 62 belirteç
yüz yirmi kez gönderiliyor ve toplam 7440 belirtece çıkıyor. Yönergeden bir belirteç atmak yüz
yirmi istekte yüz yirmi belirteç kazandırır; bu, yönerge yazarken alınan her kararın **istek
sayısıyla çarpıldığı** anlamına gelir.

## Tekrarın Toplamı

İkinci blok dört yönergeyi aynı 120 kayıtta koşturur, sonra uzun yönergeyi üç ayrı istek sayısıyla
tekrarlar ve son olarak her kısaltmanın kazandırdığı belirteci düşürdüğü isabetle yan yana koyar.

```python
def olc(s, tohum=TOHUM, n=None):
    SAYAC[0] = 0
    kume = TALEP if n is None else TALEP[:n]
    gi = ci = d = bos = 0
    for x in kume:
        c = cagir(kur(s, x), tohum=tohum)
        gi, ci = gi + c["giris"], ci + c["cikis"]
        e = oku(c["yanit"])
        bos += e is None
        d += e == x["konu"]
    m = len(kume)
    return {"isabet": d / m, "bos": bos / m, "giris": gi, "cikis": ci,
            "yonerge": len(belirtecle(s)) * m, "toplam": gi + ci}


R = {ad: olc(s) for ad, s in YONERGE}
print(f"{'yonerge':<8} {'tekrar':>7} {'giris':>6} {'pay':>7} {'cikis':>6} {'isabet':>7} "
      f"{'kosum 2':>8} {'etiketsiz':>10} {'dogru basina':>13}")
for ad, s in YONERGE:
    v, k2 = R[ad], olc(s, tohum=TOHUM + 1)["isabet"]
    print(f"{ad:<8} {v['yonerge']:>7d} {v['giris']:>6d} {v['yonerge'] / v['giris']:>7.4f} "
          f"{v['cikis']:>6d} {v['isabet']:>7.4f} {k2:>8.4f} {v['bos']:>10.4f} "
          f"{v['toplam'] / v['isabet'] / len(TALEP):>13.1f}")
print()
print(f"{'istek':>6} {'yonerge belirteci':>18} {'toplam giris':>13} {'pay':>7}")
for n in (30, 60, 120):
    v = olc(YONERGE[3][1], n=n)
    print(f"{n:>6d} {v['yonerge']:>18d} {v['giris']:>13d} {v['yonerge'] / v['giris']:>7.4f}")
print()
print(f"{'kisaltma':<16} {'kazanilan belirtec':>19} {'isabet farki':>13} "
      f"{'0,01 isabet basina':>19}")
for (a1, _), (a2, _) in zip(YONERGE[1:], YONERGE[:-1]):
    kb = R[a1]["toplam"] - R[a2]["toplam"]
    fi = R[a2]["isabet"] - R[a1]["isabet"]
    o = f"{kb * 0.01 / abs(fi):.0f} belirtec" if fi < 0 else "kayipsiz"
    print(f"{a1 + ' -> ' + a2:<16} {kb:>19d} {fi:>+13.4f} {o:>19}")
```

```
yonerge   tekrar  giris     pay  cikis  isabet  kosum 2  etiketsiz  dogru basina
yok            0   1700  0.0000   1285  0.4583   0.6333     0.2917          54.3
kisa        1800   3500  0.5143   1251  0.7167   0.4583     0.2167          55.2
orta        3960   5660  0.6996    196  0.7500   0.7500     0.0250          65.1
uzun        7440   9140  0.8140    203  0.7417   0.7583     0.0250         105.0

 istek  yonerge belirteci  toplam giris     pay
    30               1860          2295  0.8105
    60               3720          4547  0.8181
   120               7440          9140  0.8140

kisaltma          kazanilan belirtec  isabet farki  0,01 isabet basina
kisa -> yok                     1766       -0.2583         68 belirtec
orta -> kisa                    1105       -0.0333        332 belirtec
uzun -> orta                    3487       +0.0083            kayipsiz
```

İkinci tablo tekrarın nasıl davrandığını gösteriyor. Otuz istekte uzun yönerge 1860, altmış
istekte 3720, yüz yirmi istekte 7440 belirteç ediyor: bedel istek sayısıyla **doğrusal** büyüyor.
Yönergenin toplam giriş içindeki payı ise 0,8105 ile 0,8181 arasında sabit kalıyor. Ölçek büyüdükçe
tekrarın payının seyrelmesi diye bir şey yok; istek sayısı ne olursa olsun girişin dörtte üçünden
fazlası yönergedir. Bir yönerge ne kadar iyi yazılmış olursa olsun, bedeli **kendi uzunluğu değil,
uzunluğunun trafikle çarpımıdır**.

## Kısaltmanın Bedeli

Birinci tablo isabetin nerede doyduğunu söylüyor. Yönergesiz istem 0,4583 veriyor. Kısa yönerge
0,7167'ye çıkarıyor. Orta yönerge 0,7500'e çıkarıyor. Uzun yönerge ise 0,7417 veriyor, yani
**ortanın altında**. Otuz dokuz belirteçlik ek — belirsizlik kuralları, ana konu seçimi, açıklama
yasağı — 3487 belirteçlik bir toplam ekledi ve isabetten 0,0083 götürdü. Doğru etiket başına bedel
65,1'den 105,0 belirtece çıktı. Bu kursta böyle bir satır adıyla yazılır: **eklenen metin bedeli
kesin, kazancı belirsizdir.**

Üçüncü tablo kısaltmayı ters yönden okur. Uzun yönergeden ortaya inmek 3487 belirteç kazandırıyor
ve isabetten hiçbir şey götürmüyor; bu **kayıpsız kısaltmadır**. Ortadan kısaya inmek 1105 belirteç
kazandırıyor ve 0,0333 isabet götürüyor, yani her 0,01 isabet için 332 belirteç. Kısadan yönergesize
inmek 1766 belirteç kazandırıyor ve 0,2583 isabet götürüyor, yani her 0,01 isabet için 68 belirteç.
Kısaltmanın karşılığı sabit değildir: yönerge kısaldıkça kalan her belirteç daha pahalı hâle gelir.

Tablonun `etiketsiz` sütunu kısaltmanın asıl kaybını gösteriyor. Yönergesiz istemde yanıtların
0,2917 payından, kısa yönergede 0,2167 payından hiçbir etiket okunamıyor. Orta yönergede bu pay
0,0250'ye iniyor ve orada kalıyor. Kalan üç kayıt istemin değil **yüzeyin** payıdır: hız sınırı
yüz yirmi çağrının üçünü boş döndürüyor. Yani orta yönerge, istemle kapatılabilecek boşluğun
tamamını kapatmış durumda. Uzun yönergenin ekleyecek bir şeyi kalmadığı için yalnız belirteç
ekliyor.

Son olarak `kosum 2` sütunu okunur. Yönergesiz istem iki koşumda 0,4583 ve 0,6333, kısa yönerge
0,7167 ve 0,4583 verdi: ikinci koşumda **yönergesiz istem kısa yönergeli istemi geçti**. Kısa
yönergenin kazancı tek koşumda görünüyor, iki koşumda taşınmıyor. Orta yönerge ise iki koşumda da
0,7500 verdi. Uzun yönerge ise 0,7417 ve 0,7583 verdi; kendi iki koşum farkı 0,0167. Uzun ile orta
arasındaki 0,0083 fark bunun altında kalıyor ve bu kursta **ölçülmemiş sayılır**. Kural bir sonraki
derste adıyla işletilir.

## Özet

- Sistem yönergesi kalıcı bir davranış tanımıdır ama kalıcılığı modelde değil istemdedir: her
  istekte yeniden gönderilir ve **her istekte yeniden ödenir**.
- 62 belirteçlik uzun yönerge tek istemin 0,8378 payını, 120 istekte 7440 belirteci tutuyor. Pay
  otuz, altmış ve yüz yirmi istekte 0,8105 ile 0,8181 arasında sabit; toplam ise doğrusal büyüyor.
- İsabet orta yönergede doyuyor: yok 0,4583, kısa 0,7167, orta 0,7500, uzun 0,7417. Uzun yönerge
  3487 belirteç ekleyip 0,0083 isabet götürdü ve doğru etiket başına bedeli 65,1'den 105,0'a
  çıkardı.
- Kısaltmanın karşılığı sabit değil: uzundan ortaya inmek kayıpsız, ortadan kısaya inmek 0,01
  isabet başına 332 belirteç, kısadan yönergesize inmek 68 belirteç kazandırıyor.
- Yönergenin kapattığı asıl boşluk etiketsiz yanıt payıdır: 0,2917'den 0,0250'ye iniyor ve orada
  duruyor. Kalan pay hız sınırından gelir, yani istemle kapatılamaz.

## Sonraki Adım

Orta ile uzun yönerge arasındaki fark, uzunun kendi koşum farkının altında kaldı: eklenen otuz
dokuz belirteç ölçülebilir bir şey üretmedi. Bu, yönergeye ne ekleneceği sorusunu kapatmıyor.
Sık verilen bir cevap, modele **kim olduğunu** söylemektir: bir uzmanlık, bir görev unvanı, bir
üslup. Bu ekin isabeti yükselttiği yaygın bir kabuldür ve tıpkı belirsizlik kuralları gibi her
istekte ödenir. Sonraki ders bunu ölçer: rol belirtmenin kattığı fark nedir, bedeli kaç belirteçtir,
ve o fark aynı istemin iki koşumu arasındaki farktan büyük müdür.
