JetBrains Koog Framework: Java ve Kotlin ile Enterprise AI Agent Geliştirme Rehberi (2026)

10.04.2026 20:19 Haber

JetBrains, yapay zeka dünyasına Koog framework'ü ile damgasını vurdu. Java ve Kotlin geliştiricileri artık kurumsal düzeyde (enterprise-grade), hata toleranslı (fault-tolerant) ve tahmin edilebilir (predictable) yapay zeka ajanları (AI agents) oluşturabiliyor. Bu kapsamlı Alesta Web rehberinde, Koog framework'ünün tüm detaylarını, kurulumdan Spring Boot entegrasyonuna, MCP (Model Context Protocol) kullanımından OpenTelemetry izlenebilirliğine (observability) kadar adım adım inceliyoruz.

1. Koog Framework Nedir? (What is Koog AI Agent Framework?)

Koog, JetBrains tarafından geliştirilen, JVM (Java Virtual Machine) tabanlı, açık kaynaklı (open-source) bir yapay zeka ajan (AI agent) framework'üdür. Alesta Web olarak bu framework'ü yakından takip ediyoruz çünkü JVM ekosistemine gerçek anlamda kurumsal düzeyde bir ajan çözümü getiriyor.

Koog, JetBrains'in kendi yapay zeka ürünlerindeki deneyimlerinden doğmuş ve karmaşık LLM (Large Language Model - Büyük Dil Modeli) problemleri için kanıtlanmış çözümler sunuyor. Framework, yalnızca backend (arka uç) servisleriyle sınırlı kalmıyor; Android, iOS, masaüstü JVM uygulamaları ve hatta tarayıcı (browser) ortamlarında bile çalışabiliyor.

Koog'un temel felsefesi üç kelimeyle özetlenebilir: tahmin edilebilirlik (predictability), hata toleransı (fault tolerance) ve kurumsal hazırlık (enterprise readiness). Python dünyasındaki LangChain veya CrewAI gibi framework'lerin aksine, Koog JVM'in güçlü tip sistemi (type system), eşzamanlılık (concurrency) modeli ve performans avantajlarından tam olarak yararlanıyor.

Lisans Bilgisi:

Koog, Apache 2.0 lisansı altında dağıtılmaktadır. Bu, framework'ü ticari projelerde de özgürce kullanabileceğiniz anlamına gelir. GitHub deposuna github.com/JetBrains/koog adresinden ulaşabilirsiniz.

Mart 2026 itibarıyla Koog, Kotlin'in yanı sıra tam kapsamlı bir Java API desteğine de kavuştu. Bu sayede milyonlarca Java geliştiricisi, mevcut kod tabanlarına yapay zeka ajan yeteneklerini kolayca entegre edebilir hale geldi. Alesta Web ekibi olarak bu gelişmeyi JVM ekosistemi için bir dönüm noktası olarak değerlendiriyoruz.

2. Neden Koog? Avantajları ve Rakipleri (Why Koog? Advantages)

Yapay zeka ajan framework'leri konusunda seçenekler giderek artıyor. Peki Koog'u diğerlerinden ayıran nedir? alestaweb.com olarak bu soruyu detaylı şekilde yanıtlayalım.

Koog vs Rakipler Karşılaştırması

Özellik Koog (JetBrains) LangChain4j Spring AI
Dil Desteği Kotlin + Java (idiomatic) Java Java
Ajan Stratejileri Functional, Graph, Planning Chain-based Function Calling
Multiplatform Backend, Android, iOS, Browser Backend Backend
Hata Toleransı Checkpoint & Resume Sınırlı Retry mekanizması
Observability OpenTelemetry, W&B, Langfuse Sınırlı Micrometer
MCP Desteği Yerleşik (built-in) Harici eklenti Harici eklenti

Koog'un en büyük avantajlarından biri, üç farklı iş akışı (workflow) stratejisi sunmasıdır:

  • Functional (İşlevsel): Kod tabanlı, basit ajan senaryoları için ideal
  • Graph-based (Graf Tabanlı): Karmaşık, çok adımlı iş akışları için; checkpoint (kontrol noktası) ve resume (devam etme) desteğiyle hata toleransı sağlar
  • Planning (Planlama): LLM'in kendi planını oluşturmasına izin veren, en otonom yaklaşım

