Teknik Rehber + Kod Örnekleri

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.

📅 16 Şubat 2026⏱️ 13 dakika👁️ 18,923 görüntülenme

🚀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

# 1. OpenAI hesabı oluştur: platform.openai.com
# 2. API key al: Settings → API keys
# 3. Billing ayarla: $5 minimum
# Python kurulumu
pip install openai
# Node.js kurulumu
npm install openai

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ı: 45

3. 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

ÖzellikGPT-3.5 TurboGPT-4 Turbo
Context Window16K tokens (16,385)128K tokens (128,000) 🔥
Kalite & Doğrulukİyi (%85-90)Mükemmel (%92-98) 🎯
Türkçe DesteğiOrta (bazen hata)Çok İyi (doğal) 🇹🇷
Hız (latency)Hızlı (300-800ms)Orta (800-2000ms)
Maliyet (1M token)Input: $0.5, Output: $1.5Input: $10, Output: $30
Function Calling✓ Var✓ Gelişmiş
Kullanım SenaryosuBasit chatbot, sınıflandırmaKompleks 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::8A4B3C

3️⃣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.

Örnek: "Merhaba, nasılsın?"
Tokens: ["Mer", "haba", ",", " nas", "ıls", "ın", "?"] = 7 token

Güncel Fiyatlar (Şubat 2026)

ModelInput (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

10,000
Günlük Konuşma
500
Ortalama Token/Mesaj
8
Mesaj/Konuşma
Günlük token (10K × 8 × 500):40M token
GPT-4 Turbo maliyet (aylık):~$50,000
GPT-3.5 Turbo maliyet (aylık):~$2,400

🎯 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.

İlgili Makaleler