· Admin

LLM ve AI Araçları: Bir Developer'ın Günlük Kullanım Rehberi

Son iki yilda yazilim gelistirme surecim kokten degisti. Artik kod yazarken yanima bir AI asistani almadan baslamiyorum. Ancak bu surec "herseyi AI'a yaptir" gibi basit bir sey degil. Ne zaman kullanacagini, nasil yonlendirecegini ve ciktilari nasil dogrulayacagini bilmek gerekiyor. Bu yazida LLM'lerin teknik arka planindan gunluk kullanim pratiklerime kadar bir developer perspektifinden her seyi paylasiyorum.

LLM Nedir? Teknik Acidan Kisa Bir Bakis

Large Language Model (LLM), buyuk miktarda metin verisi uzerinde egitilmis yapay sinir agi modelidir. Teknik olarak transformer mimarisine dayanir ve temel islevi, verilen bir metin dizisinden sonra gelmesi en olasi token'i tahmin etmektir.

Ama bu basit tanim yaniltici olabilir. Modern LLM'ler sadece kelime tahmini yapmaz; kod yazar, analiz yapar, plan olusturur, hata ayiklar. Bunun sebebi, milyarlarca parametre ile egitim sirasinda dilin ve mantik yapisinin bir ic temsilini olusturmalaridir.

Developer olarak bilmeniz gereken sey: LLM deterministik degil. Ayni soruya farkli cevaplar verebilir. Temperature parametresi bu rastgelelik derecesini kontrol eder. Kod yazimi icin dusuk temperature (0.0-0.3) daha tutarli sonuclar verir.

Developer Icin AI Araclari

Piyasada bircok AI araci var ama developer'lar icin uc tanesi one cikiyor:

Claude Code benim ana aracim. Terminal icinde calisiyor, proje dosyalarinizi okuyor, duzenliyor, git islemleri yapiyor. Bir nevi programlama partneri gibi. Buyuk refactoring'lerde, modul olusturmada ve karmasik bug'lari ayiklamada muhtesem.

GitHub Copilot IDE icinde satir satir kod onerisi yapar. Otomatik tamamlama gibi calisir ama cok daha akilli. Routine kod yazarken (CRUD islemleri, test'ler, boilerplate) ciddi zaman kazandirir.

Cursor VS Code fork'u olarak AI'yi editore derinlemesine entegre eder. Chat paneli, inline edit ve codebase-aware oneriler sunar. Claude Code kadar guclu olmasa da gorsel arayuzu ile daha erisebilir.

Benim kombinasyonum: gunluk kodlama icin Claude Code, hizli otomatik tamamlama icin Copilot.

MCP: Model Context Protocol

MCP, AI modellerinin dis araclarla ve veri kaynaklariyla etkilesimini standartlastiran bir protokol. Neden onemli? Cunku LLM'ler normalde sadece metinle calisir. MCP ile bir LLM veritabanina sorgu atabilir, dosya sisteminize erisebilir, API cagirabilir.

Pratik bir ornek: Claude Code'a "veritabanindaki son 10 siparisi getir" diyorsunuz. MCP sayesinde Claude, Qdrant veya baska bir veritabanina dogrudan erisip sonuclari size gosteriyor. Arada hicbir manual adim yok.

MCP server'lar belirli bir yetenek sunar (veritabani erisimi, dosya sistemi, web arama gibi), MCP client ise bu yetenekleri kullanir. Acik bir standarttir ve farkli AI araclari arasinda uyumluluk saglar.

{
  "mcpServers": {
    "qdrant": {
      "command": "uvx",
      "args": ["mcp-server-qdrant"],
      "env": {
        "QDRANT_URL": "http://localhost:6333",
        "COLLECTION_NAME": "memories"
      }
    }
  }
}

Bu yapilandirma ile AI aracina bir hafiza sistemi eklemis oluyorsunuz. Onceki konusmalarinizi hatirlayabilir, notlar alabilir.

Vibe Coding vs Developer-Driven AI

AI ile kod yazmanin iki farkli yaklasimi var ve aradaki fark cok onemli.

Vibe coding AI'a "su uygulamayi yap" deyip ciktisini oldugun gibi kabul etmek. Hizlidir, prototipleme icin ise yarar ama tehlikelidir. Ne yaptigini anlamadan kodu uretim ortamina atmak, teknik borc biriktirmek ve debug edemeyeceginiz bir codebase olusturmak demektir.

Developer-driven AI ise AI'yi bir arac olarak kullanmak. Siz mimariyi belirlersiniz, siz tasarim kararlarini verirsiniz, AI ise uygulamayi hizlandirir. Cikan kodu incelersiniz, anlamadiginiz kismi sorgularsiniz, gerekirse degistirirsiniz.

Ben kesinlikle ikinci kamptayim. Claude Code ile calisirken bile her ciktiyi gozden geciririm. Ozellikle guvenlik ve veritabani islemleri iceren kodlarda bu zorunlu.

Prompt Engineering Temelleri

AI'dan iyi cikti almanin sirri iyi prompt yazmaktir. Developer'lar icin birkac temel ilke:

Baglamli olun. "Bir API yaz" yerine "Laravel 12'de, Sanctum authentication kullanan, RESTful kurallarina uyan bir siparis API'si yaz" deyin.

Ornekle aciklayin. Input/output ornekleri verin:

Girdi: { "name": "Laptop", "price": 15000 }
Cikti: { "slug": "laptop", "formatted_price": "15.000 TL" }
Bu donusumu yapan bir PHP fonksiyonu yaz.

Kisitlamalari belirtin. "PHP 8.3 kullan, external paket kullanma, max 50 satir olsun" gibi sinirlar koymak ciktinin kalitenizi arttirir.

Adim adim dusundurtun. Karmasik problemlerde "adim adim dusun" veya "once plani yaz, sonra kodu uret" demek daha iyi sonuc verir.

API Entegrasyonu: Claude ve OpenAI SDK

AI'yi kendi uygulamaniza entegre etmek istiyorsaniz, iki buyuk provider'in SDK'larini bilmeniz gerekir.

Anthropic (Claude) SDK ile basit bir ornek:

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY
});

