Spring AI ile OpenAI Entegrasyonu

0 653

Spring AI, yapay zeka uygulamaları geliştirirken Spring ekosisteminin taşınabilirlik ve modüler tasarım ilkelerini AI alanına uygular. Java objeleri kullanarak AI uygulamaları geliştirmeye yardım eder.

Temel Özellikler ve Yetenekler

1. Taşınabilir API Desteği:

  • Model Türleri: Chat, text-to-image, embedding.
  • Senkron ve akış API seçenekleri.
  • Model sağlayıcıları: OpenAI, Microsoft, Amazon, Google, Hugging Face, Anthropic, AI21 Labs, Meta, Azure Open AI, PaLM2, Gemini, Groq, MistralAI, MiniMax, Moonshot AI, Ollama, QianFan, ZhiPu AI, Watsonx.AI.

2. Vector Store API:

  • Veritabanları: Azure AI Service, Apache Cassandra, Chroma, Elasticsearch, GemFire, Milvus, MongoDB Atlas, Neo4j, OpenSearch, Oracle, PGvector, Pinecone, Qdrant, Redis, SAP Hana, Typesense, Weaviate.
  • SQL-benzeri metadata filtreleme API’si.

3. Spring Boot Entegrasyonu:

  • AI modelleri ve vektör depoları için otomatik yapılandırma ve başlatıcılar.

4. ETL Çerçevesi:

  • Belge aktarımı ve veri mühendisliği için.
  • Çeşitli formatlarda belgeleri okuma (PDF, JSON vb.).
  • Veri manipülasyonu ve vektör veritabanında depolama.

Desteklenen Modeller ve Sağlayıcılar

Chat Modelleri:

  • Amazon Bedrock, Anthropic, Cohere’s Command, AI21 Labs’ Jurassic-2, Meta’s LLama, Amazon’s Titan, Anthropic Claud, Azure Open AI, Google Vertex AI, PaLM2, Gemini, Groq, HuggingFace, MistralAI, MiniMax, Moonshot AI, Ollama, OpenAI, QianFan, ZhiPu AI, Watsonx.AI.

Text-to-Image Modelleri:

  • OpenAI (DALL-E), StabilityAI.

Embedding Modelleri:

  • Azure OpenAI, Amazon Bedrock, Cohere, Titan, Mistral AI, MiniMax, Ollama, (ONNX) Transformers, OpenAI, PostgresML, QianFan, VertexAI, ZhiPu AI.

 

Prompt Yazarken Neye Dikkat Edilmeli

1. Açıklık ve Netlik

  • Belirsizlikten Kaçının: Ne istediğinizi net bir şekilde belirtin. Belirsiz ifadelerden kaçının.
  • Net Sorular: Sorularınızı açık ve doğrudan bir şekilde sorun.

2. Bağlam ve Detaylar

  • Bağlam Sağlayın: Sorunuzun veya isteğinizin bağlamını verin. Bu, daha iyi ve bağlamsal olarak doğru yanıtlar alınmasını sağlar.
  • Özellikler ve Kriterler: Yanıtın belirli bir şekilde formatlanması veya belirli kriterlere uyması gerekiyorsa, bunu açıkça belirtin.

3. Örnekler ve Beklentiler

  • Örnek Verin: Mümkünse, nasıl bir yanıt beklediğinize dair örnekler verin.
  • Beklentilerinizi Belirtin: Yanıtın uzunluğu, detayı veya belirli bir formatta olması gibi beklentilerinizi belirtin.

4. Konu ve Amacı Belirtin

  • Konu Başlığı: Konu hakkında bilgi verin, böylece model konuyla ilgili bilgilerini daha iyi kullanabilir.
  • Amaç: Yanıtın ne amaçla kullanılacağını belirtin. Örneğin, bir makale yazıyorsanız veya bir kod örneği istiyorsanız bunu belirtmek faydalı olur.

Örnekler

  1. Kod Örneği İsteği:
    • Kötü Prompt: “Bana Java kodu ver.”
    • İyi Prompt: “Bir Java programı yazmak istiyorum. Kullanıcıdan bir sayı alıp, bu sayının faktöriyelini hesaplayan bir fonksiyon yazabilir misin? Lütfen kodu açıklamalarıyla birlikte ver.”
  2. Makale Yazımı:
    • Kötü Prompt: “Bana bir makale yaz.”
    • İyi Prompt: “Yapay zeka ve sağlık alanındaki uygulamaları hakkında bir makale yazabilir misin? Özellikle yapay zekanın hastalık teşhisi ve tedavisindeki rolüne odaklan. Makale 1000 kelime civarında olsun ve güncel araştırma sonuçlarına yer versin.”
  3. Bilgi Talebi:
    • Kötü Prompt: “Vektör veritabanı nedir?”
    • İyi Prompt: “Vektör veritabanlarının ne olduğunu ve nasıl çalıştığını açıklar mısın? Özellikle makine öğrenimi ve yapay zeka uygulamalarındaki kullanımına değinir misin?”

Dikkat Edilmesi Gereken Diğer Noktalar

  • Nazik ve Saygılı Olmak: Her zaman nazik ve saygılı bir dil kullanmak.
  • Daha Fazla Bilgi Gerektiğinde: Eğer sorunuzun yanıtı daha fazla bilgi gerektiriyorsa, bu bilgileri isteyin veya mevcut bilgilerinizi paylaşın.
  • Tekrarlardan Kaçınmak: Aynı bilgiyi tekrarlamaktan kaçının, gereksiz detaylarla soruyu karıştırmayın.

 

 

Lets Code

Spring AI bir web uygulaması yazacağız. Bir sipariş oluşturup, sipariş geçmişine göre bize ürün önermesini isteyeceğim ve yine aldığım ürünlere göre benim nasıl bir yazılımcıya benzediğimi

gösteren bir resim yapmasını isteyeceğim.

pom.xml

Sadece OpenAI ile nasıl bağlantı kuracağımızdan bahsediyor olacağım. Bütün detayları yazının sonundaki github linkte bulabilirsiniz.

Öneri Servisi 

OpenAIChatModel objesini kullanmak için sadece yapmanız gereken OpenAI API Key oluşturmak. Aşağıdaki gibi bir tanım yapmanız yeterli.

Burada önemli olan doğru promt girebilmek. Bunun için yukarıdaki maddelere dikkate etmelisiniz.

Prompt hazırladıktan sonra tek yapmanız gereken call methodunu çağırmak. Karşılığında ise aşağıdaki gibi bir cevabı alıyor olacağız.

Response

 

Resim Servisi

Aşağıdaki yazılımcı size benziyor mu? 🙂

Bütün kodlara aşağıdaki linkten ulaşabilirsiniz.

https://github.com/cemdrman/spring-ai-demo

 

 

Faydalı olması dileğiyle.

Email adresiniz yayınlanmayacaktır.