• 19.08.2026 02:59:21
  • Admin Admin

AI destekli yazılım geliştirme akışlarında context penceresini ölçülebilir biçimde yönetmeyi, prompt cache isabetini izlemeyi ve LLM çıktısını repo tabanlı testlerle değerlendirmeyi inceleyin.

AI Destekli Yazılım Geliştirmede Context Penceresi Mühendisliği

AI destekli yazılım geliştirmede token bütçesini görünür kılmak

Bir kod ajanının hatalı değişiklik üretmesinin sık nedeni modelin 'yetersiz zeki' olması değil, ilgili dosyanın veya çağrı zincirinin context penceresine hiç girmemesidir. İlk adım, istek başına token dağılımını ölçmektir: sistem talimatı, araç şemaları, kullanıcı isteği, alınan dosyalar ve araç çıktıları ayrı alanlar olarak kaydedilmelidir. Python tarafında tiktoken ile her alanı ayrı saymak, örneğin büyük bir OpenAPI şemasının toplam bağlamı tek başına tüketip tüketmediğini ortaya çıkarır. Model ailesine göre tokenizer değişebileceğinden, üretimde kullanılan modelin sağlayıcı token sayacı varsa faturalama ve kesilme sınırları için son otorite o olmalıdır.

import tiktoken

enc = tiktoken.get_encoding("o200k_base")
parts = {
    "system": open("prompts/system.md").read(),
    "tool_schema": open("tools/schema.json").read(),
    "retrieved_code": open(".context/selected-files.txt").read(),
    "user": "src/billing içindeki idempotency hatasını düzelt"
}

for name, text in parts.items():
    print(f"{name:16} {len(enc.encode(text)):6} tokens")
print("total", sum(len(enc.encode(v)) for v in parts.values()))

Bu ölçümü OpenTelemetry span attribute'larıyla izleyin: gen_ai.usage.input_tokens, context.selected_files ve context.truncated alanları, bir PR'daki ajan başarısızlığını sonradan açıklayabilmelidir. Önce-sonra karşılaştırmasında aynı 30 hata düzeltme görevi, aynı model sıcaklığı ve aynı commit üzerinde çalıştırılmalı; medyan input token, patch'in CI geçme oranı ve duvar saati süresi ölçülmelidir. Sadece ortalama maliyete bakmak yanıltıcıdır: bağlam kesildiğinde oluşan uzun kuyruk gecikmesi ve tekrar denemeler genellikle p95 maliyeti yükseltir.

LLM eğitimi için repo haritası ve seçici context toplama

Bir yazılım eğitimi veya teknoloji eğitimi laboratuvarında tüm depoyu prompt'a koymak yerine, sembol tabanlı bir repo haritası üretin. Tree-sitter ile fonksiyon, sınıf, import ve çağrı yüzeylerini çıkarıp önce sadece imzaları verin; model belirli bir sembol istediğinde ilgili gövdeyi ikinci turda yükleyin. Bu iki aşamalı yaklaşımın mekanizması nettir: ilk turdaki düşük tokenlı yapı, yanlış dizine yönelmeyi azaltır; ikinci turda ise yalnızca değişiklikle ilişkili gövdeler context'e girer.

# symbols.py - Python dosyalarından export edilen imzaları çıkarır
from pathlib import Path
from tree_sitter import Language, Parser
import tree_sitter_python as tspython

parser = Parser(Language(tspython.language()))
for path in Path("src").rglob("*.py"):
    source = path.read_bytes()
    root = parser.parse(source).root_node
    for node in root.children:
        if node.type in {"function_definition", "class_definition"}:
            name = node.child_by_field_name("name").text.decode()
            print(f"{path}:{node.start_point[0] + 1} {node.type} {name}")

