Şuayb'in BloguŞuayb'in Blogu
Ana Sayfa
Kategoriler
Oyunlar
MediumHakkındaİletişim
Dil
Tema
    1. Blog
    2. Programlama
    3. Spring Boot AI Entegrasyonu

Spring Boot AI Entegrasyonu

İlk yayın23 Nisan 2025
Son güncelleme24 Nisan 2025
Okuma süresi3 dk okuma
JavaKotlinSpring BootSpring AIYapay Zeka
XLinkedInFacebook
Spring Boot AI Entegrasyonu

Beğeni yükleniyor...

Spring AI, AI mühendisliği için Spring’in taşınabilirlik ve modüler tasarım ilkelerini AI iş yüklerine uygulayan bir çerçevedir. Tanıdık Spring kalıpları ve POJO’ları kullanarak AI odaklı uygulamalar geliştirmenizi sağlar.


Son güncelleme24 Nisan 2025

Toplam görüntülenmeGörüntülenme yükleniyor...

Önceki makaleSpring Boot JPA AuditingSonraki makaleSpring Boot Sanal Thread’li Asenkron Görevler
Şuayb Şimşek

Yazan

Şuayb Şimşek

Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.

Uzmanlık

  • Spring Boot
  • Go
  • Mikroservis
  • Next.js
  • Cloud Native

Bağlantılar

GitHubLinkedInMedium

Benzer yazılar

Spring Boot Configuration Properties
Programlama

Spring Boot Configuration Properties

@ConfigurationProperties ile tip-güvenli yapılandırma tanımlamayı, @Validated ile ayarları doğrulamayı ve profile-specific application-{profile}.yml dosyalarıyla ortama göre değer yönetimini öğrenin.

4 Şubat 20263 dk okuma
JavaKotlinSpring BootYapılandırma
Spring Boot GraphQL JWE Kimlik Doğrulama
Programlama

Spring Boot GraphQL JWE Kimlik Doğrulama

Stateless şifreli JWT’ler (JWE) ile Spring Boot GraphQL API’lerinizi güvenli hale getirmeyi; kullanıcı kimliği ve rolleri JPA ile bir veritabanında saklamayı öğrenin.

17 Mayıs 20256 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEGraphQL
Spring Boot JPA ile JWE Kimlik Doğrulaması
Programlama

Spring Boot JPA ile JWE Kimlik Doğrulaması

Stateless şifreli JWT’ler (JWE) kullanarak Spring Boot API’lerinizi güvenli hale getirirken, kullanıcı kimliklerini ve rolleri JPA destekli bir veritabanında nasıl saklayacağınızı öğrenin.

11 Mayıs 20254 dk okuma
JavaKotlinSpring BootGüvenlikJWTJWEJPA

Hakkımda

Spring Boot, mikroservis, güvenlik ve daha fazlası hakkında yazılar.

İletişimYeni başladıysan

Son yazılar

  • Captain Tsubasa 2: World Fighters
  • Captain Tsubasa: Rise of New Champions
  • Spring Boot Configuration Properties
  • Spring Boot GraphQL JWE Kimlik Doğrulama
  • Spring Boot JPA ile JWE Kimlik Doğrulaması

Popüler konular

JavaKotlinSpring BootGüvenlikJWEJWT

Abone ol

Yeni yazılar yayınlandığında pratik backend ve fullstack notlarını al.

Sosyal

© 2024-2026 Şuayb'in Blogu. Tüm hakları saklıdır.

🌟 Neden Spring AI Kullanılmalı?