Koog'un kalıcılık (persistence) özelliği de dikkat çekici. Ajan durumunu (agent state) her adımda diske, S3'e veya veritabanına kaydedebilir. Bir şey başarısız olursa, graf tabanlı ajan tam olarak kaldığı yerden devam eder; baştan başlamak zorunda kalmaz. Alesta Web olarak bu özelliğin üretim (production) ortamlarında kritik öneme sahip olduğunu düşünüyoruz.

3. Kurulum ve İlk Proje (Installation & Getting Started)

Koog ile çalışmaya başlamak oldukça kolaydır. Alesta Web ekibi olarak sizin için adım adım kurulum rehberini hazırladık.

Ön Gereksinimler

Bileşen Minimum Versiyon
JDK Java 17 veya üzeri
Kotlin (opsiyonel) 2.1.0 veya üzeri
Gradle 8.0 veya üzeri
IDE IntelliJ IDEA (önerilen)
API Key OpenAI, Anthropic veya desteklenen bir LLM sağlayıcı

İlk olarak projenizin build.gradle.kts dosyasına gerekli bağımlılıkları (dependencies) ekleyin:

build.gradle.kts - Kotlin Projesi

plugins {
    kotlin("jvm") version "2.1.0"
    kotlin("plugin.serialization") version "2.1.0"
}

repositories {
    mavenCentral()
}

dependencies {
    // Koog Agents - Ana framework bağımlılığı
    implementation("ai.koog:koog-agents:0.7.3")
}

Java projesi için de aynı bağımlılığı kullanabilirsiniz. Gradle (Groovy DSL) kullanan projeler için:

build.gradle - Java Projesi

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    // Koog Agents - Java API desteği dahil
    implementation 'ai.koog:koog-agents:0.7.3'
}
API Anahtarı Gerekli:

Koog ile çalışmak için desteklenen bir LLM sağlayıcısından (provider) API anahtarı (API key) edinmeniz gerekmektedir. Desteklenen sağlayıcılar: OpenAI, Anthropic, Google, DeepSeek ve Ollama (yerel - local). API anahtarınızı ortam değişkeni (environment variable) olarak ayarlamanız önerilir.

4. İlk AI Agent Oluşturma - Kotlin (Building Your First Agent)

Kotlin, Koog'un birinci sınıf (first-class) desteklediği dildir ve DSL (Domain Specific Language - Alan Özel Dili) tabanlı söz dizimi (syntax) sayesinde ajanları son derece temiz ve okunabilir bir şekilde tanımlayabilirsiniz. Alesta Web olarak Kotlin ile başlamanızı öneriyoruz.

Basit Kotlin Agent - OpenAI ile

import ai.koog.agents.core.agent.AIAgent
import ai.koog.agents.core.tools.annotations.Tool
import ai.koog.agents.core.tools.annotations.LLMDescription
import ai.koog.agents.ext.tool.ToolSet
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import ai.koog.prompt.executor.clients.openai.simpleOpenAIExecutor
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    // API anahtarını ortam değişkeninden al
    val apiKey = System.getenv("OPENAI_API_KEY")
        ?: error("OPENAI_API_KEY ortam değişkeni ayarlanmamış!")

    // Basit bir ajan oluştur
    val agent = AIAgent(
        promptExecutor = simpleOpenAIExecutor(apiKey),
        llmModel = OpenAIModels.Chat.GPT4o
    )

    // Ajanı çalıştır ve sonucu al
    val result = agent.run("Merhaba! Bana Kotlin programlama dili hakkında kısa bilgi ver.")
    println("Ajan Yanıtı: $result")
}

Anthropic modellerini kullanmak istiyorsanız, yalnızca executor (çalıştırıcı) ve model satırını değiştirmeniz yeterlidir:

Kotlin Agent - Anthropic Claude ile