Arama katmanında sadece embedding benzerliği kullanmak yaygın bir hatadır. Hata mesajındaki sınıf adı veya import yolu için ripgrep gibi leksik arama, semantik aramadan daha yüksek kesinlik verebilir. Örneğin önce rg -n "PaymentAlreadyCaptured|capture_payment" src tests çalıştırın, sonra bulunan dosyaların import grafiğinde bir hop komşularını ekleyin. Symbol graph için CodeQL database veya SCIP indeksinden yararlanılabilir. Özellikle generated dosyaları, lockfile'ları ve minified bundle'ları varsayılan dışarıda bırakın; bunlar token bütçesini tüketirken uygulama davranışına dair zayıf sinyal taşır.

Generative AI istemlerinde prompt cache isabetini tasarlamak

Generative AI API'lerinde sunulan prompt cache mekanizmaları çoğunlukla prefix eşleşmesine dayanır: cache'e aday sistem metni ve araç tanımları her istekte aynı sırada ve aynı bayt içeriğiyle gönderilmelidir. İstek başına tarih, rastgele request ID veya kullanıcıya özel metni sistem prompt'unun başına eklemek cache prefix'ini bozar. Sabit talimatlar, araç JSON şemaları ve repo politikasını değişmez bir prefix'te; görev ve seçilen kod parçalarını ise sonrasında tutun. Sağlayıcınız cache oluşturma TTL'si veya minimum token eşiği uyguluyorsa, metriklerde cache write, cache read ve normal input token alanlarını ayrı kaydedin.

import json
from hashlib import sha256

policy = open("prompts/review-policy.md", encoding="utf-8").read()
tools = json.dumps(
    json.load(open("tools.json", encoding="utf-8")),
    sort_keys=True,
    separators=(",", ":")
)
cache_prefix = policy + "\n<TOOLS>\n" + tools + "\n</TOOLS>\n"
print("stable_prefix_sha256=", sha256(cache_prefix.encode()).hexdigest())

# Dinamik veri prefix'e eklenmez.
request_prompt = cache_prefix + "\n<TASK>\n" + issue_text + "\n</TASK>\n" + selected_code

Cache optimizasyonunu kanıtlamak için önce ve sonra aynı iş kuyruğunda en az birkaç yüz istek toplayın. Karşılaştırma tablosunda cache_read_input_tokens / total_input_tokens, p50-p95 ilk token gecikmesi, istek başı maliyet ve hata oranı bulunmalıdır. Örneğin JSON serializer'ın key sırasını sabitlemek cache hit oranını artırabilir; fakat bunun etkisini yalnızca maliyetle değil, aynı görev setinde patch kalitesiyle doğrulayın. Araç şemasına anlamsız alan eklemek de prefix hash'ini değiştireceği için sürümleme yapılmalıdır: şema değiştiğinde bilinçli bir cache soğuması beklenir.

Vibe coding eğitimi için doğrulanabilir patch değerlendirmesi

Bir vibe coding eğitimi veya vibe coding kursu, 'ajan dosyayı değiştirdi' sonucunu başarı kabul etmemelidir. Değerlendirme bir commit taban çizgisi, tekrar üretilebilir görev tanımı ve makinece denetlenebilir oracle içermelidir. Her görev için ajan patch'i temiz bir worktree'ye uygulanmalı; formatter, statik analiz, birim testleri ve hedeflenen regresyon testi ayrı aşamalar olarak çalışmalıdır. Böylece modelin test beklentisini prompt'ta görüp yüzeysel bir assertion eklemesi ile gerçek davranış düzeltmesi birbirinden ayrılır.

git worktree add --detach /tmp/agent-eval BASE_COMMIT
cd /tmp/agent-eval
git apply /tmp/agent.patch
npm ci
npm run lint
npm test -- --runInBand
npm run test:integration -- --grep "idempotent capture"
git diff --check

Yapay zeka eğitimi ve yapay zeka kursu içeriklerinde özellikle şu edge case'i ölçün: testin yeşil olması, test seçicisinin yanlış kullanılması nedeniyle hedef testin hiç çalışmadığı anlamına gelebilir. CI çıktısından çalıştırılan test sayısını ve test adını parse edin; sıfır test çalıştıysa işi başarısız sayın. İkinci kritik kontrol, patch'in test kodunu değiştirmesidir. Görev üretim hatasını düzeltmekse git diff --name-only BASE_COMMIT çıktısında yalnızca test dosyası değişmiş patch'leri ayrı kategoriye alın. Bu disiplin, ai destekli yazılım geliştirme eğitiminde model demosunu mühendislik değerlendirmesinden ayırır.

