ChatGPT Entegrasyonu: OpenAI API ile Özel Chatbot Geliştirme
OpenAI API v2 ile GPT-4 Turbo entegrasyonu, function calling, streaming responses, fine-tuning ve production deployment için kapsamlı teknik rehber ve kod örnekleri.
🚀OpenAI API v2: Başlangıç
OpenAI API, GPT-4 Turbo, GPT-3.5 Turbo ve DALL-E gibi modellere programatik erişim sağlar. Chatbot, content generation, code completion gibi uygulamalar geliştirebilirsiniz.
1. API Key Alma ve Kurulum
2. İlk ChatGPT İsteği (Python)
from openai import OpenAI
client = OpenAI(api_key="sk-...")
response = client.chat.completions.create(
model="gpt-4-turbo-preview",
messages=[
{"role": "system", "content": "Sen yardımsever bir asistansın."},
{"role": "user", "content": "Türkiye'nin başkenti neresi?"}
],
max_tokens=150,
temperature=0.7
)
print(response.choices[0].message.content)
# Output: "Türkiye'nin başkenti Ankara'dır."
print(f"Token kullanımı: {response.usage.total_tokens}")
# Output: Token kullanımı: 453. Node.js/TypeScript Örneği
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
async function chat(userMessage: string) {
const completion = await openai.chat.completions.create({
model: "gpt-4-turbo-preview",
messages: [
{ role: "system", content: "Sen e-ticaret asistanısın." },
{ role: "user", content: userMessage }
],
max_tokens: 200,
temperature: 0.8
});
return completion.choices[0].message.content;
}
// Kullanım
const answer = await chat("En popüler ürünleriniz neler?");
console.log(answer);⚡GPT-4 Turbo vs GPT-3.5: Karşılaştırma
| Özellik | GPT-3.5 Turbo | GPT-4 Turbo |
|---|---|---|
| Context Window | 16K tokens (16,385) | 128K tokens (128,000) 🔥 |
| Kalite & Doğruluk | İyi (%85-90) | Mükemmel (%92-98) 🎯 |
| Türkçe Desteği | Orta (bazen hata) | Çok İyi (doğal) 🇹🇷 |
| Hız (latency) | Hızlı (300-800ms) | Orta (800-2000ms) |
| Maliyet (1M token) | Input: $0.5, Output: $1.5 | Input: $10, Output: $30 |
| Function Calling | ✓ Var | ✓ Gelişmiş |
| Kullanım Senaryosu | Basit chatbot, sınıflandırma | Kompleks reasoning, uzun belgeler |
💡 Model Seçim Rehberi
- • GPT-3.5 Turbo: FAQ chatbot, basit sorular, yüksek trafikli uygulamalar (maliyet optimizasyonu)
- • GPT-4 Turbo: Müşteri hizmetleri, teknik destek, uzun döküman analizi, karmaşık reasoning
- • Hybrid: İlk filtreleme GPT-3.5, kompleks sorular GPT-4'e yönlendir (cost-effective)
🔧Function Calling: External Tools Entegrasyonu
Function calling ile GPT modeli, external API'lere, database'e veya custom fonksiyonlara erişebilir. Örnek: Hava durumu API'si, veritabanı sorgusu, ödeme işlemi.
Örnek: E-Ticaret Ürün Arama Chatbot
import openai
import json
# 1. Fonksiyon tanımla (ürün arama)
def search_products(query: str, category: str = None):
# Gerçekte database sorgusu yapılır
return [
{"id": 1, "name": "iPhone 15 Pro", "price": 45000},
{"id": 2, "name": "Samsung Galaxy S24", "price": 38000}
]
# 2. GPT'ye fonksiyon bildir
functions = [
{
"name": "search_products",
"description": "Ürün kataloğunda arama yapar",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Arama terimi (örn: 'iphone')"
},
"category": {
"type": "string",
"enum": ["elektronik", "giyim", "ev"],
"description": "Ürün kategorisi (opsiyonel)"
}
},
"required": ["query"]
}
}
]
# 3. Kullanıcı sorusu
user_message = "45 bin TL altında telefon önerir misin?"
response = openai.chat.completions.create(
model="gpt-4-turbo-preview",
messages=[{"role": "user", "content": user_message}],
functions=functions,
function_call="auto"
)
# 4. GPT fonksiyon çağrısı yaptı mı kontrol et
message = response.choices[0].message
if message.function_call:
function_name = message.function_call.name
arguments = json.loads(message.function_call.arguments)
# 5. Fonksiyonu çalıştır
if function_name == "search_products":
products = search_products(**arguments)
# 6. Sonucu GPT'ye gönder
second_response = openai.chat.completions.create(
model="gpt-4-turbo-preview",
messages=[
{"role": "user", "content": user_message},
message,
{
"role": "function",
"name": function_name,
"content": json.dumps(products)
}
]
)
print(second_response.choices[0].message.content)
# Output: "45 bin TL altında şu telefonları önerebilirim: ..."
🎯 Function Calling Kullanım Alanları
- • Veritabanı sorguları (ürün, kullanıcı)
- • API çağrıları (hava durumu, döviz)
- • E-posta gönderme
- • Randevu oluşturma
- • Ödeme işlemi
- • Dosya işlemleri (read/write)
- • CRM entegrasyonu
- • Analitik sorgular
🌊Streaming Responses (Real-Time)
Streaming ile GPT'nin cevabı kelime kelime (token by token) alınır. Kullanıcı deneyimi için önemli (ChatGPT benzeri typing effect).
# Python Streaming Örneği
from openai import OpenAI
client = OpenAI()
stream = client.chat.completions.create(
model="gpt-4-turbo-preview",
messages=[{"role": "user", "content": "Python ile web scraping nasıl yapılır?"}],
stream=True # ← Streaming aktif
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
# Output (real-time): Python ile web scraping... BeautifulSoup... requests...Next.js API Route ile Streaming
// app/api/chat/route.ts (Next.js 14 App Router)
import OpenAI from 'openai';
import { OpenAIStream, StreamingTextResponse } from 'ai';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
export async function POST(req: Request) {
const { messages } = await req.json();
const response = await openai.chat.completions.create({
model: 'gpt-4-turbo-preview',
stream: true,
messages,
});
// Stream'i browser'a gönder
const stream = OpenAIStream(response);
return new StreamingTextResponse(stream);
}
// Frontend kullanımı (React)
import { useChat } from 'ai/react';
function ChatComponent() {
const { messages, input, handleInputChange, handleSubmit } = useChat();
return (
<div>
{messages.map(m => (
<div key={m.id}>
<strong>{m.role}:</strong> {m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input value={input} onChange={handleInputChange} />
<button type="submit">Send</button>
</form>
</div>
);
}🎓Fine-Tuning: Özel Model Eğitimi
Fine-tuning ile GPT modelini kendi veri setinizle eğitebilirsiniz. Şirket terminolojisi, özel domain knowledge için ideal.
Fine-Tuning Adımları
1️⃣Veri Hazırlama (JSONL formatı)
{"messages": [{"role": "system", "content": "Sen XYZ Şirketi müşteri hizmetleri asistanısın."}, {"role": "user", "content": "Ürün iadesi nasıl yapılır?"}, {"role": "assistant", "content": "İade için şu adımları izleyin: 1) Hesabınıza giriş yapın..."}]}
{"messages": [{"role": "system", "content": "Sen XYZ Şirketi müşteri hizmetleri asistanısın."}, {"role": "user", "content": "Kargo ücreti ne kadar?"}, {"role": "assistant", "content": "150 TL üzeri siparişlerde kargo ücretsizdir..."}]}Minimum 10 örnek, ideal 50-100 örnek. Kaliteli veri > Çok veri
2️⃣Dosya Yükleme ve Eğitim
from openai import OpenAI
client = OpenAI()
# 1. Dosya yükle
file = client.files.create(
file=open("training_data.jsonl", "rb"),
purpose="fine-tune"
)
# 2. Fine-tuning başlat
job = client.fine_tuning.jobs.create(
training_file=file.id,
model="gpt-3.5-turbo"
)
print(f"Fine-tuning job ID: {job.id}")
# 3. Durumu kontrol et
status = client.fine_tuning.jobs.retrieve(job.id)
print(f"Status: {status.status}") # pending, running, succeeded
# 4. Tamamlandığında model ID'sini al
fine_tuned_model = status.fine_tuned_model
# Output: ft:gpt-3.5-turbo:company-name::8A4B3C3️⃣Fine-Tuned Model Kullanımı
# Normal kullanım gibi, sadece model ID'si farklı
response = client.chat.completions.create(
model="ft:gpt-3.5-turbo:company-name::8A4B3C", # ← Fine-tuned model
messages=[
{"role": "user", "content": "İade süreci ne kadar sürer?"}
]
)
print(response.choices[0].message.content)
# Output: "İade sürecimiz, ürün tarafımıza ulaştıktan sonra 3-5 iş günü içinde tamamlanır..."✓Fine-Tuning Avantajları
- • Şirket terminolojisi kullanımı
- • Daha kısa prompt'lar (token tasarrufu)
- • Tutarlı yanıtlar
- • Domain expertise
✗Dezavantajlar
- • Maliyet ($0.008/1K token training)
- • Veri hazırlama zamanı
- • Model güncelleme gereksinimi
- • Overfitting riski
💰Maliyet Analizi ve Optimizasyon
Token Hesaplama ve Fiyatlandırma
Token Nedir?
GPT modelleri metni token'lara böler. İngilizce: 1 kelime ≈ 1.3 token, Türkçe: 1 kelime ≈ 2-3 token.
Güncel Fiyatlar (Şubat 2026)
| Model | Input (1M token) | Output (1M token) |
|---|---|---|
| GPT-4 Turbo | $10.00 | $30.00 |
| GPT-3.5 Turbo | $0.50 | $1.50 |
| Fine-Tuned GPT-3.5 | $3.00 | $6.00 |
Örnek Senaryo: Müşteri Hizmetleri Chatbot
🎯 Maliyet Optimizasyon Stratejileri
- • Caching: Aynı sorulara cache'ten yanıt (Redis), %60-70 tasarruf
- • Hybrid model: FAQ için GPT-3.5, karmaşık sorular için GPT-4
- • Prompt compression: Gereksiz kelimeleri çıkar, token sayısını azalt
- • Max tokens limiti: Yanıt uzunluğunu sınırla (max_tokens=200)
- • Embedding search: İlgili dokümanlara odaklan, tüm bilgi gönderme
ChatGPT Entegrasyonunuzu Profesyonel Şekilde Kuralım
GPT-4 Turbo, function calling, streaming ve fine-tuning ile özel chatbot çözümlerinizi hızla hayata geçirelim. Ücretsiz POC (proof of concept) için iletişime geçin.