import ai.koog.prompt.executor.clients.anthropic.AnthropicModels
import ai.koog.prompt.executor.clients.anthropic.simpleAnthropicExecutor
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    val apiKey = System.getenv("ANTHROPIC_API_KEY")
        ?: error("ANTHROPIC_API_KEY ortam değişkeni ayarlanmamış!")

    val agent = AIAgent(
        promptExecutor = simpleAnthropicExecutor(apiKey),
        llmModel = AnthropicModels.Sonnet_4
    )

    val result = agent.run("Türkiye'nin başkenti neresidir?")
    println("Claude Yanıtı: $result")
}

Yukarıdaki örnekler basit (simple) ajan kullanımını göstermektedir. Koog'un gerçek gücü, araçlar (tools) eklediğinizde ortaya çıkar. Ajanınıza araçlar tanımladığınızda, LLM hangi aracı ne zaman çağıracağına kendisi karar verir. Bu da ajanınızı gerçek dünya görevlerini yerine getirebilen akıllı bir asistana dönüştürür.

Tool Tanımlı Kotlin Agent

import ai.koog.agents.core.tools.annotations.Tool
import ai.koog.agents.core.tools.annotations.LLMDescription
import ai.koog.agents.ext.tool.ToolSet

// Araç seti (ToolSet) sınıfı tanımlayın
class HavaDurumuAraclari : ToolSet {

    @Tool
    @LLMDescription("Belirtilen şehir için güncel hava durumu bilgisini getirir")
    fun havaDurumuGetir(
        @LLMDescription("Hava durumu sorgulanacak şehir adı")
        sehir: String
    ): String {
        // Gerçek uygulamada bir API çağrısı yapılır
        return "$sehir için hava durumu: 22°C, Güneşli"
    }

    @Tool
    @LLMDescription("İki şehir arasındaki sıcaklık farkını hesaplar")
    fun sicaklikFarkiHesapla(
        @LLMDescription("Birinci şehir adı") sehir1: String,
        @LLMDescription("İkinci şehir adı") sehir2: String
    ): String {
        return "$sehir1 ve $sehir2 arasındaki sıcaklık farkı: 5°C"
    }
}
Neden ToolSet Arayüzü?

Koog, araç sınıflarınızın ToolSet arayüzünü (interface) uygulamasını bekler. @Tool anotasyonu (annotation) metodu bir araç olarak işaretlerken, @LLMDescription anotasyonu LLM'e bu aracın ne yaptığını açıklar. Bu açıklamalar ne kadar net olursa, LLM araçları o kadar doğru kullanır.

5. Java ile Koog Kullanımı (Koog with Java API)

Mart 2026'da Koog'a eklenen Java API desteği, framework'ü çok daha geniş bir geliştirici kitlesine açtı. Java API, idiomatic (dile özgü) ve akıcı (fluent) builder kalıpları (patterns), thread pool executor'lar ve yerel (native) Java soyutlamaları (abstractions) sunar. Alesta Web ekibi olarak bu gelişmeyi Java ekosistemi için bir devrim niteliğinde buluyoruz.

Java ile Tool Tanımlama

import ai.koog.agents.core.tools.annotations.Tool;
import ai.koog.agents.core.tools.annotations.LLMDescription;
import ai.koog.agents.ext.tool.ToolSet;

public class BankaAraclari implements ToolSet {

    @Tool
    @LLMDescription("Belirtilen alıcıya para gönderir")
    public Boolean paraGonder(
        @LLMDescription("Alıcının benzersiz kimliği")
        String aliciId,
        Integer tutar
    ) {
        System.out.println(tutar + " TL " + aliciId + " kişisine gönderildi.");
        return true;
    }

    @Tool
    @LLMDescription("Hesap bakiyesini TL cinsinden döndürür")
    public Integer hesapBakiyesiGetir(String kullaniciId) {
        // Gerçek uygulamada veritabanı sorgusu yapılır
        return 15000;
    }
}

Java ile Agent Oluşturma (Builder Pattern)