const response = await client.messages.create({
  model: 'claude-sonnet-4-20250514',
  max_tokens: 1024,
  messages: [
    {
      role: 'user',
      content: 'Laravel middleware nedir, 3 cumleyle acikla.'
    }
  ]
});

console.log(response.content[0].text);

OpenAI SDK ile ayni islem:

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY
});

const response = await client.chat.completions.create({
  model: 'gpt-4o',
  messages: [
    {
      role: 'user',
      content: 'Laravel middleware nedir, 3 cumleyle acikla.'
    }
  ]
});

console.log(response.choices[0].message.content);

Her iki SDK de streaming destekler. Uzun cevaplarda kullaniciya parcali gosterim yapmak icin streaming kullanmak UX acisindan onemlidir.

Laravel projenizde AI entegrasyonu icin basit bir service yazabilirsiniz:

// app/Services/AIService.php
class AIService
{
    public function ask(string $prompt, string $systemPrompt = ''): string
    {
        $response = Http::withHeaders([
            'x-api-key' => config('services.anthropic.key'),
            'anthropic-version' => '2023-06-01',
        ])->post('https://api.anthropic.com/v1/messages', [
            'model' => 'claude-sonnet-4-20250514',
            'max_tokens' => 1024,
            'system' => $systemPrompt,
            'messages' => [
                ['role' => 'user', 'content' => $prompt]
            ],
        ]);

        return $response->json('content.0.text');
    }
}

AI'nin Iyi ve Kotu Oldugu Seyler

AI'nin gercekten iyi oldugu alanlar:

  • Boilerplate kod uretimi (CRUD, migration, seeder)
  • Kod aciklama ve dokumantasyon
  • Bug tespiti ve fix onerisi
  • Refactoring ve kod iyilestirme
  • Test yazimi
  • Regex ve karmasik sorgu uretimi
  • Farkli diller arasi ceviri (Python'dan PHP'ye gibi)

AI'nin zayif kaldigi alanlar:

  • Mimari kararlar (sizin domain bilginizi bilemez)
  • Performans optimizasyonu (gercek bottleneck'i olcmeden tahmin eder)
  • Guvenlik (SQL injection'i genelde yakalar ama edge case'leri kacirabilir)
  • Buyuk codebase'de tutarlilik (500 dosyalik bir projenin tamamini ayni anda goremez)
  • Guncel kutuphaneler (egitim verisi kesilme tarihinden sonrasini bilemez)

Hallucination Problemi

Hallucination, AI'nin gercek olmayan bilgiyi sanki dogru bir gercekmis gibi sunmasidir. Developer'lar icin en tehlikeli halucination turleri:

  • Var olmayan bir fonksiyon veya metod onermesi
  • Yanlis API endpoint'i vermesi
  • Deprecate edilmis syntax kullanmasi
  • Gercekte calismayan bir cozum sunmasi

Bunu yonetmek icin benim kurallarim:

Birincisi, AI'nin soyledigi her kutupane ismini, fonksiyon adini ve API endpoint'ini dogrulayin. composer require paket-adi veya npm install paket komutunu calistirmadan once paketin gercekten var oldugundan emin olun.

Ikincisi, kod calistirmadan once okuyun. AI'nin urrettigi kodu kopyala-yapistir yapmak yerine satir satir anlayin.

Ucuncusu, AI'ya "emin misin?" sorusunu sormak ise yaramaz. Model zaten urettigi her seye yuksek guven duyar. Bunun yerine kendiniz dogrulayin.

Claude Code ile Gunluk Calisma Rutinim

Gunluk calismamda AI'yi su sekilde kullaniyorum:

Sabah proje acarken once Claude Code ile "su modulu inceleyip bana ozet cikar" derim. Buyuk bir codebase'e dalma oncesi bu ozet cok yardimci olur.

Yeni bir ozellik gelistirirken once mimariyi kendim ciziyor, tasarim kararlarini kendim veriyorum. Sonra Claude Code'a "bu plana gore su dosyalari olustur" diyorum. Migration, model, controller, request validation gibi dosyalar dakikalar icinde hazir oluyor.

Bug fix yaparken hata mesajini ve ilgili kodu Claude Code'a gosteriyorum. Genellikle sorunu aninda buluyor ve fix oneriyor. Ancak her fix'i kendi ortamimda test ediyorum.

Refactoring icin muhtesem. "Su controller'i service pattern'ine cevir" veya "su fonksiyonu daha okunakli yaz" gibi talepler icin ideal.

Code review'da da faydali. Kendi kodumu yazdiktan sonra Claude Code'a "su kodu incele, potansiyel sorunlari belirt" diyorum. Bazen gozumden kacan seyler yakaliyor.

Sonuc

AI artik yazilim gelistirmenin ayrilmaz bir parcasi. Ama onu dogru konumlandirmak gerekiyor: AI bir arac, bir partner ama bir yonetici degil. Mimari kararlar sizin, tasarim tercihleri sizin, kalite kontrolu sizin. AI ise bu sureci hizlandiran, otomatiklestiren ve kolaylastiran bir yardimci.

En iyi yaklasim, AI'nin guclu oldugu alanlarda onu sonuna kadar kullanip zayif oldugu alanlarda kendi bilgi ve deneyiminize guvenmeniz. Bu dengeyi kurdugrunuzda uretkenliginiz gercekten katlaniyor.