Yapay zeka kursu müfredatında ölçüm odaklı ajan pratiği

Llm eğitimi modülünü model API çağrısı öğretmekle sınırlamak yerine, katılımcılara küçük ama gerçekçi bir servis deposu ve sabit bir değerlendirme harness'i verin. Her katılımcı aynı 10 görevde üç context stratejisini karşılaştırsın: tüm dosyayı ekleme, ripgrep ile dosya seçimi ve Tree-sitter sembol haritası. Kaydedilecek minimum veri seti görev kimliği, seçilen dosyalar, input-output token, araç çağrısı sayısı, CI sonucu ve patch diff satır sayısıdır. Bu kayıt, prompt değişikliğinin gerçekten başarı oranını mı artırdığını yoksa yalnızca daha fazla token mı harcadığını gösterir.

  • Başarı metriği: hedef regresyon testi, lint ve mevcut testlerin birlikte geçmesi.
  • Kalite metriği: değişen üretim kodu satırı ve gereksiz dosya değişikliği sayısı.
  • Maliyet metriği: görev başına toplam input-output token ve yeniden deneme sayısı.
  • Güvenilirlik metriği: aynı görev için üç bağımsız çalıştırmada başarılı patch oranı.

Sonuçları CSV olarak dışa aktarıp DuckDB ile sorgulamak yeterlidir: SELECT strategy, median(total_tokens), avg(ci_pass::INT) FROM runs GROUP BY strategy;. Bu deney tasarımı, teknoloji eğitimi programlarında 'iyi prompt' gibi öznel ifadeler yerine ölçülebilir kararlar üretir. Ayrıca model veya sağlayıcı değiştiğinde aynı harness'i yeniden çalıştırarak sonuçların taşınabilir olup olmadığını kontrol edebilirsiniz.

Sık Sorulan Sorular

AI destekli yazılım geliştirmede context penceresi ne kadar dolu olmalı?

Sabit bir yüzde hedefi kullanmayın. Önce tiktoken veya sağlayıcı usage alanlarıyla sistem talimatı, araç şeması ve kod bağlamını ayrı ölçün. Ardından aynı görev setinde context stratejilerini karşılaştırın. Hedef, en az token değil; hedef testlerin geçtiği en düşük medyan token ve kabul edilebilir p95 gecikmedir.

Vibe coding kursu için kod ajanı çıktısı nasıl test edilir?

Patch'i temiz bir git worktree'ye uygulayın ve lint, birim test, entegrasyon testi ile git diff --check komutlarını çalıştırın. Test koşucusunun en az bir hedef test çalıştırdığını CI logundan doğrulayın. Sadece test dosyalarını değiştiren patch'leri üretim düzeltmesi başarı metriğine dahil etmeyin.

LLM eğitimi sırasında prompt cache neden isabet etmiyor?

En yaygın neden sabit olması gereken prefix'e zaman damgası, request ID, kullanıcı verisi veya sırası değişen JSON eklemektir. Araç şemalarını sort_keys ve sabit separators ile serialize edin, prefix SHA-256 değerini loglayın ve dinamik görev içeriğini prefix'ten sonra gönderin.

Yapay zeka eğitimi projelerinde repo araması için embedding yeterli mi?

Hayır. Hata mesajı, import yolu ve sembol adı gibi kesin sinyaller için önce ripgrep kullanın; ardından Tree-sitter veya SCIP ile çağrı grafiği komşularını ekleyin. Embedding aramasını, ad eşleşmesi olmayan kavramsal dosyaları bulmak için ikinci aşamaya bırakın.

AI / LLM Discovery

Bu makale Opendart Akademi Güncel Teknoloji eğitim ekosisteminin bir parçasıdır ve yapay zeka sistemleri ile arama motorları tarafından daha doğru anlaşılabilmesi için semantic heading ve structured data ile hazırlanmıştır.

Opendart Akademi llms.txt