import ai.koog.agents.core.agent.AIAgent;
import ai.koog.agents.core.tools.ToolRegistry;
import ai.koog.prompt.executor.MultiLLMPromptExecutor;
import ai.koog.prompt.executor.clients.openai.OpenAILLMClient;
import ai.koog.prompt.executor.clients.openai.OpenAIModels;

public class BankaAjanUygulamasi {

    public static void main(String[] args) {
        // LLM istemcisini (client) oluştur
        String apiKey = System.getenv("OPENAI_API_KEY");
        var promptExecutor = new MultiLLMPromptExecutor(
            new OpenAILLMClient(apiKey)
        );

        // Araç kayıt defterini (tool registry) oluştur
        var toolRegistry = ToolRegistry.builder()
            .tools(new BankaAraclari())
            .build();

        // Ajanı (agent) oluştur
        var bankaAjani = AIAgent.builder()
            .promptExecutor(promptExecutor)
            .llmModel(OpenAIModels.Chat.GPT4o)
            .systemPrompt("Sen bir banka asistanısın. Kullanıcıların hesap " +
                "işlemlerinde yardımcı olursun.")
            .toolRegistry(toolRegistry)
            .build();

        // Ajanı çalıştır
        String sonuc = bankaAjani.run(
            "Yeterli bakiyem varsa ali_123 kullanıcısına 500 TL gönder"
        );
        System.out.println("Ajan Sonucu: " + sonuc);
    }
}

Java API'nin en güzel yanlarından biri, builder pattern (inşaatçı kalıbı) kullanmasıdır. Bu sayede Java geliştiricileri zaten aşina oldukları bir kalıpla ajan oluşturabilirler. AIAgent.builder() çağrısıyla başlayan zincir, tüm ajan yapılandırmasını (configuration) akıcı bir şekilde tanımlamanıza olanak tanır.

Çoklu LLM Sağlayıcı Desteği:

MultiLLMPromptExecutor kullanarak birden fazla LLM sağlayıcısını aynı anda yapılandırabilirsiniz. Örneğin, hem OpenAI hem de Anthropic istemcilerini ekleyerek farklı modeller arasında geçiş yapabilirsiniz.

6. Spring Boot Entegrasyonu (Spring Boot Integration)

Kurumsal Java uygulamalarının büyük çoğunluğu Spring Boot üzerine inşa edilmiştir. JetBrains bu gerçeğin farkında olarak Koog için resmi bir Spring Boot Starter (başlatıcı) yayınladı. alestaweb.com olarak Spring Boot entegrasyonunun Koog'un kurumsal benimsenmesini (enterprise adoption) büyük ölçüde hızlandıracağını öngörüyoruz.

Spring Boot Starter Bağımlılığı

// build.gradle.kts
dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("ai.koog:koog-spring-boot-starter:0.7.3")

    // Kotlin kullanıyorsanız coroutine desteği için:
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.10.1")
}

application.properties Yapılandırması

# OpenAI Yapılandırması
ai.koog.openai.enabled=true
ai.koog.openai.api-key=${OPENAI_API_KEY}

# Anthropic Yapılandırması (opsiyonel)
ai.koog.anthropic.enabled=true
ai.koog.anthropic.api-key=${ANTHROPIC_API_KEY}

# Google Gemini Yapılandırması (opsiyonel)
ai.koog.google.enabled=false

Spring Boot Starter sayesinde, LLM executor'lar otomatik olarak yapılandırılır ve Spring'in bağımlılık enjeksiyonu (dependency injection) mekanizmasıyla doğrudan kullanılabilir hale gelir.

Spring Boot Controller ile Koog Agent

import ai.koog.agents.core.agent.AIAgent;
import ai.koog.agents.core.tools.ToolRegistry;
import ai.koog.prompt.executor.PromptExecutor;
import ai.koog.prompt.executor.clients.openai.OpenAIModels;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/agent")
public class AjanController {

    private final PromptExecutor openaiExecutor;

    // Spring, yapılandırılmış executor'ı otomatik enjekte eder
    public AjanController(
        @Qualifier("openaiExecutor") PromptExecutor openaiExecutor
    ) {
        this.openaiExecutor = openaiExecutor;
    }

