Ulaşım
- Adres:2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0542 315 45 37
0545 528 88 93 - eMail: info@alestaweb.com
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.
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.
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.
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.
| Ö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:
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.
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.
| 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:
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:
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
// Koog Agents - Java API desteği dahil
implementation 'ai.koog:koog-agents:0.7.3'
}
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.
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.
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:
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.
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"
}
}
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.
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.
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;
}
}
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.
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.
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.
// 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")
}
# 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.
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);
}
}
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.
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:
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.
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.
Ü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:
// 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")
}
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:
| 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 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.
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:
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.