# LLM Sağlayıcıları API Gereksinimleri Analizi Bu doküman, Cursor Rules oluşturucu için gerekli olan LLM (Large Language Model) sağlayıcılarının API gereksinimlerini analiz etmektedir. ## 1. Gemini API ### Temel Özellikler - Google tarafından sağlanan AI modelleri - Metin, görüntü, video ve doküman anlama yetenekleri - Uzun bağlam desteği (milyonlarca token) - Yapılandırılmış çıktı (JSON) desteği - Fonksiyon çağırma desteği ### API Entegrasyon Gereksinimleri - Python için `google-genai` kütüphanesi kullanımı - API anahtarı gerektiriyor - İstek formatı: ```python from google import genai client = genai.Client(api_key="YOUR_API_KEY") response = client.models.generate_content( model="gemini-2.0-flash", contents="Explain how AI works", ) ``` ### Desteklenen Modeller - Gemini 2.5 Pro: Karmaşık düşünme yetenekleri için - Gemini 2.0 Flash: Çok modlu yetenekler ve gelişmiş özellikler - Gemini 2.0 Flash-Lite: Hızlı ve maliyet-etkin çok modlu model ## 2. OpenRouter API ### Temel Özellikler - Yüzlerce AI modelini tek bir endpoint üzerinden erişim sağlar - Otomatik yedekleme (fallback) mekanizması - Maliyet-etkin model seçimi - OpenAI SDK uyumluluğu - Çeşitli üçüncü taraf SDK'ları ile entegrasyon ### API Entegrasyon Gereksinimleri - OpenAI SDK kullanarak entegrasyon: ```python from openai import OpenAI client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key="", ) completion = client.chat.completions.create( extra_headers={ "HTTP-Referer": "", # Optional "X-Title": "", # Optional }, model="openai/gpt-4o", messages=[ {"role": "user", "content": "What is the meaning of life?"} ] ) ``` - Doğrudan API kullanımı: ```python import requests import json response = requests.post( url="https://openrouter.ai/api/v1/chat/completions", headers={ "Authorization": "Bearer ", "HTTP-Referer": "", # Optional "X-Title": "", # Optional }, data=json.dumps({ "model": "openai/gpt-4o", # Optional "messages": [ {"role": "user", "content": "What is the meaning of life?"} ] }) ) ``` ### Özel Özellikler - Model yönlendirme - Sağlayıcı yönlendirme - Prompt önbelleğe alma - Yapılandırılmış çıktılar - Araç çağırma (Tool calling) - Mesaj dönüşümleri ## 3. OpenAI API ### Temel Özellikler - GPT modelleri ve diğer AI modellerine erişim - Metin oluşturma, doğal dil işleme, bilgisayar görüşü - Senkron ve asenkron istemci desteği - Streaming yanıtlar (SSE) - Gerçek zamanlı API (WebSocket bağlantısı üzerinden) ### API Entegrasyon Gereksinimleri - Python için `openai` kütüphanesi - API anahtarı gerektiriyor - Responses API (yeni standart): ```python import os from openai import OpenAI client = OpenAI( api_key=os.environ.get("OPENAI_API_KEY"), ) response = client.responses.create( model="gpt-4o", instructions="You are a coding assistant that talks like a pirate.", input="How do I check if a Python object is an instance of a class?", ) ``` - Chat Completions API (eski standart): ```python from openai import OpenAI client = OpenAI() completion = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "developer", "content": "Talk like a pirate."}, { "role": "user", "content": "How do I check if a Python object is an instance of a class?", }, ], ) ``` ### Asenkron Kullanım - `AsyncOpenAI` sınıfı ile asenkron istemci desteği - `await` ile API çağrıları ## Ortak Noktalar ve Entegrasyon Stratejisi ### Ortak Özellikler 1. Tüm API'ler metin tabanlı sohbet/tamamlama yetenekleri sunuyor 2. Hepsi API anahtarı gerektiriyor 3. Hepsi Python kütüphaneleri sağlıyor 4. Yapılandırılmış çıktı desteği (JSON) ### Farklılıklar 1. İstek formatları ve parametreler farklılık gösteriyor 2. Model isimlendirme konvansiyonları farklı 3. Özel yetenekler ve özellikler her API'de değişiyor ### Entegrasyon Stratejisi 1. **Adaptör Deseni**: Her LLM sağlayıcısı için ayrı adaptör sınıfları oluşturma 2. **Ortak Arayüz**: Tüm adaptörlerin uyguladığı ortak bir arayüz tanımlama 3. **Fabrika Deseni**: Kullanıcı seçimine göre doğru adaptörü oluşturan bir fabrika sınıfı 4. **Konfigürasyon Yönetimi**: API anahtarları ve diğer ayarlar için merkezi konfigürasyon Bu strateji, yeni LLM sağlayıcılarının kolayca eklenebilmesini ve mevcut kodun minimum değişiklikle çalışmaya devam etmesini sağlayacaktır.