    @PostMapping("/chat")
    public String chat(@RequestBody String mesaj) {
        var agent = AIAgent.builder()
            .promptExecutor(openaiExecutor)
            .llmModel(OpenAIModels.Chat.GPT4o)
            .systemPrompt("Sen yardımcı bir asistansın.")
            .toolRegistry(
                ToolRegistry.builder()
                    .tools(new BankaAraclari())
                    .build()
            )
            .build();

        return agent.run(mesaj);
    }
}
Spring AI ile Köprü:

Koog ayrıca Spring AI entegrasyonu da sunmaktadır. koog-spring-ai-starter bağımlılığı, Spring AI'ın model soyutlamalarını (model abstractions) Koog ajan framework'üyle köprüler. Bu sayede mevcut Spring AI yapılandırmanızı değiştirmeden Koog'un ajan orkestrasyon (orchestration) yeteneklerini kullanabilirsiniz.

7. Tool ve MCP Kullanımı (Tools & Model Context Protocol)

Koog'un en güçlü yönlerinden biri, MCP (Model Context Protocol) desteğinin yerleşik (built-in) olmasıdır. MCP, yapay zeka ajanlarının dış dünyayla etkileşimini standartlaştıran bir protokoldür. Alesta Web olarak MCP'nin yapay zeka ekosisteminin geleceğini şekillendiren en önemli standartlardan biri olduğunu düşünüyoruz.

Koog'un MCP entegrasyonu şu yetenekleri sağlar:

  • MCP sunucularına bağlanma: stdio (standart giriş/çıkış) ve SSE (Server-Sent Events) taşıma mekanizmalarıyla
  • Araç keşfi: MCP sunucusundan kullanılabilir araçları otomatik olarak alma
  • Araç dönüştürme: MCP araçlarını Koog araç arayüzüne (tool interface) dönüştürme
  • Araç kayıt: Dönüştürülmüş araçları ajan araç kayıt defterine (tool registry) ekleme
  • Araç çağırma: LLM'in sağladığı argümanlarla MCP araçlarını çağırma

MCP Sunucusu ile Koog Agent

import ai.koog.agents.core.agent.AIAgent
import ai.koog.agents.mcp.MCPToolProvider
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import ai.koog.prompt.executor.clients.openai.simpleOpenAIExecutor

suspend fun main() {
    val apiKey = System.getenv("OPENAI_API_KEY")
        ?: error("API key bulunamadı!")

    // MCP sunucusundan araçları al
    val mcpTools = MCPToolProvider.fromStdio(
        command = "npx",
        args = listOf("-y", "@modelcontextprotocol/server-filesystem", "/tmp")
    )

    val agent = AIAgent(
        promptExecutor = simpleOpenAIExecutor(apiKey),
        llmModel = OpenAIModels.Chat.GPT4o,
        tools = mcpTools.getTools()
    )

    val result = agent.run("Dosya sistemindeki dosyaları listele")
    println(result)
}

MCP desteği sayesinde Koog ajanlarınız, veritabanları, dosya sistemleri, API'ler ve daha pek çok dış kaynakla etkileşime geçebilir. Üstelik bu etkileşim standart bir protokol üzerinden gerçekleştiği için, farklı MCP sunucuları arasında kolayca geçiş yapabilirsiniz.

Koog x ACP: IDE Entegrasyonu

JetBrains, Koog x ACP (Agent Communication Protocol) projesiyle ajanları doğrudan IDE'ye (IntelliJ IDEA, WebStorm vb.) bağlamayı mümkün kılmıştır. Bu, geliştiricilerin IDE içinden yapay zeka ajanlarıyla etkileşime geçmelerini sağlayan çığır açıcı bir özelliktir. Daha fazla bilgi için JetBrains blog yazısına göz atabilirsiniz.

8. Observability ve Monitoring (OpenTelemetry Integration)

Üretim (production) ortamında çalışan yapay zeka ajanlarını izlemek (monitor) kritik öneme sahiptir. Koog, OpenTelemetry entegrasyonuyla bu ihtiyacı doğrudan karşılar. alestaweb.com olarak observability konusunun genellikle ihmal edildiğini gözlemliyoruz; ancak Koog bu konuyu birinci sınıf bir vatandaş (first-class citizen) olarak ele alıyor.