Bu bölümde Neden Spring AI Kullanılmalı? konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.

  • Sağlayıcıdan bağımsız taşınabilirlik: Kodunuzu bir kez yazın, AI sağlayıcıları (OpenAI, Anthropic, Azure vb.) arasında değiştirmeler yapmadan geçiş yapın.
  • POJO tabanlı tasarım: AI girdi ve çıktılarınızı düz Java/Kotlin nesneleri olarak modelleyerek tür güvenliği ve kolay entegrasyon sağlayın.
  • Yapılandırılmış çıktılar: Model yanıtlarını alan nesnelerinize otomatik olarak eşleyin.
  • Vektör veri deposu entegrasyonu: Chroma, Pinecone, Redis gibi önde gelen vektör veritabanları için birleşik API desteği.
  • Araç/fonksiyon çağrısı: LLM’lerin gerçek zamanlı veri için özel fonksiyonları veya servisleri çağırmasına izin verin.
  • Gözlemlenebilirlik ve değerlendirme: AI işlemlerini izlemeniz ve halüsinasyonları tespit etmeniz için yerleşik metrikler ve değerlendirme araçları.
  • Sohbet soyutlamaları: WebClient benzeri akıcı bir ChatClient API’si ile chat agentlar oluşturun.
  • Retrieval-augmented generation (RAG): Advisorler ve bellek API’leri ile belgelere dayalı QA ve geçmiş sohbete dayalı sohbeti basitleştirin.

📋 Gereksinimler

Aşağıdakilere sahip olduğunuzdan emin olun:

  • ☕ Java Development Kit (JDK) 17+
  • 📦 Maven veya Gradle kurulumu
  • 🐳 Spring Boot 3+
  • 🔑 OpenAI API Anahtarı (çevre değişkeni OPENAI_API_KEY olarak tanımlı)

🛠️ Adım 1: Bağımlılıkları Ekleyin

Spring AI OpenAI başlatıcısı, Spring Web ve Lombok’u projenize ekleyin.


🛠️ Adım 2: Yapılandırma

application.yml dosyanıza OpenAI anahtarınızı ve ChatClient model ayarlarını ekleyin:

YAMLapplication.yml
spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-4.1-mini

🛠️ Adım 3: Servis Katmanını Uygulama

ChatClient.Builder ile ChatClient’i oluşturup sarmalayan bir AIService sınıfı yazın.


🛠️ Adım 4: REST Controller Oluşturma

AIService’i HTTP üzerinden sunmak için bir ChatController sınıfı oluşturun.


▶️ Uygulamayı Çalıştırma

Spring Boot uygulamanızı başlatın:

BASH
./mvnw spring-boot:run
# veya
gradle bootRun

🧪 Entegrasyonu Test Etme

HTTP üzerinden servisinizi çağırın:

BASH
curl -X GET "http://localhost:8080/joke?topic=dogs"
# AI modelinin döndürdüğü köpek şakası

🏁 Sonuç

Artık Spring Boot AI Entegrasyonu için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.

XMLpom.xml
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-openai</artifactId>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
  </dependency>
</dependencies>
GROOVYbuild.gradle
plugins {
  id 'org.springframework.boot' version '3.2.0'
}

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  implementation 'org.springframework.ai:spring-ai-starter-model-openai'
  compileOnly 'org.projectlombok:lombok'
  annotationProcessor 'org.projectlombok:lombok'
}
JAVAAIService.java
package com.example.ai.service;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.stereotype.Service;

@Service
public class AIService {
    private final ChatClient chatClient;

    public AIService(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    public String getJoke(String topic) {
        return chatClient.prompt()
                .user(u -> u.text("Tell me a joke about {topic}").param("topic", topic))
                .call()
                .content();
    }
}
KOTLINAIService.kt
package com.example.ai.service

import org.springframework.ai.chat.client.ChatClient
import org.springframework.stereotype.Service

@Service
class AIService(builder: ChatClient.Builder) {
    private val chatClient: ChatClient = builder.build()

    fun getJoke(topic: String): String =
        chatClient.prompt()
            .user { it.text("Tell me a joke about {topic}").param("topic", topic) }
            .call()
            .content()
JAVAChatController.java
package com.example.ai.controller;

import com.example.ai.service.AIService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ChatController {

    private final AIService aiService;

    public ChatController(AIService aiService) {
        this.aiService = aiService;
    }

    @GetMapping("/joke")
    public String getJoke(@RequestParam(defaultValue = "dogs") String topic) {
        return aiService.getJoke(topic);
    }
}
KOTLINChatController.kt
package com.example.ai.controller

import com.example.ai.service.AIService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

@RestController
class ChatController(private val aiService: AIService) {

    @GetMapping("/joke")
    fun getJoke(@RequestParam(defaultValue = "dogs") topic: String): String =
        aiService.getJoke(topic)