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.
🌟 Neden Spring AI Kullanılmalı?
- 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.
🌟 Ön Koşullar
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.
<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>
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' }
📋 Adım 2: Yapılandırma
application.yml
dosyanıza OpenAI anahtarınızı ve ChatClient model ayarlarını ekleyin:
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.
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(); } }
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()
📘 Adım 4: REST Controller Oluşturma
AIService
’i HTTP üzerinden sunmak için bir ChatController
sınıfı oluşturun.
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); } }
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)
▶️ Uygulamayı Çalıştırma
Spring Boot uygulamanızı başlatın:
./mvnw spring-boot:run # veya gradle bootRun
🧪 Entegrasyonu Test Etme
HTTP üzerinden servisinizi çağırın:
curl -X GET "http://localhost:8080/joke?topic=dogs" # AI modelinin döndürdüğü köpek şakası
Spring AI’nin ChatClient
API’si, güçlü LLM yeteneklerini tanıdık Spring paradigmasıyla harmanlayarak AI entegrasyonunu basit hale getirir.