Koog'un OpenTelemetry entegrasyonu, ajan kodunuzu kirletmeden (without polluting) otomatik olarak şu olaylar için span'ler (izleme birimleri) oluşturur:

  • Ajan yürütme: Ajanın baştan sona çalışma süreci
  • LLM çağrıları: Her bir dil modeli isteği (request) ve yanıtı (response)
  • Araç çağrıları: Hangi aracın ne zaman, hangi parametrelerle çağrıldığı
  • Fonksiyon çağrıları: İç fonksiyon yürütme süreleri

OpenTelemetry Bağımlılığı Ekleme

// build.gradle.kts
dependencies {
    implementation("ai.koog:koog-agents:0.7.3")

    // OpenTelemetry desteği
    implementation("ai.koog:koog-agents-otel:0.7.3")

    // OpenTelemetry SDK
    implementation("io.opentelemetry:opentelemetry-sdk:1.45.0")
    implementation("io.opentelemetry:opentelemetry-exporter-otlp:1.45.0")
}

OpenTelemetry Yapılandırması

import ai.koog.agents.otel.KoogOpenTelemetry
import io.opentelemetry.sdk.OpenTelemetrySdk
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter

// OTLP exporter yapılandır (Jaeger, Grafana Tempo vb.)
val spanExporter = OtlpGrpcSpanExporter.builder()
    .setEndpoint("http://localhost:4317")
    .build()

// Koog OpenTelemetry entegrasyonunu etkinleştir
KoogOpenTelemetry.configure(spanExporter)

Koog, OpenTelemetry'nin yanı sıra iki popüler gözlemlenebilirlik (observability) platformuyla da doğrudan entegrasyon sunar:

Desteklenen Observability Platformları

Platform Özellik Kullanım Alanı
OpenTelemetry Otomatik span oluşturma, OTLP export Jaeger, Grafana Tempo, Datadog
W&B Weave Deney takibi, model değerlendirme ML ekipleri için
Langfuse LLM izleme, maliyet analizi LLM maliyet optimizasyonu
Üretim Ortamı İpucu:

Üretim ortamlarında mutlaka observability kurulumu yapın. Alesta Web olarak önerimiz, başlangıç için Langfuse kullanmanızdır çünkü ücretsiz self-hosted (kendi sunucunuzda barındırma) seçeneği sunar ve LLM çağrılarınızın maliyetini kolayca izlemenize olanak tanır.

Sonuç

JetBrains Koog, JVM ekosisteminde yapay zeka ajan geliştirme konusunda yeni bir standart belirliyor. Kotlin'in zarif DSL'i ve Java'nın sağlam builder API'si ile her iki dil topluluğuna da birinci sınıf bir geliştirme deneyimi sunuyor.

Alesta Web olarak Koog'u özellikle şu senaryolarda şiddetle öneriyoruz:

  • Mevcut Java/Kotlin backend'lerine yapay zeka ajanı entegre etmek isteyenler
  • Spring Boot tabanlı kurumsal uygulamalarda ajan iş akışları oluşturmak isteyenler
  • Hata toleranslı, checkpoint destekli ajan mimarileri tasarlamak isteyenler
  • OpenTelemetry tabanlı izlenebilirlik altyapısına ihtiyaç duyanlar
  • MCP protokolüyle standart araç entegrasyonu yapmak isteyenler

Koog'un açık kaynak olması ve Apache 2.0 lisansıyla dağıtılması, framework'ü hem bireysel geliştiriciler hem de kurumsal ekipler için erişilebilir kılıyor. JetBrains'in yapay zeka ürünlerindeki derin deneyimi, Koog'un üretim ortamında kanıtlanmış çözümler sunmasını garanti ediyor.

Faydalı Linkler:

© 2026 Alesta Web - Tüm hakları saklıdır.

WM Tools
💫

WebMaster Tools

15 Profesyonel Araç
Alesta AI
Alesta AI
Online