|
# 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="<OPENROUTER_API_KEY>", |
|
) |
|
|
|
completion = client.chat.completions.create( |
|
extra_headers={ |
|
"HTTP-Referer": "<YOUR_SITE_URL>", # Optional |
|
"X-Title": "<YOUR_SITE_NAME>", # 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 <OPENROUTER_API_KEY>", |
|
"HTTP-Referer": "<YOUR_SITE_URL>", # Optional |
|
"X-Title": "<YOUR_SITE_NAME>", # 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. |
|
|