<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Tobias Hoffmann</title>
    <description>The latest articles on Forem by Tobias Hoffmann (@tobiass_hoffmann).</description>
    <link>https://forem.com/tobiass_hoffmann</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3821706%2Ff492b371-6da6-45b8-a3b5-dc8326f72f8c.png</url>
      <title>Forem: Tobias Hoffmann</title>
      <link>https://forem.com/tobiass_hoffmann</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tobiass_hoffmann"/>
    <language>en</language>
    <item>
      <title>Ghostty GitHub'dan Ayrılıyor: Geliştirici Araçları Üreticileri İçin Ne Anlama Geliyor?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Thu, 30 Apr 2026 04:05:52 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/ghostty-githubdan-ayriliyor-gelistirici-araclari-ureticileri-icin-ne-anlama-geliyor-2jc3</link>
      <guid>https://forem.com/tobiass_hoffmann/ghostty-githubdan-ayriliyor-gelistirici-araclari-ureticileri-icin-ne-anlama-geliyor-2jc3</guid>
      <description>&lt;p&gt;28 Nisan 2026'da Mitchell Hashimoto, açık kaynaklı terminal emülatörü Ghostty'nin GitHub'dan ayrılacağını duyurdu. Hashimoto GitHub kullanıcısı 1299; Şubat 2008'den beri platformu neredeyse her gün kullandı. Ancak karar gününde bu geçmiş artık belirleyici değildi: kişisel günlüğünde zaten “neredeyse her gün bir X var” şeklinde kesintileri takip ediyordu ve aynı gün yaşanan GitHub Actions hatası PR incelemelerini iki saat boyunca engelledi. Kararı netti: “Her gün sizi saatlerce bloke ediyorsa, burası artık ciddi işler yapmak için bir yer değil.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Geliştirici araçları geliştiriyorsanız bu duyuru yalnızca “bir proje GitHub’dan ayrılıyor” haberi değildir. Hashimoto, HashiCorp’u GitHub üzerinde kurdu; Terraform, Vagrant, Vault, Consul ve Boundary gibi araçları bu ekosistem üzerinden yayınladı. Bu profildeki bir kullanıcının dünyanın en baskın geliştirici platformundan güvenilirlik nedeniyle ayrılması, araç geliştiricileri için doğrudan bir uyarıdır: kritik yolda yer alıyorsanız, güvenilirlik özelliklerden önce gelir.&lt;/p&gt;

&lt;p&gt;Yapay zeka dönemi geliştirici araçlarının GitHub odaklı iş akışlarını nasıl değiştirdiğine dair arka plan için &lt;a href="http://apidog.com/blog/how-to-write-agents-md-files?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AGENTS.md dosyaları nasıl yazılır&lt;/a&gt; ve &lt;a href="http://apidog.com/blog/github-copilot-usage-billing-api-teams?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;ekipler için GitHub Copilot kullanımı ve faturalandırma API'si&lt;/a&gt; yazılarına bakabilirsiniz. GitHub güvenilirlik boşlukları etrafında otomasyon geliştiren bir ekibin bakış açısı için &lt;a href="http://apidog.com/blog/clawsweeper-openclaw-github-triage-bot?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Clawsweeper triage botu yazısı&lt;/a&gt; da iyi bir örnektir.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mitchell Hashimoto, 28 Nisan 2026'da Ghostty'nin GitHub'dan ayrılacağını duyurdu.&lt;/li&gt;
&lt;li&gt;Gerekçe özellik, fiyatlandırma veya politika değil; kronik GitHub Actions ve platform kesintileriydi.&lt;/li&gt;
&lt;li&gt;Duyuru gününde GitHub Actions hatası PR incelemelerini yaklaşık iki saat engelledi.&lt;/li&gt;
&lt;li&gt;Ghostty'nin GitHub deposu salt okunur yansıma olarak kalacak; aktif geliştirme aşamalı olarak başka bir platforma taşınacak.&lt;/li&gt;
&lt;li&gt;Hashimoto henüz hedef platform açıklamadı; ticari ve FOSS seçenekleri değerlendiriyor.&lt;/li&gt;
&lt;li&gt;Geliştirici araçları için ana ders: Kullanıcının kritik yolundaysanız, kesinti doğrudan güven kaybıdır.&lt;/li&gt;
&lt;li&gt;API ekipleri için uygulanabilir model: sağlayıcıdan bağımsız istemciler, mock sunucular, çoklu sağlayıcı testleri ve önceden hazırlanmış taşıma yolları.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hashimoto gönderide ne söyledi?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://mitchellh.com/writing/ghostty-leaving-github" rel="noopener noreferrer"&gt;Duyuru gönderisi&lt;/a&gt; kısa ve doğrudan. Manifesto yok, Microsoft eleştirisi yok, yeni platform tanıtımı yok.&lt;/p&gt;

&lt;p&gt;Hashimoto’nun anlattığı zaman çizelgesi şöyle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;GitHub kesintilerini kişisel günlüğüne kaydetmeye başladı.&lt;/li&gt;
&lt;li&gt;Günlük beklediğinden hızlı doldu.&lt;/li&gt;
&lt;li&gt;Yazıyı yazdığı sabah GitHub Actions hatası PR incelemelerini iki saat boyunca engelledi.&lt;/li&gt;
&lt;li&gt;Ghostty için GitHub’ın artık yeterince güvenilir olmadığı sonucuna vardı.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bu kararı tek bir kötü güne tepki olarak okumamak gerekiyor. 27 Nisan 2026’da Actions, paketler ve API yüzeyini etkileyen büyük bir GitHub kesintisi yaşandı; ancak Hashimoto’nun günlüğü bundan önce başlamıştı. Yani kararın nedeni tek olay değil, birikmiş paterndi.&lt;/p&gt;

&lt;p&gt;Geçişin sınırları da net:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ghostty ayrılıyor.&lt;/li&gt;
&lt;li&gt;Hashimoto’nun diğer projeleri şimdilik GitHub’da kalıyor.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ghostty-org/ghostty" rel="noopener noreferrer"&gt;Ghostty deposu&lt;/a&gt; mevcut URL’de salt okunur yansıma olarak kalacak.&lt;/li&gt;
&lt;li&gt;Sorunlar, PR’ler ve CI dahil aktif geliştirme yeni platforma taşınacak.&lt;/li&gt;
&lt;li&gt;Hedef platform henüz açıklanmadı.&lt;/li&gt;
&lt;li&gt;Geçiş tek seferlik “bayrak günü” şeklinde değil, aşamalı yapılacak.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu noktada önemli olan şey, şikayetin ürün yönüyle ilgili olmaması. Sorun şu: temel geliştirme altyapısı saatlerce çalışmadığında, üstündeki proje de çalışamıyor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Güvenilirlik neden platform seçiminden daha önemli?
&lt;/h2&gt;

&lt;p&gt;Duyuruda çoğu kişinin sorduğu ilk soru şu oldu:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ghostty nereye taşınıyor?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Daha önemli soru ise şu:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub gibi olgun bir platform, Hashimoto gibi uzun süreli ve yüksek profilli bir kullanıcının güvenilirlik nedeniyle ayrılacağı noktaya nasıl geldi?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bu duyuruyu klasik “X platformundan ayrılıyorum” yazılarından ayıran üç unsur var.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Kullanıcı profili
&lt;/h3&gt;

&lt;p&gt;Hashimoto yeni bir kullanıcı değil. Fortune 500 şirketlerinde kullanılan altyapı araçlarının arkasındaki isimlerden biri. GitHub'ın güvenilir olmadığını söylediğinde, bu mesaj yalnızca bireysel geliştiricilere değil, kaynak kodu stratejisi belirleyen ekip liderlerine ve CTO’lara da ulaşır.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Ayrılma nedeni
&lt;/h3&gt;

&lt;p&gt;Sebep Copilot, Microsoft, yapay zeka eğitimi, fiyatlandırma veya politika değil.&lt;/p&gt;

&lt;p&gt;Sebep daha basit:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Araç ihtiyaç duyulduğunda çalışmıyor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Geliştirici araçları için bu en kritik eksendir.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Ton
&lt;/h3&gt;

&lt;p&gt;Gönderi öfkeli değil. Daha çok, kalmak için uzun süre çabalamış bir kullanıcının yazdığı kısa bir olay sonrası raporu gibi. Bu da onu daha etkili kılıyor.&lt;/p&gt;

&lt;p&gt;Bir geliştirici aracı işletiyorsanız en kötü senaryo budur: kullanıcılarınız size kızmaz, sadece kesinti kayıtlarını sessizce biriktirir ve bir noktada ayrılır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kendi geliştirici aracınızı nasıl stres test edersiniz?
&lt;/h2&gt;

&lt;p&gt;Ürününüz bir geliştiricinin kritik yolundaysa, Hashimoto duyurusunu bir kontrol listesine dönüştürebilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Kullanıcılarınız sizin için aynı günlüğü yazabilir mi?
&lt;/h3&gt;

&lt;p&gt;Son 90 gündeki tüm olayları çıkarın:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;durum sayfasına giren kesintiler,&lt;/li&gt;
&lt;li&gt;iç ekiplerin bildiği ama dışarıya yansımayan bozulmalar,&lt;/li&gt;
&lt;li&gt;yavaşlamalar,&lt;/li&gt;
&lt;li&gt;kuyruk gecikmeleri,&lt;/li&gt;
&lt;li&gt;bölgesel sorunlar,&lt;/li&gt;
&lt;li&gt;CI/CD başarısızlıkları.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sonra bunları en yoğun kullanıcılarınızın çalışma saatleriyle eşleştirin.&lt;/p&gt;

&lt;p&gt;Sorulacak pratik soru:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;En ağır kullanıcılarımız, bizi beklerken haftada kaç saat kaybediyor?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cevap sıfırdan büyükse, kullanıcı güveni aşınıyor demektir.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Güvenilirliğinizin yönü ne?
&lt;/h3&gt;

&lt;p&gt;Tekil kesinti önemlidir, ancak trend daha önemlidir.&lt;/p&gt;

&lt;p&gt;Şu metrikleri bileşen bazında izleyin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;olay sayısı,&lt;/li&gt;
&lt;li&gt;ortalama çözüm süresi,&lt;/li&gt;
&lt;li&gt;tekrar eden olay oranı,&lt;/li&gt;
&lt;li&gt;kullanıcı etkisi süresi,&lt;/li&gt;
&lt;li&gt;iş saatlerinde gerçekleşen kesinti oranı.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basit bir tablo bile yeterlidir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bileşen        Bu Ay Olay  Önceki Ay Olay  Trend
Actions        5           2               ↑
API            3           3               →
Paketler       2           1               ↑
Web UI         1           4               ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SLA hâlâ tutuyor olabilir; ancak olay sıklığı artıyorsa güvenilirlik sessizce kötüleşiyor demektir.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Durum sayfanız gerçeği hızlı gösteriyor mu?
&lt;/h3&gt;

&lt;p&gt;Kullanıcılar kendi günlüklerini genelde resmi sinyale güvenmediklerinde tutar.&lt;/p&gt;

&lt;p&gt;Durum sayfanızda yalnızca “büyük kesinti” değil, aşağıdakiler de görünür olmalı:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;belirli özellik bozulmaları,&lt;/li&gt;
&lt;li&gt;bölgesel yavaşlıklar,&lt;/li&gt;
&lt;li&gt;arka plan kuyruğu gecikmeleri,&lt;/li&gt;
&lt;li&gt;CI çalıştırıcı kapasite sorunları,&lt;/li&gt;
&lt;li&gt;API hata oranı artışları.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;İyi durum sayfası soğuk değil, sıcak çalışır: kullanıcı problemi yaşarken sinyal verir.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Uptime’ı kendi grafiğinize göre değil, müşterinin iş akışına göre ölçüyor musunuz?
&lt;/h3&gt;

&lt;p&gt;%99,95 çalışma süresi iyi görünebilir. Ancak kesintiler hep müşterinin PR inceleme, deploy veya yayın saatlerine denk geliyorsa pratikte güvenilir değilsiniz.&lt;/p&gt;

&lt;p&gt;Örneğin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Toplam aylık kesinti: 2 saat
Kesinti zamanı: Pazartesi 10:00-12:00
Müşteri iş akışı: Haftalık release hazırlığı
Gerçek etki: Release gecikmesi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kullanıcı açısından bu “ayda 2 saat” değil, “release sırasında sistem çalışmadı” demektir.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub kilitlenmesi neden yalnızca git geçmişi değildir?
&lt;/h2&gt;

&lt;p&gt;Hashimoto’nun en dikkat çekici cümlelerinden biri şu fikirdi:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Projelerimi nereye koyacağım benim için hiç sorun olmamıştı: her zaman GitHub.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bu alışkanlık pahalıdır.&lt;/p&gt;

&lt;p&gt;Bir projeyi GitHub’dan taşırken yalnızca git geçmişini taşımıyorsunuz. Şunları da düşünmeniz gerekir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;issues,&lt;/li&gt;
&lt;li&gt;pull request geçmişi,&lt;/li&gt;
&lt;li&gt;review yorumları,&lt;/li&gt;
&lt;li&gt;Discussions,&lt;/li&gt;
&lt;li&gt;Actions workflow dosyaları,&lt;/li&gt;
&lt;li&gt;secret yönetimi,&lt;/li&gt;
&lt;li&gt;CODEOWNERS kuralları,&lt;/li&gt;
&lt;li&gt;release artifact’leri,&lt;/li&gt;
&lt;li&gt;package registry,&lt;/li&gt;
&lt;li&gt;OAuth entegrasyonları,&lt;/li&gt;
&lt;li&gt;webhook’lar,&lt;/li&gt;
&lt;li&gt;bot izinleri,&lt;/li&gt;
&lt;li&gt;branch protection kuralları.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Git deposunu klonlamak kolaydır:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/org/project.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ama issue geçmişini, PR review bağlamını ve CI kimlik bilgilerini aynı sadelikte taşıyamazsınız.&lt;/p&gt;

&lt;p&gt;Geliştirici aracı geliştiriyorsanız bu risk daha da büyür. Aracınız:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Action olarak çalışıyorsa,&lt;/li&gt;
&lt;li&gt;Marketplace üzerinden dağıtılıyorsa,&lt;/li&gt;
&lt;li&gt;GitHub OAuth ile giriş yapıyorsa,&lt;/li&gt;
&lt;li&gt;GitHub Packages üzerinden paket yayınlıyorsa,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;aracınızın güvenilirliği GitHub’ın güvenilirliğine bağlı hale gelir.&lt;/p&gt;

&lt;p&gt;Kullanıcı kesintiyi yaşadığında çoğu zaman şunu ayırmaz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub mı çöktü?
Sizin aracınız mı çöktü?
Entegrasyon mu çöktü?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kullanıcı açısından sonuç aynıdır: iş durmuştur.&lt;/p&gt;

&lt;h2&gt;
  
  
  Daha az kilitlenme için mimari yaklaşım
&lt;/h2&gt;

&lt;p&gt;GitHub’ı “altyapının kendisi” olarak değil, “sağlayıcılardan biri” olarak modelleyin.&lt;/p&gt;

&lt;p&gt;Örnek arayüz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;SourceProvider&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;listPullRequests&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;PullRequest&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;getIssue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Issue&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;createComment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub adaptörü:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GitHubProvider&lt;/span&gt; &lt;span class="k"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;SourceProvider&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;listPullRequests&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// GitHub REST veya GraphQL API çağrısı&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;getIssue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// GitHub issue çağrısı&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;createComment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// GitHub comment çağrısı&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha sonra GitLab, Forgejo veya başka bir sağlayıcı için aynı arayüzün arkasına adaptör ekleyebilirsiniz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GitLabProvider&lt;/span&gt; &lt;span class="k"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;SourceProvider&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;listPullRequests&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// GitLab merge request çağrısı&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;getIssue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// GitLab issue çağrısı&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;createComment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// GitLab note/comment çağrısı&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yaklaşım tüm geçiş maliyetini ortadan kaldırmaz, ancak sağlayıcı bağımlılığını kod tabanının her yerine yaymanızı engeller.&lt;/p&gt;

&lt;h2&gt;
  
  
  Geliştirme platformu alternatifleri
&lt;/h2&gt;

&lt;p&gt;Hashimoto hedef platform açıklamadı. Ancak Ghostty gibi açık kaynaklı bir proje için seçeneklerin şekli belli.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forgejo
&lt;/h3&gt;

&lt;p&gt;Forgejo, Gitea’nın tamamen açık kaynaklı bir hard fork’u. Codeberg e.V. tarafından sürdürülüyor. FOSS uyumlu projeler için güçlü bir adaydır. Federasyon ve ActivityPub tarafında da ilerleme vardır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codeberg
&lt;/h3&gt;

&lt;p&gt;Codeberg, kar amacı gütmeyen bir kuruluş tarafından işletilen barındırılmış Forgejo örneğidir. Açık kaynak projeler için ücretsizdir. GitHub ölçeğinde bir Actions eşdeğeri henüz yoktur.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitLab
&lt;/h3&gt;

&lt;p&gt;GitLab güçlü CI/CD, olgun proje yönetimi ve ticari destek sunar. Birçok iş akışında GitHub’a doğrudan alternatif olabilir. Ancak lisanslama ve ürün yönü nedeniyle bazı FOSS toplulukları için tartışmalıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sourcehut
&lt;/h3&gt;

&lt;p&gt;Sourcehut e-posta tabanlı iş akışını merkeze alır. Minimalist ve hızlıdır. Niştir, ancak kullanan geliştiriciler tarafından güçlü şekilde benimsenir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kendi barındırdığınız Forgejo veya Gitea
&lt;/h3&gt;

&lt;p&gt;En yüksek kontrolü sağlar, ancak operasyonel sorumluluk da sizdedir. Yedekleme, güncelleme, güvenlik, izleme ve kapasite planlamasını siz yaparsınız.&lt;/p&gt;

&lt;h3&gt;
  
  
  Radicle
&lt;/h3&gt;

&lt;p&gt;Radicle eşten eşe bir model sunar; merkezi ana bilgisayar yoktur. Federasyon argümanı burada güçlüdür, ancak büyük ve görünür projeler için hâlâ erken olabilir.&lt;/p&gt;

&lt;p&gt;Bu seçeneklerin hiçbiri GitHub’ın tüm yüzeyini birebir karşılamaz. Zaten ana nokta da bu: tek bir platform tüm geliştirme yığınını emdiğinde, ondan temiz şekilde ayrılmak yapısal olarak zorlaşır.&lt;/p&gt;

&lt;h2&gt;
  
  
  API ekipleri için ders
&lt;/h2&gt;

&lt;p&gt;Terminal emülatörü geliştirmiyor olabilirsiniz. Ancak API veya API aracı geliştiriyorsanız aynı model geçerlidir.&lt;/p&gt;

&lt;p&gt;Şu eşlemeyi yapın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Actions  -&amp;gt; bağımlı olduğunuz yukarı akış API
Issues / PR     -&amp;gt; müşterinin size hata bildirdiği kanal
GitHub kesintisi -&amp;gt; sağlayıcı kesintisi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Temel soru değişmez:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Müşterinizin işinin ne kadarı kontrol edemediğiniz bir hizmete bağlı?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bu riski azaltmak için üç pratik model kullanabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Bağımlı olduğunuz API’leri mock edin
&lt;/h2&gt;

&lt;p&gt;Yukarı akış API kapalıyken geliştirme durmamalı.&lt;/p&gt;

&lt;p&gt;Bu nedenle şu katmanlarda mock sunucu kullanın:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;yerel geliştirme,&lt;/li&gt;
&lt;li&gt;test paketi,&lt;/li&gt;
&lt;li&gt;CI,&lt;/li&gt;
&lt;li&gt;demo ortamı,&lt;/li&gt;
&lt;li&gt;hata senaryosu testleri.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basit bir örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"evt_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"processed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1999&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yanıtı canlı API’den beklemek yerine mock sunucuda tanımlarsanız, upstream kapalı olsa bile geliştirme devam eder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, aynı veri tanımlarından mock sunucu üretme modelini destekler. Canlı API’yi test etmek için kullandığınız şema, geliştirme sırasında mock yanıt üretmek için de kullanılabilir.&lt;/p&gt;

&lt;p&gt;Çok sağlayıcılı bir senaryonun pratik görünümü için &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 API'si nasıl kullanılır&lt;/a&gt; yazısındaki OpenAI benzeri ekosistem karşılaştırmasına bakabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Birden fazla sağlayıcıya karşı test edin
&lt;/h2&gt;

&lt;p&gt;LLM veya API sağlayıcılarıyla çalışıyorsanız, tek sağlayıcıya bağlı kalmak operasyonel risk yaratır.&lt;/p&gt;

&lt;p&gt;Örneğin ürününüz şu sağlayıcılardan birini kullanıyor olabilir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI,&lt;/li&gt;
&lt;li&gt;Anthropic,&lt;/li&gt;
&lt;li&gt;Mistral,&lt;/li&gt;
&lt;li&gt;DeepSeek,&lt;/li&gt;
&lt;li&gt;Google,&lt;/li&gt;
&lt;li&gt;xAI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Benzer endpoint şekillerine sahip olsalar bile hata davranışları, hız limitleri ve yanıt formatları farklı olabilir.&lt;/p&gt;

&lt;p&gt;Test matrisinizi tek sağlayıcıyla sınırlamayın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;openai&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;anthropic&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;mistral&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;deepseek&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CI’da aynı sözleşme testini her sağlayıcı için çalıştırın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;PROVIDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;openai npm &lt;span class="nb"&gt;test
&lt;/span&gt;&lt;span class="nv"&gt;PROVIDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;anthropic npm &lt;span class="nb"&gt;test
&lt;/span&gt;&lt;span class="nv"&gt;PROVIDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;deepseek npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Böylece “birincil sağlayıcı çöktü, biz de çöktük” yerine “yedek sağlayıcıya geçtik” diyebilirsiniz.&lt;/p&gt;

&lt;p&gt;Apidog ortam değişkenleriyle bu geçişi tek konfigürasyon değişikliğine indirebilirsiniz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BASE_URL=https://api.provider-a.example
API_KEY=...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;veya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BASE_URL=https://api.provider-b.example
API_KEY=...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Yayın hattınızı barındırma platformundan ayırın
&lt;/h2&gt;

&lt;p&gt;CI tamamen GitHub Actions üzerindeyse ve GitHub Actions çalışmıyorsa, yayın yapamazsınız.&lt;/p&gt;

&lt;p&gt;Minimum uygulanabilir önlem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kritik release job’larını ikinci bir çalıştırıcıda aynalayın,&lt;/li&gt;
&lt;li&gt;self-hosted runner seçeneğini test edin,&lt;/li&gt;
&lt;li&gt;manuel release yolunu belgeleyin,&lt;/li&gt;
&lt;li&gt;artifact üretimini tek platforma bağlamayın.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Örnek basit manuel fallback:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm ci
npm run &lt;span class="nb"&gt;test
&lt;/span&gt;npm run build
npm publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu komutlar belgelenmemişse, gerçek cevap şudur:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CI kapalıysa release yapamıyoruz.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ücretli müşterisi olan bir araç için bu kabul edilebilir bir durum değildir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Esnek API çalışmaları için Apidog tarzı iş akışı
&lt;/h2&gt;

&lt;p&gt;Yukarı akış sağlayıcı kesintilerine karşı daha dayanıklı bir API iş akışı şu şekilde kurulabilir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Bağımlı olduğunuz her yukarı akış API için ayrı proje oluşturun.&lt;/li&gt;
&lt;li&gt;İstek ve yanıt şemalarını bir kez tanımlayın.&lt;/li&gt;
&lt;li&gt;Bu şemalardan mock sunucu üretin.&lt;/li&gt;
&lt;li&gt;Kimlik bilgilerini ortam kapsamlı değişken veya sır olarak saklayın.&lt;/li&gt;
&lt;li&gt;Aynı istekleri &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt; ve &lt;code&gt;prod&lt;/code&gt; ortamlarında çalıştırın.&lt;/li&gt;
&lt;li&gt;Her release’te sözleşme testlerini çalıştırın.&lt;/li&gt;
&lt;li&gt;Desteklediğiniz her sağlayıcı için aynı test setini koşturun.&lt;/li&gt;
&lt;li&gt;Upstream bozulduğunda geliştirme ortamını mock sunucuya çevirin.&lt;/li&gt;
&lt;li&gt;Canlı servis dönene kadar ürün geliştirme ve test akışını durdurmayın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Örnek ortam modeli:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dev:
  BASE_URL=https://mock.example
  API_KEY=mock-key

staging:
  BASE_URL=https://sandbox.provider.example
  API_KEY=staging-key

prod:
  BASE_URL=https://api.provider.example
  API_KEY=prod-key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu model Ghostty’ye veya yapay zekaya özgü değildir. Dış bağımlılığı olan her API ekibi için geçerlidir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Geliştiricilerin duyurudan çıkardığı sonuçlar
&lt;/h2&gt;

&lt;p&gt;İlk tepkiler birkaç gruba ayrıldı.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Aferin ona” grubu
&lt;/h3&gt;

&lt;p&gt;Uzun süredir GitHub kesintilerinden rahatsız olan güç kullanıcıları, bu gönderiyi kendi deneyimlerini görünür kılmak için bir işaret olarak gördü. Birçoğu zaten ikinci bir platforma yansıtma yapıyordu; gönderi bu yansıtmayı daha ciddi ele almalarına neden oldu.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Bu yalnızca tek kesinti” diyenler
&lt;/h3&gt;

&lt;p&gt;Bu grup GitHub’ın genel uptime rakamlarının hâlâ rekabetçi olduğunu savunuyor. Makro düzeyde haklı olabilirler. Ancak Hashimoto’nun vurgusu tek olay değil, olayların yönü ve sıklığıydı.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Geçiş zor” diyen pragmatikler
&lt;/h3&gt;

&lt;p&gt;Bu grup da haklı. GitHub’dan çıkmak yalnızca repo taşımak değildir. Issue, PR, CI ve kimlik yüzeyi maliyeti büyüktür. Hashimoto’nun salt okunur yansıma ve aşamalı geçiş planı bu nedenle mantıklıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Benim depolarım ne olacak?” diye düşünen bakımcılar
&lt;/h3&gt;

&lt;p&gt;Küçük projeler için hesap farklıdır. Hashimoto için saatlerce kesinti ciddi üretkenlik kaybıdır; hafta sonu projesi için yalnızca rahatsızlık olabilir. Ancak yansıtma gibi düşük maliyetli önlemler çoğu proje için yine de değerlidir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kendi yığınız için pratik kontrol listesi
&lt;/h2&gt;

&lt;p&gt;Aşağıdaki listeyi doğrudan uygulayabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Aktif depoları ikinci platforma yansıtın
&lt;/h3&gt;

&lt;p&gt;Haftalık veya günlük mirror job kurun.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add mirror git@example.com:org/project.git
git push mirror &lt;span class="nt"&gt;--mirror&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Forgejo, Codeberg veya GitLab kullanılabilir. Amaç hemen taşınmak değil; gerektiğinde çıkış yolunu hazır tutmaktır.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Sağlayıcı istemcilerini adaptör arkasına alın
&lt;/h3&gt;

&lt;p&gt;Kötü örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GitHubClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@vendor/github&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listPullRequests&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha iyi örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;SourceProvider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SOURCE_PROVIDER&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listPullRequests&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu sayede GitHub varsayılan kalabilir, ancak tek seçenek olmaz.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Manuel fallback yolunu belgeleyin
&lt;/h3&gt;

&lt;p&gt;Şu soruya yazılı cevap verin:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CI çalışmıyorsa release nasıl yapılır?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Belge örneği:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Manuel Release&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; &lt;span class="sb"&gt;`main`&lt;/span&gt; branch'ini çek.
&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="sb"&gt;`npm ci`&lt;/span&gt; çalıştır.
&lt;span class="p"&gt;3.&lt;/span&gt; &lt;span class="sb"&gt;`npm test`&lt;/span&gt; çalıştır.
&lt;span class="p"&gt;4.&lt;/span&gt; &lt;span class="sb"&gt;`npm run build`&lt;/span&gt; çalıştır.
&lt;span class="p"&gt;5.&lt;/span&gt; Versiyonu doğrula.
&lt;span class="p"&gt;6.&lt;/span&gt; &lt;span class="sb"&gt;`npm publish`&lt;/span&gt; çalıştır.
&lt;span class="p"&gt;7.&lt;/span&gt; Release notunu manuel yayınla.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Kritik bağımlılıkları listeleyin
&lt;/h3&gt;

&lt;p&gt;Bir tablo oluşturun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Servis            Kritik mi?  4 saat kapalıysa ne olur?  Fallback
GitHub Actions    Evet        Release durur              Self-hosted runner
GitHub API        Evet        Bot çalışmaz               Cache + retry
Package registry  Evet        Yayın yapılamaz            Manuel publish
LLM provider      Evet        Özellik yavaşlar/durur     İkinci sağlayıcı
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boş kalan fallback alanları risk listesidir.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Olayların ikinci türevini izleyin
&lt;/h3&gt;

&lt;p&gt;Sadece uptime değil, olay sıklığı trendini de izleyin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ay       Olay Sayısı
Ocak     2
Şubat    3
Mart     5
Nisan    8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu tablo SLA ihlali göstermeyebilir, ama geçiş planı hazırlamanız gerektiğini gösterebilir.&lt;/p&gt;

&lt;p&gt;API aracı özelinde çalışan bir örnek için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;sağlayıcı kesintilerinden kurtulan dayanıklı iş akışları oluşturma&lt;/a&gt; yazısı, DeepSeek ve OpenAI’yi ikili sağlayıcı örneği olarak kullanarak aynı modeli adım adım ele alır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sıkça Sorulan Sorular
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ghostty nereye taşınıyor?
&lt;/h3&gt;

&lt;p&gt;Hashimoto duyuru gönderisinde hedef platform açıklamadı. Ticari ve FOSS sağlayıcılarla görüşmelerin sürdüğünü, geçişin aşamalı yapılacağını söyledi. Mevcut GitHub deposu salt okunur yansıma olarak kalacak.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub gerçekten bu kadar güvenilmez mi?
&lt;/h3&gt;

&lt;p&gt;GitHub’ın genel uptime rakamları benzer platformlarla rekabetçi olabilir. Ancak Hashimoto’nun şikayeti genel yüzde değil, kritik yoldaki tekrar eden kısmi kesintilerdi. Actions, Paketler ve API yüzeyindeki kısa kesintiler bile PR inceleme, CI ve release akışlarını doğrudan durdurabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Depolarımı hemen GitHub’dan taşımalı mıyım?
&lt;/h3&gt;

&lt;p&gt;Çoğu ekip için hemen taşınmak gerekli olmayabilir. Ancak yansıtma neredeyse her zaman düşük maliyetli ve faydalıdır. Haftalık mirror job kurmak, tam geçiş kararı vermeden çıkış yolunu hazır tutar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bu GitHub Copilot veya GitHub Actions kullanımımı etkiler mi?
&lt;/h3&gt;

&lt;p&gt;Hashimoto’nun gönderisi Copilot’u özel olarak hedef almıyor. Ancak duyuru günündeki GitHub Actions kesintisi doğrudan tetikleyiciydi. Copilot ayrı bir ürün yüzeyidir ve güvenilirliği ayrıca değerlendirilmelidir. Copilot tarafındaki kullanım ve faturalandırma detayları için &lt;a href="http://apidog.com/blog/github-copilot-usage-billing-api-teams?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;ekipler için GitHub Copilot kullanımı ve faturalandırma API'si&lt;/a&gt; yazısına bakabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub API’lerine bağımlı yapay zeka dönemi geliştirici araçları için bu ne anlama geliyor?
&lt;/h3&gt;

&lt;p&gt;GitHub API’sini saran inceleme botları, issue triage araçları veya MCP sunucuları GitHub’ın güvenilirlik profilini miras alır. Azaltma stratejisi aynıdır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;önbellekleme,&lt;/li&gt;
&lt;li&gt;retry,&lt;/li&gt;
&lt;li&gt;açık hata durumları,&lt;/li&gt;
&lt;li&gt;mock upstream,&lt;/li&gt;
&lt;li&gt;sağlayıcı adaptörü,&lt;/li&gt;
&lt;li&gt;manuel fallback.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apidog mock sunucu modeli bu tür test ve geliştirme akışlarını daha dayanıklı hale getirmek için kullanılabilir. Çalışan bir örnek için &lt;a href="http://apidog.com/blog/clawsweeper-openclaw-github-triage-bot?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Clawsweeper triage bot yazısı&lt;/a&gt; incelenebilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bu bir “GitHub’dan ayrılma” trendi mi?
&lt;/h3&gt;

&lt;p&gt;Muhtemelen yavaş ilerleyen bir trendin işareti. Büyük projeleri GitHub’dan taşımak haftalar sürebilir; çoğu ekip bunu keyfi olarak yapmaz. Hashimoto gönderisinin önemi, uzun süreli ve yüksek profilli bir kullanıcının geçiş maliyetini ödemeye değer bulmasıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Geliştirici aracı geliştiricisi” kimdir?
&lt;/h3&gt;

&lt;p&gt;Başka geliştiricilerin günlük iş akışında kullandığı yazılımı geliştiren herkes. Buna şunlar dahildir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;terminaller,&lt;/li&gt;
&lt;li&gt;editörler,&lt;/li&gt;
&lt;li&gt;CI araçları,&lt;/li&gt;
&lt;li&gt;API istemcileri,&lt;/li&gt;
&lt;li&gt;izleme araçları,&lt;/li&gt;
&lt;li&gt;paket kayıt sistemleri,&lt;/li&gt;
&lt;li&gt;review botları,&lt;/li&gt;
&lt;li&gt;yapay zeka kodlama yardımcıları.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Müşteriniz geliştiriciyse ve aracınız onların kod yazma, test etme veya yayınlama yolunda duruyorsa, Hashimoto’nun güvenilirlik dersi doğrudan sizin için geçerlidir.&lt;/p&gt;

</description>
      <category>github</category>
      <category>news</category>
      <category>opensource</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Mistral Medium 3.5 API Nasıl Kullanılır?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Thu, 30 Apr 2026 03:57:03 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/mistral-medium-35-api-nasil-kullanilir-52j</link>
      <guid>https://forem.com/tobiass_hoffmann/mistral-medium-35-api-nasil-kullanilir-52j</guid>
      <description>&lt;p&gt;Mistral, Medium 3.5'i 29 Nisan 2026'da yayınladı. API model kimliği &lt;code&gt;mistral-medium-3.5&lt;/code&gt;, uç nokta &lt;code&gt;https://api.mistral.ai/v1/chat/completions&lt;/code&gt; ve istek şeması OpenAI standardına yakındır; çoğu entegrasyonda sağlayıcı değiştirmek temel URL ve model ID güncellemesiyle yapılır. Model; 256K bağlam penceresi, yerel görsel girdi, işlev çağırma, 24 dil desteği ve SWE-Bench Verified'da %77,6 başarı oranıyla kod, ajan ve uzun bağlam iş yükleri için konumlanır.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bu kılavuzda kimlik doğrulama, temel parametreler, Python ve Node örnekleri, görsel girdi, araç çağırma, JSON modu, akış, hata yönetimi ve istemleri denerken maliyeti görünür tutan bir &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; iş akışı yer alır. Karşılaştırmalı model rehberleri için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API'sini nasıl kullanacağınızı&lt;/a&gt; ve &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 API'sini nasıl kullanacağınızı&lt;/a&gt; inceleyebilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Uç nokta: &lt;code&gt;POST https://api.mistral.ai/v1/chat/completions&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Kimlik doğrulama: &lt;code&gt;Authorization: Bearer &amp;lt;MISTRAL_API_KEY&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Model ID: &lt;code&gt;mistral-medium-3.5&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Bağlam penceresi: 256K token&lt;/li&gt;
&lt;li&gt;Fiyatlandırma: milyon giriş tokenı başına 1,5$, milyon çıkış tokenı başına 7,5$&lt;/li&gt;
&lt;li&gt;Yetenekler: akıl yürütme, görsel girdi, yerel işlev çağırma, yapılandırılmış JSON çıkışı ve 24 dil desteği&lt;/li&gt;
&lt;li&gt;Açık ağırlıklar: Hugging Face üzerinde &lt;code&gt;mistralai/Mistral-Medium-3.5-128B&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;SWE-Bench Verified: %77,6&lt;/li&gt;
&lt;li&gt;τ³-Telekom: 91,4&lt;/li&gt;
&lt;li&gt;Pratik test akışı: &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt;, API anahtarını gizli değişkende saklayın, mevcut modelinizle A/B test edin ve çağrı başına token maliyetini izleyin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Medium 3.5'te Neler Değişti?
&lt;/h2&gt;

&lt;p&gt;Medium 3, daha önce 128K bağlam penceresine sahip metin odaklı bir model olarak konumlanıyordu. &lt;a href="https://mistral.ai/news/vibe-remote-agents-mistral-medium-3-5" rel="noopener noreferrer"&gt;Medium 3.5&lt;/a&gt; ise Mistral'ın amiral gemisi birleştirilmiş modeli olarak gelir: talimat takip etme, akıl yürütme ve kodlama tek ağırlık setinde birleşir. Bu nedenle sohbet modeli ile akıl yürütme modeli arasında seçim yapmak yerine aynı model üzerinden ilerleyebilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1gvxkk5hewmsinakjv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1gvxkk5hewmsinakjv3.png" alt="Medium 3.5 görseli" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Öne çıkan üç sayı:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SWE-Bench Verified: %77,6&lt;/strong&gt; — kod yamalama ve yazılım mühendisliği görevleri için güçlü bir gösterge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;τ³-Telekom: 91,4&lt;/strong&gt; — çok turlu ajan diyaloglarında güçlü performans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;256K bağlam&lt;/strong&gt; — orta büyüklükte bir kod tabanını, uzun belgeleri veya saatlerce transkripti tek çağrıda işlemek için yeterli alan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fiyat tarafında Medium 3.5 daha pahalıdır. Medium 3, milyon giriş tokenı başına 0,40$ ve milyon çıkış tokenı başına 2,00$ seviyesindeydi. Medium 3.5, giriş için 1,5$ ve çıkış için 7,5$ olarak fiyatlanır. Bu yüzden pratik yaklaşım şudur:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ucuz ve toplu işler için Medium 3 kullanın.&lt;/li&gt;
&lt;li&gt;Kod, görsel, uzun bağlam veya ajan mantığı gereken kritik çağrılarda Medium 3.5'e yükseltin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Önkoşullar
&lt;/h2&gt;

&lt;p&gt;İlk çağrıdan önce şunları hazırlayın:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://console.mistral.ai/" rel="noopener noreferrer"&gt;console.mistral.ai&lt;/a&gt; üzerinde ödeme yöntemi tanımlı bir Mistral hesabı.&lt;/li&gt;
&lt;li&gt;Üretim için proje kapsamlı bir API anahtarı.&lt;/li&gt;
&lt;li&gt;Python veya JavaScript SDK.&lt;/li&gt;
&lt;li&gt;İstekleri tekrar çalıştırmak, farklı prompt sürümlerini karşılaştırmak ve anahtarı gizli tutmak için &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; gibi bir API istemcisi.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2tzda8jztthm2ey28nb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2tzda8jztthm2ey28nb0.png" alt="Mistral API yapılandırması" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;API anahtarını terminalde ortam değişkeni olarak tanımlayın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;MISTRAL_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uç Nokta ve Kimlik Doğrulama
&lt;/h2&gt;

&lt;p&gt;Medium 3.5 için sohbet tamamlama uç noktası:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST https://api.mistral.ai/v1/chat/completions
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Minimum &lt;code&gt;curl&lt;/code&gt; isteği:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.mistral.ai/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$MISTRAL_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "mistral-medium-3.5",
    "messages": [
      {
        "role": "user",
        "content": "Explain dense merged checkpoints in two sentences."
      }
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Başarılı yanıt şunları içerir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;choices&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;usage.prompt_tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;usage.completion_tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;usage.total_tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;izleme için kullanılabilecek &lt;code&gt;id&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hatalar ise genellikle &lt;code&gt;error.code&lt;/code&gt; ve &lt;code&gt;error.message&lt;/code&gt; alanlarını içeren OpenAI benzeri bir zarfla döner.&lt;/p&gt;

&lt;h2&gt;
  
  
  İstek Parametreleri
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parametre&lt;/th&gt;
&lt;th&gt;Tip&lt;/th&gt;
&lt;th&gt;Değerler&lt;/th&gt;
&lt;th&gt;Not&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mistral-medium-3.5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Zorunlu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;messages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;rol/içerik çiftleri&lt;/td&gt;
&lt;td&gt;Zorunlu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;0&lt;/code&gt; - &lt;code&gt;1.5&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Genel kullanım için &lt;code&gt;0.7&lt;/code&gt;, kod için &lt;code&gt;0.3&lt;/code&gt; önerilir&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;top_p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;0&lt;/code&gt; - &lt;code&gt;1&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Varsayılan &lt;code&gt;1.0&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;max_tokens&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;1&lt;/code&gt; - bağlam limiti&lt;/td&gt;
&lt;td&gt;Çıkış uzunluğunu sınırlar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;stream&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;true&lt;/code&gt; / &lt;code&gt;false&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;SSE akışını açar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tools&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;OpenAI araç şeması&lt;/td&gt;
&lt;td&gt;Yerel işlev çağırma&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tool_choice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string/object&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;any&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt; veya belirli araç&lt;/td&gt;
&lt;td&gt;Araç kullanımını kontrol eder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;response_format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;object&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;{"type":"json_object"}&lt;/code&gt; veya JSON şeması&lt;/td&gt;
&lt;td&gt;Yapılandırılmış çıktı&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;random_seed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;herhangi bir int&lt;/td&gt;
&lt;td&gt;Tekrarlanabilirlik için&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;safe_prompt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;true&lt;/code&gt; / &lt;code&gt;false&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Mistral güvenlik istemini ekler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;presence_penalty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;-2&lt;/code&gt; - &lt;code&gt;2&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Tekrarlanan konuları cezalandırır&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;frequency_penalty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;-2&lt;/code&gt; - &lt;code&gt;2&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Tekrarlanan tokenleri cezalandırır&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;OpenAI'dan geçerken iki fark önemlidir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OpenAI:  tool_choice="required"
Mistral: tool_choice="any"

OpenAI:  seed
Mistral: random_seed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Python ile Medium 3.5 Kullanımı
&lt;/h2&gt;

&lt;p&gt;Resmi Mistral SDK'sı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mistralai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Mistral&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Mistral&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MISTRAL_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Reply in code only.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a Rust function that debounces events.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Total tokens:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total_tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;1.5&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completion_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;7.5&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cost estimate USD:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OpenAI SDK ile uyumlu kullanım:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MISTRAL_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.mistral.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello, Mistral.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eğer sağlayıcıdan bağımsız bir kod tabanınız varsa OpenAI SDK yolu daha hızlıdır. Mistral'a özgü özellikleri daha net kullanmak istiyorsanız resmi &lt;code&gt;mistralai&lt;/code&gt; SDK'sını tercih edin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Node.js ile Medium 3.5 Kullanımı
&lt;/h2&gt;

&lt;p&gt;Resmi Mistral SDK'sı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Mistral&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@mistralai/mistralai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Mistral&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MISTRAL_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Explain dense merged checkpoints in plain English.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Usage:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OpenAI SDK ile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MISTRAL_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.mistral.ai/v1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello, Mistral.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Akış Yanıtları
&lt;/h2&gt;

&lt;p&gt;Akış için &lt;code&gt;stream: true&lt;/code&gt; kullanın. SSE parçaları OpenAI formatına yakındır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Stream a 300-word essay on merged checkpoints.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;delta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Terminal yerine karşılaştırmalı test yapıyorsanız &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; yanıt görüntüleyicisiyle aynı istemi farklı modellerde yan yana çalıştırabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Araç Çağırma
&lt;/h2&gt;

&lt;p&gt;Medium 3.5 yerel işlev çağırmayı destekler. Önce çağrılabilir araçları &lt;code&gt;tools&lt;/code&gt; içinde tanımlayın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_weather&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Return the current weather for a city.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parameters&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enum&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;c&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Weather in Lagos in Celsius?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tool_choice&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;tool_call&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool_calls&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tipik araç döngüsü:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model araç çağrısı üretir.&lt;/li&gt;
&lt;li&gt;Uygulama ilgili fonksiyonu yerel olarak çalıştırır.&lt;/li&gt;
&lt;li&gt;Sonuç &lt;code&gt;role: "tool"&lt;/code&gt; mesajı olarak tekrar modele gönderilir.&lt;/li&gt;
&lt;li&gt;Model nihai cevabı üretir veya yeni bir araç çağrısı ister.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bu akış OpenAI araç kullanım döngüsüyle aynıdır.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON Modu ve Yapılandırılmış Çıktı
&lt;/h2&gt;

&lt;p&gt;Şema doğrulamalı çıktı için &lt;code&gt;response_format&lt;/code&gt; içinde JSON şeması gönderin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;schema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;json_schema&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;json_schema&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;release_note&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;schema&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bullets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;array&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;items&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bullets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;additionalProperties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;strict&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Reply with a single JSON object matching the schema.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Summarize today&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s Mistral Medium 3.5 release.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;response_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha gevşek JSON çıktısı için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response_format&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;json_object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu durumda istemci tarafında Pydantic, Zod veya benzer bir doğrulama katmanı eklemek iyi olur.&lt;/p&gt;

&lt;h2&gt;
  
  
  Görsel Girdi
&lt;/h2&gt;

&lt;p&gt;Medium 3.5, metinle birlikte görsel içerik alabilir. Görseli &lt;code&gt;messages[].content&lt;/code&gt; içinde &lt;code&gt;image_url&lt;/code&gt; olarak geçin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mistral-medium-3.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What is in this image and what is it doing wrong?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://example.com/diagram.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Görseller giriş tokenı olarak ücretlendirilir. Tam token sayısı çözünürlüğe göre değişir ve &lt;code&gt;usage.prompt_tokens&lt;/code&gt; alanında raporlanır. Yüksek hacimli görsel iş yüklerinde:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ilgili bölgeyi kırpın,&lt;/li&gt;
&lt;li&gt;gereksiz çözünürlüğü azaltın,&lt;/li&gt;
&lt;li&gt;her çağrıda &lt;code&gt;usage&lt;/code&gt; değerini kaydedin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Apidog'da Medium 3.5 Koleksiyonu Oluşturma
&lt;/h2&gt;

&lt;p&gt;Terminalden aynı isteği tekrar çalıştırmak hem kredi tüketir hem de varyantlar arasındaki farkı takip etmeyi zorlaştırır. Daha sürdürülebilir akış:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt; ve yeni bir proje oluşturun.&lt;/li&gt;
&lt;li&gt;Bir ortam ekleyin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MISTRAL_API_KEY&lt;/code&gt; değerini gizli değişken olarak kaydedin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;BASE_URL&lt;/code&gt; değerini şu şekilde tanımlayın:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://api.mistral.ai/v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Yeni bir &lt;code&gt;POST&lt;/code&gt; isteği oluşturun:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{BASE_URL}}/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Header ekleyin:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Authorization: Bearer {{MISTRAL_API_KEY}}
Content-Type: application/json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Gövdeyi ekleyin:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mistral-medium-3.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Explain dense merged checkpoints in two sentences."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"temperature"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Farklı model, sıcaklık ve araç ayarlarını test etmek için isteği çoğaltmak yerine değişkenleri kullanın.&lt;/li&gt;
&lt;li&gt;Yanıt sonrası küçük bir maliyet betiği ekleyin:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prompt_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;1.5&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completion_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;7.5&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Estimated cost: $&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zaten &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API koleksiyonu&lt;/a&gt; kullanıyorsanız, koleksiyonu kopyalayıp temel URL'yi &lt;code&gt;https://api.mistral.ai/v1&lt;/code&gt;, model kimliğini de &lt;code&gt;mistral-medium-3.5&lt;/code&gt; yapmanız yeterlidir. Aynı yaklaşım &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 ile karşılaştırma&lt;/a&gt; için de geçerlidir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hata Yönetimi
&lt;/h2&gt;

&lt;p&gt;İlk karşılaşacağınız durum kodları:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kod&lt;/th&gt;
&lt;th&gt;Anlamı&lt;/th&gt;
&lt;th&gt;Düzeltme&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hatalı istek&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;messages&lt;/code&gt;, &lt;code&gt;tools&lt;/code&gt; ve JSON şemasını doğrulayın&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Geçersiz anahtar&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://console.mistral.ai/" rel="noopener noreferrer"&gt;console.mistral.ai&lt;/a&gt; üzerinden anahtarı yenileyin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;402&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ödeme gerekli&lt;/td&gt;
&lt;td&gt;Hesaba bakiye veya kart ekleyin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Model izni yok&lt;/td&gt;
&lt;td&gt;Proje kapsamını ve model ID yazımını kontrol edin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;422&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parametre aralık dışında&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;max_tokens&lt;/code&gt;, &lt;code&gt;tool_choice&lt;/code&gt; veya şema alanlarını kontrol edin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Oran limiti&lt;/td&gt;
&lt;td&gt;Üstel geri çekilme ile tekrar deneyin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sunucu hatası&lt;/td&gt;
&lt;td&gt;Kısa süre sonra tekrar deneyin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aşırı yük&lt;/td&gt;
&lt;td&gt;Bekleyin veya geçici olarak Medium 3'e dönün&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Python için basit yeniden deneme deseni:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;with_retry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;retries&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retries&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;exc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;exc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status_code&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;429&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;502&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;503&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;504&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
                &lt;span class="k"&gt;raise&lt;/span&gt;

            &lt;span class="n"&gt;sleep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Retry limit exceeded&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4xx hatalarını otomatik yeniden denemeyin. Bunlar genellikle geçici değil, istek veya yetki hatasıdır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maliyet Kontrolü Desenleri
&lt;/h2&gt;

&lt;p&gt;Medium 3.5 güçlüdür, ancak çıktı tokenı pahalıdır. Üretimde şu desenleri uygulayın:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Varsayılanı ucuz model yapın
&lt;/h3&gt;

&lt;p&gt;Önce Medium 3 veya daha ucuz bir modelle ilk geçiş yapın. Sadece doğrulama başarısız olursa veya düşük güven skoru dönerse Medium 3.5'e yükseltin.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;max_tokens&lt;/code&gt; değerini sınırlandırın
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;256K bağlam girdi içindir. Uzun çıktı her çağrıda maliyeti hızlı artırır.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Sistem istemini kısaltın
&lt;/h3&gt;

&lt;p&gt;Her sistem istemi tokenı her çağrıda tekrar faturalandırılır. 2.000 tokenlık sistem istemini 500 tokene indirmek, yüksek hacimde ciddi tasarruf sağlar.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Her çağrıda &lt;code&gt;usage&lt;/code&gt; kaydedin
&lt;/h3&gt;

&lt;p&gt;Kaydetmeniz gereken minimum alanlar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prompt_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1234&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"completion_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;456&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1690&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"estimated_cost_usd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.005271&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Görsel girdiyi seçici kullanın
&lt;/h3&gt;

&lt;p&gt;Görseli modele göndermeden önce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;kırpın,&lt;/li&gt;
&lt;li&gt;sıkıştırın,&lt;/li&gt;
&lt;li&gt;gereksiz kareleri atın,&lt;/li&gt;
&lt;li&gt;sadece yanıt için gerekli bölgeyi gönderin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Medium 3.5'i Diğer Mistral Seviyeleriyle Karşılaştırma
&lt;/h2&gt;

&lt;p&gt;Nisan 2026 sonu itibarıyla tablo:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Bağlam&lt;/th&gt;
&lt;th&gt;Giriş $/M&lt;/th&gt;
&lt;th&gt;Çıkış $/M&lt;/th&gt;
&lt;th&gt;Görsel&lt;/th&gt;
&lt;th&gt;En iyi olduğu alan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mistral-small&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32K&lt;/td&gt;
&lt;td&gt;0,10$&lt;/td&gt;
&lt;td&gt;0,30$&lt;/td&gt;
&lt;td&gt;Hayır&lt;/td&gt;
&lt;td&gt;Yüksek hacimli sınıflandırma, hafif sohbet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mistral-medium-3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;0,40$&lt;/td&gt;
&lt;td&gt;2,00$&lt;/td&gt;
&lt;td&gt;Hayır&lt;/td&gt;
&lt;td&gt;Toplu iş, uzun sohbet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mistral-medium-3.5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;td&gt;1,5$&lt;/td&gt;
&lt;td&gt;7,5$&lt;/td&gt;
&lt;td&gt;Evet&lt;/td&gt;
&lt;td&gt;Akıl yürütme, kod, görsel, ajanlar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mistral-large&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;2,00$&lt;/td&gt;
&lt;td&gt;6,00$&lt;/td&gt;
&lt;td&gt;Sınırlı&lt;/td&gt;
&lt;td&gt;Sınır katmanı metin akıl yürütme&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Medium 3.5; uzun bağlam, görsel girdi ve birleşik akıl yürütmeyi aynı seviyede toplar. Ancak seçim model adına göre değil, iş yüküne göre yapılmalıdır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Başka Bir Sağlayıcıdan Geçiş
&lt;/h2&gt;

&lt;p&gt;Çoğu durumda geçiş temel URL ve model ID değişikliğidir.&lt;/p&gt;

&lt;p&gt;OpenAI'dan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- base_url="https://api.openai.com/v1"
- model="gpt-5.5"
&lt;/span&gt;&lt;span class="gi"&gt;+ base_url="https://api.mistral.ai/v1"
+ model="mistral-medium-3.5"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DeepSeek'ten:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- base_url="https://api.deepseek.com/v1"
- model="deepseek-v4-pro"
&lt;/span&gt;&lt;span class="gi"&gt;+ base_url="https://api.mistral.ai/v1"
+ model="mistral-medium-3.5"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dikkat edilecek iki fark:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- tool_choice="required"
&lt;/span&gt;&lt;span class="gi"&gt;+ tool_choice="any"
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="gd"&gt;- seed=123
&lt;/span&gt;&lt;span class="gi"&gt;+ random_seed=123
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Üretim trafiğini değiştirmeden önce:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mevcut test suitinizi Mistral üzerinde çalıştırın.&lt;/li&gt;
&lt;li&gt;Bir süre gölge trafik gönderin.&lt;/li&gt;
&lt;li&gt;Yanıtları ve &lt;code&gt;usage&lt;/code&gt; değerlerini kaydedin.&lt;/li&gt;
&lt;li&gt;Apidog'da model farklarını yan yana karşılaştırın.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Gerçek Dünya Kullanım Senaryoları
&lt;/h2&gt;

&lt;p&gt;Medium 3.5 için pratik kullanım alanları:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kod inceleme asistanları:&lt;/strong&gt; 256K bağlam sayesinde PR diff'i ve ilgili dosyaları aynı çağrıda değerlendirebilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uzun belge Soru-Cevap:&lt;/strong&gt; Sözleşme, RFP veya politika belgelerini parçalara bölmeden işleyebilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Çok modlu veri çıkarımı:&lt;/strong&gt; Fiş, ekran görüntüsü veya diyagramlardan yapılandırılmış alan çıkarabilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Araç çağrılı ajan döngüleri:&lt;/strong&gt; Yerel işlev çağırma sayesinde API, veri tabanı veya iç servislerle çok turlu iş akışları kurulabilir.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sıkça Sorulan Sorular
&lt;/h2&gt;

&lt;h3&gt;
  
  
  API'deki Mistral Medium 3.5 model kimliği nedir?
&lt;/h3&gt;

&lt;p&gt;Barındırılan API için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mistral-medium-3.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hugging Face kontrol noktası:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mistralai/Mistral-Medium-3.5-128B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Medium 3.5 OpenAI ile uyumlu mu?
&lt;/h3&gt;

&lt;p&gt;Büyük ölçüde evet. Uç nokta yapısı, header'lar ve çoğu parametre benzerdir. OpenAI Python ve Node SDK'ları &lt;code&gt;base_url&lt;/code&gt; / &lt;code&gt;baseURL&lt;/code&gt; değişikliğiyle kullanılabilir.&lt;/p&gt;

&lt;p&gt;Farklılıklar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tool_choice="required"&lt;/code&gt; yerine &lt;code&gt;tool_choice="any"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;seed&lt;/code&gt; yerine &lt;code&gt;random_seed&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Medium 3.5'i yerel olarak çalıştırabilir miyim?
&lt;/h3&gt;

&lt;p&gt;Evet. Ağırlıklar, büyük gelir istisnası içeren Değiştirilmiş MIT Lisansı altında açıktır. 128B parametre sayısı ciddi GPU belleği gerektirir. Nicelenmiş GGUF derlemeleri için &lt;code&gt;unsloth/Mistral-Medium-3.5-128B-GGUF&lt;/code&gt; kullanılabilir. Yerel çalıştırma desenleri için &lt;a href="http://apidog.com/blog/how-to-run-deepseek-v4-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü yerel olarak nasıl çalıştıracağınız&lt;/a&gt; rehberindeki yaklaşım uygulanabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Araç çağrılarıyla akışı destekliyor mu?
&lt;/h3&gt;

&lt;p&gt;Evet. Akış sırasında araç çağrısı argüman parçaları &lt;code&gt;delta.tool_calls&lt;/code&gt; üzerinden artımlı döner. Akış tamamlandığında parçalar tam JSON nesnesine birleştirilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Göndermeden önce giriş tokenlarını nasıl sayabilirim?
&lt;/h3&gt;

&lt;p&gt;Tam sayım için &lt;code&gt;mistral-common&lt;/code&gt; Python paketinin tokenlaştırıcısını kullanabilirsiniz. API'nin kullandığı tokenlaştırıcıyla eşleştiği için sonuçlar &lt;code&gt;usage.prompt_tokens&lt;/code&gt; ile tutarlı olur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Üretimde hangi bağlam uzunluğunu planlamalıyım?
&lt;/h3&gt;

&lt;p&gt;256K üst sınırdır, varsayılan hedef değildir. 200K tokenlık bir çağrı, model çıktı üretmeden önce yalnızca giriş için yaklaşık 0,30$ maliyet oluşturur. Çoğu üretim iş yükü 32K altında tutulmalıdır; uzun bağlamı yalnızca gerçekten gerekiyorsa kullanın.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ücretsiz katman var mı?
&lt;/h3&gt;

&lt;p&gt;Mistral kalıcı bir ücretsiz katman duyurmaz; yeni hesaplar zaman zaman küçük deneme kredileriyle gelebilir. Benzer seviyedeki ücretsiz deneme seçenekleri için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API'sini ücretsiz olarak nasıl kullanacağınızı&lt;/a&gt; inceleyebilirsiniz.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tasarım Odaklı API İş Akışı için API Platformu</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Thu, 30 Apr 2026 03:35:52 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/tasarim-odakli-api-is-akisi-icin-api-platformu-3jfg</link>
      <guid>https://forem.com/tobiass_hoffmann/tasarim-odakli-api-is-akisi-icin-api-platformu-3jfg</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Tasarım öncelikli yaklaşımda API spesifikasyonu uygulama kodundan önce yazılır ve sonraki her şeyi yönlendirir: sahte API'ler (mocks), dokümantasyon, testler ve istemci taslakları. Bu iş akışını baştan sona destekleyen bir platform seçmek, kod ve dokümanları senkronize tutma yükünü azaltır. Bu makale, tasarım öncelikli yaklaşımı pratik bir iş akışı olarak açıklar ve Apidog'u eksiksiz bir tasarım öncelikli platform örneği olarak değerlendirir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://apidog.com/download/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u ücretsiz deneyin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Giriş
&lt;/h2&gt;

&lt;p&gt;Çoğu geliştirici API'leri önce kod yazarak geliştirmeyi öğrenir. Bir rota yazarsınız, bazı açıklamalar eklersiniz, bir jeneratör çalıştırırsınız ve dokümantasyon elde edersiniz. Bu yaklaşım bir noktaya kadar çalışır.&lt;/p&gt;

&lt;p&gt;Sorun genellikle bakım aşamasında başlar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dokümantasyon gerçek davranıştan sapar.&lt;/li&gt;
&lt;li&gt;Açıklamalar güncelliğini yitirir.&lt;/li&gt;
&lt;li&gt;Yeni bir mühendis yanıt formatını değiştirir ancak dekoratörü güncellemeyi unutur.&lt;/li&gt;
&lt;li&gt;Altı ay sonra dokümantasyon API'nin bir dizi string döndürdüğünü söylerken, gerçek yanıt &lt;code&gt;value&lt;/code&gt; alanı olan nesnelerden oluşur.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tasarım öncelikli yaklaşım bu akışı tersine çevirir. Spesifikasyon doğruluk kaynağıdır. Kod, dokümantasyon, mock sunucusu ve testler bu sözleşmeden türetilir.&lt;/p&gt;

&lt;p&gt;Bu sadece süreç tercihi değildir. Tasarım öncelikli çalışan ekipler genellikle şu avantajları elde eder:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daha az entegrasyon sürprizi&lt;/li&gt;
&lt;li&gt;İlk günden kullanılabilir mock API ile daha hızlı ön uç geliştirme&lt;/li&gt;
&lt;li&gt;İkincil bir çıktı olmadığı için daha doğru dokümantasyon&lt;/li&gt;
&lt;li&gt;Daha net API sözleşmeleri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ancak bu yaklaşımın çalışması için spesifikasyon yazmak pratik olmalıdır. Bir uç nokta tanımlamak 20 dakika, rota işleyicisini yazmak 5 dakika sürüyorsa ekip spesifikasyonu atlar. Araç, tasarım öncelikli yaklaşımı kod öncelikli yaklaşımdan daha yavaş değil, daha akıcı hale getirmelidir.&lt;/p&gt;




&lt;h2&gt;
  
  
  Uygulamada tasarım öncelikli yaklaşım ne anlama geliyor?
&lt;/h2&gt;

&lt;p&gt;Tasarım öncelikli yaklaşım bir teknoloji değil, bir API geliştirme iş akışıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Kod yazmadan önce sözleşmeyi tanımlayın
&lt;/h3&gt;

&lt;p&gt;API tasarımı önce OpenAPI spesifikasyonu olarak tanımlanır. Minimum olarak şunları içermelidir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uç nokta yolları ve HTTP metotları&lt;/li&gt;
&lt;li&gt;Path, query ve header parametreleri&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;PATCH&lt;/code&gt; için request body şemaları&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;200&lt;/code&gt;, &lt;code&gt;400&lt;/code&gt;, &lt;code&gt;401&lt;/code&gt;, &lt;code&gt;422&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt; gibi yanıt şemaları&lt;/li&gt;
&lt;li&gt;Kimlik doğrulama gereksinimleri&lt;/li&gt;
&lt;li&gt;Alan açıklamaları ve örnekler&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Örnek basit bir OpenAPI parçası:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;/users/{id}&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;summary&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Kullanıcı profilini getir&lt;/span&gt;
      &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;id&lt;/span&gt;
          &lt;span class="na"&gt;in&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;path&lt;/span&gt;
          &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
          &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
      &lt;span class="na"&gt;responses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Başarılı&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;yanıt"&lt;/span&gt;
          &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/UserProfile"&lt;/span&gt;
      &lt;span class="err"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;404"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Kullanıcı&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;bulunamadı"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu aşamada en önemli kararlar verilir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;İsimlendirme&lt;/li&gt;
&lt;li&gt;Veri yapıları&lt;/li&gt;
&lt;li&gt;Hata formatları&lt;/li&gt;
&lt;li&gt;Sayfalama modeli&lt;/li&gt;
&lt;li&gt;Kimlik doğrulama davranışı&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Geliştirme sırasında mock API kullanın
&lt;/h3&gt;

&lt;p&gt;Spesifikasyon mock sunucusuna yayınlanır. Böylece:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ön uç mühendisleri gerçek backend hazır olmadan geliştirme yapabilir.&lt;/li&gt;
&lt;li&gt;Backend mühendisleri spesifikasyonu gereksinim belgesi olarak kullanır.&lt;/li&gt;
&lt;li&gt;Ekipler birbirini beklemeden paralel ilerler.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ön uç tarafında örnek kullanım:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://mock.example.com/users/123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Backend henüz yazılmamış olsa bile UI geliştirme, validasyon ve entegrasyon hazırlığı başlayabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Uygulamadan sonra sözleşme testi çalıştırın
&lt;/h3&gt;

&lt;p&gt;Gerçek API tamamlandığında testler uygulamanın spesifikasyonla eşleştiğini doğrulamalıdır.&lt;/p&gt;

&lt;p&gt;Örnek kontrol mantığı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /users/{id}
Beklenen response schema: UserProfile
Gerçek response schema ile karşılaştır
Sapma varsa testi başarısız yap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu, dokümantasyon ve gerçek API arasındaki farkları erken yakalar.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Gereksinim değiştiğinde önce spesifikasyonu güncelleyin
&lt;/h3&gt;

&lt;p&gt;Bir alan ekleniyorsa, kaldırılıyorsa veya yanıt formatı değişiyorsa önce OpenAPI sözleşmesi güncellenmelidir.&lt;/p&gt;

&lt;p&gt;Doğru akış:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Spesifikasyonu güncelleyin.&lt;/li&gt;
&lt;li&gt;Ön uç ve backend ekipleri değişikliği incelesin.&lt;/li&gt;
&lt;li&gt;Mock API güncellensin.&lt;/li&gt;
&lt;li&gt;Uygulama değiştirilsin.&lt;/li&gt;
&lt;li&gt;Testler yeni sözleşmeye göre çalışsın.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Tasarım öncelikli bir platformda olması gerekenler
&lt;/h2&gt;

&lt;p&gt;Her API aracı tasarım öncelikli iş akışını iyi desteklemez. Aşağıdaki özellikler kritik önemdedir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Görsel API düzenleyici
&lt;/h3&gt;

&lt;p&gt;Ham YAML ile çalışmak her zaman verimli değildir. Görsel bir düzenleyici:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Path, method, parametre ve response tanımlarını form üzerinden oluşturmalıdır.&lt;/li&gt;
&lt;li&gt;Geçerli OpenAPI üretmelidir.&lt;/li&gt;
&lt;li&gt;Şema bileşenlerini yeniden kullanmayı desteklemelidir.&lt;/li&gt;
&lt;li&gt;Hataları düzenleme sırasında göstermelidir.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  OpenAPI doğrulaması
&lt;/h3&gt;

&lt;p&gt;Spesifikasyon mock, dokümantasyon veya kod üretimi için kullanılmadan önce geçerli OpenAPI olmalıdır.&lt;/p&gt;

&lt;p&gt;İyi bir araç şu hataları erken yakalamalıdır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eksik response açıklaması&lt;/li&gt;
&lt;li&gt;Geçersiz schema tipi&lt;/li&gt;
&lt;li&gt;Yanlış &lt;code&gt;$ref&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Eksik required alanları&lt;/li&gt;
&lt;li&gt;Hatalı security tanımı&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Spesifikasyondan otomatik mock API oluşturma
&lt;/h3&gt;

&lt;p&gt;İdeal akış şu kadar kısa olmalıdır:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OpenAPI endpoint tanımla
→ Kaydet
→ Mock URL hazır
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mock sunucusu şemadaki alan türlerini ve kısıtlamaları dikkate almalıdır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;format: email&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;minimum&lt;/code&gt; / &lt;code&gt;maximum&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;enum&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;nested object&lt;/li&gt;
&lt;li&gt;array&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$ref&lt;/code&gt; bileşenleri&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dokümantasyon önizlemesi
&lt;/h3&gt;

&lt;p&gt;Spesifikasyon sadece makine tarafından okunabilir olmamalıdır. Ekip içi inceleme için okunabilir dokümantasyona dönüşmelidir.&lt;/p&gt;

&lt;p&gt;Dokümantasyon önizlemesi şunları göstermelidir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Endpoint açıklaması&lt;/li&gt;
&lt;li&gt;Request parametreleri&lt;/li&gt;
&lt;li&gt;Request body&lt;/li&gt;
&lt;li&gt;Response schema&lt;/li&gt;
&lt;li&gt;Örnek response&lt;/li&gt;
&lt;li&gt;Hata durumları&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ekip inceleme iş akışı
&lt;/h3&gt;

&lt;p&gt;API sözleşmesi kod kadar önemlidir. Bu nedenle değişiklikler de kod değişiklikleri gibi incelenmelidir.&lt;/p&gt;

&lt;p&gt;Gerekli özellikler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yorum ekleme&lt;/li&gt;
&lt;li&gt;Değişiklik geçmişi&lt;/li&gt;
&lt;li&gt;Kim, neyi, ne zaman değiştirdi bilgisinin tutulması&lt;/li&gt;
&lt;li&gt;Endpoint veya alan bazında tartışma&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Standart OpenAPI dışa aktarımı
&lt;/h3&gt;

&lt;p&gt;Spesifikasyon taşınabilir olmalıdır. Platformdan standart OpenAPI olarak dışa aktarılıp şu araçlarla kullanılabilmelidir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kod jeneratörleri&lt;/li&gt;
&lt;li&gt;API gateway'ler&lt;/li&gt;
&lt;li&gt;Test framework'leri&lt;/li&gt;
&lt;li&gt;Dokümantasyon araçları&lt;/li&gt;
&lt;li&gt;CI doğrulama adımları&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tasarım öncelikli bir platform olarak Apidog
&lt;/h2&gt;

&lt;p&gt;Apidog'un mimarisi spesifikasyonu birincil çıktı olarak ele alır. Tasarım sekmesi, mock sunucusu, test çalıştırıcısı ve dokümantasyon aynı API tanımına bağlıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Görsel OpenAPI düzenleyici
&lt;/h3&gt;

&lt;p&gt;Apidog'un tasarım arayüzü form tabanlıdır. Her endpoint yapılandırılmış bir şekilde tanımlanır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Path&lt;/li&gt;
&lt;li&gt;HTTP method&lt;/li&gt;
&lt;li&gt;Parametreler&lt;/li&gt;
&lt;li&gt;Request body&lt;/li&gt;
&lt;li&gt;Response'lar&lt;/li&gt;
&lt;li&gt;Schema alanları&lt;/li&gt;
&lt;li&gt;Açıklamalar&lt;/li&gt;
&lt;li&gt;Validasyon kuralları&lt;/li&gt;
&lt;li&gt;Mock açıklamaları&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;YAML yazmak zorunda değilsiniz. Ancak isterseniz ham YAML veya JSON görünümünü açıp doğrudan düzenleyebilirsiniz. Görsel görünümdeki değişiklikler ham görünüme, ham görünümdeki değişiklikler de görsel görünüme senkronize olur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Şema bileşenlerini tekrar kullanın
&lt;/h3&gt;

&lt;p&gt;Ortak modelleri bileşen olarak tanımlayın.&lt;/p&gt;

&lt;p&gt;Örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schemas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;UserProfile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;id&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;email&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;example&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;usr_123&lt;/span&gt;
        &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;email&lt;/span&gt;
          &lt;span class="na"&gt;example&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;user@example.com&lt;/span&gt;
        &lt;span class="na"&gt;displayName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;example&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Ayşe Yılmaz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha sonra herhangi bir endpoint içinde bu şemaya referans verebilirsiniz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/UserProfile"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yaklaşım tutarlılığı artırır. &lt;code&gt;UserProfile&lt;/code&gt; değiştiğinde onu kullanan endpoint'ler aynı sözleşmeyi takip eder.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gerçek zamanlı dokümantasyon önizlemesi
&lt;/h3&gt;

&lt;p&gt;Bir endpoint tasarlarken dokümantasyon görünümü gerçek zamanlı olarak güncellenir. Böylece tasarım arayüzünden çıkmadan yayınlanacak dokümantasyonun nasıl görüneceğini kontrol edebilirsiniz.&lt;/p&gt;

&lt;p&gt;Bu özellikle inceleme aşamasında faydalıdır:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Endpoint'i tanımlayın.&lt;/li&gt;
&lt;li&gt;Dokümantasyon önizlemesini açın.&lt;/li&gt;
&lt;li&gt;Alan açıklamalarını kontrol edin.&lt;/li&gt;
&lt;li&gt;Ürün yöneticisi veya ön uç lideriyle bağlantıyı paylaşın.&lt;/li&gt;
&lt;li&gt;Geri bildirimi spesifikasyon üzerinde uygulayın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Eğer bir alan açıklaması dokümantasyonda belirsiz görünüyorsa, uygulama sırasında da belirsizlik yaratacaktır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Akıllı Mock: spesifikasyondan çalışan mock API'ye
&lt;/h3&gt;

&lt;p&gt;Apidog'da yeni bir endpoint kaydedildiğinde mock sunucusu hemen kullanılabilir hale gelir. Mock URL arayüzde görünür.&lt;/p&gt;

&lt;p&gt;Mock yanıtları şemalara göre oluşturulur:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;format: email&lt;/code&gt; olan string alanları geçerli e-posta adresleri döndürür.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;minimum&lt;/code&gt; ve &lt;code&gt;maximum&lt;/code&gt; değerleri olan integer alanları belirtilen aralıkta değerler döndürür.&lt;/li&gt;
&lt;li&gt;Enum alanları tanımlı değerlerden birini döndürür.&lt;/li&gt;
&lt;li&gt;İç içe nesneler ve diziler schema yapısını takip eder.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$ref&lt;/code&gt; bileşenleri çözülür ve mock response içinde kullanılır.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Belirli senaryolar için özel mock kuralları da tanımlayabilirsiniz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Path parametresi &lt;code&gt;0&lt;/code&gt; olduğunda &lt;code&gt;404&lt;/code&gt; döndür.&lt;/li&gt;
&lt;li&gt;Belirli bir query parametresi için özel payload döndür.&lt;/li&gt;
&lt;li&gt;Hata yanıtlarını ön uç validasyonu için test et.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Örnek senaryo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /users/0 → 404 Not Found
GET /users/123 → 200 UserProfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu, UI tarafında başarı ve hata durumlarını backend beklemeden test etmeyi sağlar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ekip incelemesi ve değişiklik takibi
&lt;/h3&gt;

&lt;p&gt;Apidog'daki API spesifikasyon değişiklikleri çalışma alanı üyeleri tarafından görülebilir. Belirli endpoint'lere veya alanlara yorum eklenebilir. Değişiklik geçmişi kimin neyi ne zaman değiştirdiğini takip eder.&lt;/p&gt;

&lt;p&gt;Tasarım öncelikli iş akışında bu önemlidir çünkü API sözleşmesi artık ayrı bir dosya değil, ekip tarafından incelenen ve sürdürülen merkezi bir kaynaktır.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tasarım öncelikli vs. kod öncelikli: gerçek ödünleşimler
&lt;/h2&gt;

&lt;p&gt;Tasarım öncelikli yaklaşım her durumda otomatik olarak en iyi seçenek değildir. Karar verirken aşağıdaki farkları dikkate alın.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tasarım öncelikli avantajları
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ön uç ve backend paralel çalışabilir.&lt;/li&gt;
&lt;li&gt;Dokümantasyon türev değil, kaynak olduğu için daha doğru kalır.&lt;/li&gt;
&lt;li&gt;Entegrasyon sorunları geç aşamada değil, tasarım incelemesinde ortaya çıkar.&lt;/li&gt;
&lt;li&gt;API sözleşmeleri açık ve doğrulanabilir olur.&lt;/li&gt;
&lt;li&gt;API değişiklikleri varsayılan olarak inceleme sürecinden geçer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tasarım öncelikli dezavantajları
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kod yazmadan önce spesifikasyon için zaman ayırmak gerekir.&lt;/li&gt;
&lt;li&gt;Spesifikasyon araçlarının öğrenme eğrisi vardır.&lt;/li&gt;
&lt;li&gt;Uygulama ve spesifikasyonu senkronize tutmak disiplin ister.&lt;/li&gt;
&lt;li&gt;Alan tam anlaşılmadan aşırı detaylı spesifikasyon yazmak kararları erken kilitleyebilir.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kod öncelikli avantajları
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Küçük ve deneysel projelerde başlangıç daha hızlı olabilir.&lt;/li&gt;
&lt;li&gt;Tek geliştiricili hızlı prototiplerde daha az süreç gerektirir.&lt;/li&gt;
&lt;li&gt;Ek bir spesifikasyon aracı öğrenmek gerekmez.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kod öncelikli dezavantajları
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dokümantasyon ikincil çıktıdır ve sapmaya açıktır.&lt;/li&gt;
&lt;li&gt;Ön uç genellikle backend'in hazır olmasını bekler.&lt;/li&gt;
&lt;li&gt;Sözleşme örtüktür; kırılma değişikliklerini yakalamak zordur.&lt;/li&gt;
&lt;li&gt;API refactor işlemleri manuel dokümantasyon güncellemeleri gerektirir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bir API üzerinde birden fazla mühendis çalışıyorsa tasarım öncelikli yaklaşım genellikle daha iyi sonuç verir. En fazla fayda, ön uç ve backend koordinasyonu yüksek olan özelliklerde görülür.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tasarım öncelikli iş akışlarını destekleyen araçlar
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Apidog
&lt;/h3&gt;

&lt;p&gt;Eksiksiz tasarım öncelikli platform: görsel düzenleyici, anında mock API oluşturma, dokümantasyon, test ve ekip incelemesi tek araçta bulunur. Ücretsiz katman tüm özellik setini kapsar. Güçlü mock oluşturma yeteneği pratik iş akışlarında belirgin fark yaratır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stoplight Studio
&lt;/h3&gt;

&lt;p&gt;Spectral linting ile güçlü bir OpenAPI düzenleyicidir. Stil kuralları ve API yönetişimi için uygundur. Dahili mock sunucusu veya test çalıştırıcısı yoktur. Yönetişim araçlarına ihtiyaç duyan kuruluşlar için daha uygundur.&lt;/p&gt;

&lt;h3&gt;
  
  
  SwaggerHub
&lt;/h3&gt;

&lt;p&gt;Olgun bir OpenAPI düzenleme ve işbirliği platformudur. Kurumsal alanda yaygın kullanılır. Mock yetenekleri sınırlıdır ve test odaklı değildir. Swagger ekosisteminde olan spesifikasyon ağırlıklı ekipler için uygundur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Postman API Builder
&lt;/h3&gt;

&lt;p&gt;Postman'ın OpenAPI spesifikasyonları oluşturabilen API tasarım özellikleri vardır. Ancak tasarım ve koleksiyon iş akışları ayrı hissedebilir. Mock sunucusu genellikle spesifikasyondan otomatik türetmek yerine koleksiyonlar üzerinden yapılandırılır. Kod öncelikli başlayıp dokümantasyon eklemek isteyen ekipler için çalışabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Insomnia Belge Modu
&lt;/h3&gt;

&lt;p&gt;Insomnia, OpenAPI spesifikasyon düzenlemeyi destekler ve temel mock özellikleri sunar. Özel tasarım öncelikli platformlara göre daha hafiftir. Tek geliştiriciler veya küçük projeler için uygun olabilir.&lt;/p&gt;




&lt;h2&gt;
  
  
  Apidog'da tasarım öncelikli bir iş akışı kurma
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adım 1: Koleksiyonla değil, spesifikasyonla başlayın
&lt;/h3&gt;

&lt;p&gt;Yeni bir proje oluşturun ve tasarım sekmesini açın. İlk iş olarak istek göndericiye geçmeyin.&lt;/p&gt;

&lt;p&gt;Önce en azından şunları tanımlayın:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Endpoint path&lt;/li&gt;
&lt;li&gt;HTTP method&lt;/li&gt;
&lt;li&gt;Başarılı response schema&lt;/li&gt;
&lt;li&gt;Temel hata response'ları&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Örnek başlangıç checklist'i:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ ] GET /users/{id}
[ ] Path param: id
[ ] 200 response: UserProfile
[ ] 404 response: ErrorResponse
[ ] Auth gereksinimi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 2: Önce paylaşılan bileşenleri oluşturun
&lt;/h3&gt;

&lt;p&gt;Endpoint eklemeden önce ortak şemaları tanımlayın:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hata yanıtı&lt;/li&gt;
&lt;li&gt;Sayfalama sarmalayıcısı&lt;/li&gt;
&lt;li&gt;Ortak entity alanları&lt;/li&gt;
&lt;li&gt;Kimlik doğrulama hataları&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Örnek hata formatı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schemas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;ErrorResponse&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
      &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;code&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;message&lt;/span&gt;
      &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;code&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;example&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;USER_NOT_FOUND&lt;/span&gt;
        &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
          &lt;span class="na"&gt;example&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Kullanıcı bulunamadı&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu, her endpoint'in farklı hata formatı üretmesini önler.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adım 3: Mock URL'yi erken paylaşın
&lt;/h3&gt;

&lt;p&gt;Endpoint kaydedilir kaydedilmez mock URL'yi kopyalayın ve ön uç geliştiriciyle paylaşın.&lt;/p&gt;

&lt;p&gt;Ön uç ekibi şu işleri hemen yapabilir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI entegrasyonu&lt;/li&gt;
&lt;li&gt;Loading state&lt;/li&gt;
&lt;li&gt;Empty state&lt;/li&gt;
&lt;li&gt;Error state&lt;/li&gt;
&lt;li&gt;Form validasyonu&lt;/li&gt;
&lt;li&gt;Response mapping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Backend henüz tamamlanmamış olsa bile geliştirme başlayabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adım 4: Kod yazmadan önce dokümantasyonu inceleyin
&lt;/h3&gt;

&lt;p&gt;Oluşturulan dokümantasyon önizlemesini kontrol edin.&lt;/p&gt;

&lt;p&gt;Şu soruları sorun:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alan adları açık mı?&lt;/li&gt;
&lt;li&gt;Hata durumları yeterince tanımlı mı?&lt;/li&gt;
&lt;li&gt;Response örneği gerçekçi mi?&lt;/li&gt;
&lt;li&gt;Ön uç geliştirici bu dokümana bakarak entegrasyon yapabilir mi?&lt;/li&gt;
&lt;li&gt;Auth gereksinimi net mi?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Belirsizlik varsa kodda değil, spesifikasyonda düzeltin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adım 5: Uygulamaya başlamadan önce sözleşmeyi kilitleyin
&lt;/h3&gt;

&lt;p&gt;Tasarım incelemesi tamamlandığında ve yorumlar çözüldüğünde spesifikasyonu o sprint için kilitli kabul edin.&lt;/p&gt;

&lt;p&gt;Uygulama sırasında sözleşme değişikliği gerekiyorsa sessizce kodu değiştirmeyin. Doğru akış:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spec değişikliği öner
→ Ekip incelemesi
→ Mock güncellemesi
→ Uygulama değişikliği
→ Test doğrulaması
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adım 6: CI'da schema doğrulama testleri çalıştırın
&lt;/h3&gt;

&lt;p&gt;Apidog test paketini her CI çalıştırmasında response schema doğrulaması yapacak şekilde ayarlayın.&lt;/p&gt;

&lt;p&gt;Amaç:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerçek API, OpenAPI sözleşmesine uyuyor mu?&lt;/li&gt;
&lt;li&gt;Beklenen alanlar var mı?&lt;/li&gt;
&lt;li&gt;Alan tipleri doğru mu?&lt;/li&gt;
&lt;li&gt;Hata response'ları dokümantasyonla eşleşiyor mu?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu adım uygulama ve spesifikasyonu senkronize tutan otomatik koruyucu katmandır.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sıkça Sorulan Sorular
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tasarım öncelikli yaklaşım sadece REST API'ler için mi geçerli?
&lt;/h3&gt;

&lt;p&gt;Hayır. Tasarım öncelikli prensip, sözleşme tanımlayabildiğiniz herhangi bir protokol için geçerlidir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST için OpenAPI&lt;/li&gt;
&lt;li&gt;GraphQL için schema-first yaklaşım&lt;/li&gt;
&lt;li&gt;gRPC için protobuf&lt;/li&gt;
&lt;li&gt;Olay tabanlı sistemler için AsyncAPI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apidog REST ve GraphQL tasarımını destekler. gRPC tarafında proto dosyaları benzer sözleşme öncelikli amacı taşır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Geliştirmeye başlamadan önce her endpoint'i tanımlamak zorunda mıyız?
&lt;/h3&gt;

&lt;p&gt;Hayır. Tasarım öncelikli yaklaşımı özellik bazında benimseyebilirsiniz.&lt;/p&gt;

&lt;p&gt;Örneğin mevcut kod tabanı kod öncelikli olabilir, ancak yeni geliştireceğiniz ödeme özelliği için önce spesifikasyon yazabilirsiniz. Kademeli benimseme pratik ve uygulanabilir bir yaklaşımdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tasarım öncelikli yaklaşım çevik sprintlerle nasıl çalışır?
&lt;/h3&gt;

&lt;p&gt;Sprint başındaki tasarım oturumlarında o sprint'in API sözleşmeleri tanımlanır. Sprint sırasında ön uç ve backend paralel çalışır.&lt;/p&gt;

&lt;p&gt;Tipik akış:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sprint planlama
→ API sözleşmesi
→ Mock paylaşımı
→ Paralel frontend/backend geliştirme
→ Schema doğrulama
→ Entegrasyon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Spesifikasyon incelemesi sprint planlamanın doğal bir parçası olur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uygulama orijinal spesifikasyondan sapmak zorunda kalırsa ne olur?
&lt;/h3&gt;

&lt;p&gt;Bu olabilir. Doğru süreç uygulamayı sessizce değiştirmek değildir.&lt;/p&gt;

&lt;p&gt;Önce spesifikasyonu güncelleyin, paydaşlardan özellikle ön uç ekibinden onay alın, ardından uygulamayı değiştirin. Böylece spesifikasyon doğruluk kaynağı olarak kalır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apidog'un OpenAPI dışa aktarımından sunucu taslakları oluşturabilir miyiz?
&lt;/h3&gt;

&lt;p&gt;Evet. Spesifikasyonu Apidog'dan OpenAPI 3.x olarak dışa aktarabilir ve standart kod üreteçleriyle kullanabilirsiniz. Örneğin &lt;code&gt;openapi-generator&lt;/code&gt;, 50'den fazla sunucu dili ve framework'ü destekler.&lt;/p&gt;

&lt;p&gt;Örnek komut:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openapi-generator-cli generate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-i&lt;/span&gt; openapi.yaml &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-g&lt;/span&gt; nodejs-express-server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; ./generated-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Spesifikasyon sürümlemeyi nasıl ele alıyoruz?
&lt;/h3&gt;

&lt;p&gt;Apidog proje içinde değişiklik geçmişini tutar. Paralel sürdürülen büyük sürüm değişiklikleri için ayrı projeler veya dallar kullanılabilir.&lt;/p&gt;

&lt;p&gt;Örnek yaklaşım:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;api-v1 → mevcut üretim sözleşmesi
api-v2 → yeni major değişiklikler
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Sonuç
&lt;/h2&gt;

&lt;p&gt;Tasarım öncelikli yaklaşım başlangıçta küçük bir disiplin yatırımı ister, ancak entegrasyon maliyetlerini azaltarak güçlü bir geri dönüş sağlar.&lt;/p&gt;

&lt;p&gt;Başarılı olmak için kritik nokta aracın bu süreci kolaylaştırmasıdır. Spesifikasyon yazmak zorsa ekipler bunu atlar. Görsel düzenleyici, anında mock API, dokümantasyon önizlemesi, test ve ekip incelemesi aynı akışta olduğunda tasarım öncelikli yaklaşım teorik bir ideal olmaktan çıkar ve günlük geliştirme sürecinin doğal parçası haline gelir.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>APIDOG Nisan Güncellemeleri: Yapay Zeka Agent Hata Ayıklayıcı, A2A Hata Ayıklayıcı ve Kolay Postman Geçişi</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Wed, 29 Apr 2026 09:01:18 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/apidog-nisan-guncellemeleri-yapay-zeka-agent-hata-ayiklayici-a2a-hata-ayiklayici-ve-kolay-postman-244a</link>
      <guid>https://forem.com/tobiass_hoffmann/apidog-nisan-guncellemeleri-yapay-zeka-agent-hata-ayiklayici-a2a-hata-ayiklayici-ve-kolay-postman-244a</guid>
      <description>&lt;p&gt;Nisan sürümü, Yapay Zeka Aracısı (AI Agent) geliştirme sürecini daha kolay incelemek ve hata ayıklamak için yayınlandı.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Aracı geliştirirken zor olan kısım çoğu zaman nihai cevap değildir. Asıl sorun, cevaba gelene kadar ne olduğunu anlayabilmektir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aracı kullanıcının isteğini nasıl yorumladı?&lt;/li&gt;
&lt;li&gt;Hangi aracı çağırdı?&lt;/li&gt;
&lt;li&gt;Araçtan hangi çıktı döndü?&lt;/li&gt;
&lt;li&gt;Sorun prompt tarafında mı, araç parametrelerinde mi, yoksa iş mantığında mı?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu sürümde Apidog, bu soruları daha hızlı yanıtlamak için birkaç pratik özellik ekliyor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yapay Zeka Aracısı Hata Ayıklayıcısı&lt;/li&gt;
&lt;li&gt;A2A Hata Ayıklayıcısı&lt;/li&gt;
&lt;li&gt;Postman API üzerinden içe aktarma&lt;/li&gt;
&lt;li&gt;Yayınlanmış belgelerde yan panelde çalışan “Yapay Zekaya Sor”&lt;/li&gt;
&lt;li&gt;Özel yapay zeka model sağlayıcıları&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⭐ Yeni Güncellemeler
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🔥 Yapay Zeka Aracısı Hata Ayıklayıcısı: Aracının Tüm Çalışmasını İnceleyin
&lt;/h2&gt;

&lt;p&gt;Apidog bir süredir SSE uç noktaları için görsel hata ayıklamayı destekliyordu. Bu; akış model yanıtları, ilerleme güncellemeleri, gerçek zamanlı bildirimler ve olay odaklı API’ler için kullanışlıydı.&lt;/p&gt;

&lt;p&gt;Ancak aracı hata ayıklaması yalnızca akışı izlemekten daha fazlasını gerektirir.&lt;/p&gt;

&lt;p&gt;Bir model yanıtı genellikle sadece aracının nerede bittiğini gösterir. Geliştirme sırasında ise asıl ihtiyaç, aracının oraya nasıl geldiğini görebilmektir.&lt;/p&gt;

&lt;p&gt;Yeni Yapay Zeka Aracısı Hata Ayıklayıcısı ile Apidog içinde şu adımları tek yerden inceleyebilirsiniz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Konuşma turları&lt;/li&gt;
&lt;li&gt;Model çağrıları&lt;/li&gt;
&lt;li&gt;MCP araç çağrıları&lt;/li&gt;
&lt;li&gt;Beceri (Skill) yürütmeleri&lt;/li&gt;
&lt;li&gt;Araç sonuçları&lt;/li&gt;
&lt;li&gt;Nihai çıktı&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu özellikle aşağıdaki hata ayıklama senaryolarında işe yarar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Kullanıcı isteği
  ↓
Model çağrısı
  ↓
Araç seçimi
  ↓
MCP aracı / Skill yürütmesi
  ↓
Araç sonucu
  ↓
Nihai cevap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pratikte şu soruları daha hızlı yanıtlayabilirsiniz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt modele yeterli bağlam verdi mi?&lt;/li&gt;
&lt;li&gt;Aracı doğru aracı seçti mi?&lt;/li&gt;
&lt;li&gt;MCP aracı beklenen sonucu döndürdü mü?&lt;/li&gt;
&lt;li&gt;Hata model yapılandırmasından mı kaynaklandı?&lt;/li&gt;
&lt;li&gt;Araç parametreleri yanlış mıydı?&lt;/li&gt;
&lt;li&gt;İş mantığı beklenen çıktıyı üretmedi mi?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aracı sistemleri büyüdükçe, yalnızca nihai cevabı kontrol etmek yetersiz kalır. Bu hata ayıklayıcı, çalışmanın tamamını adım adım görmenizi sağlar.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 A2A Hata Ayıklayıcısı: Aracılar Arası İletişimi Test Edin
&lt;/h2&gt;

&lt;p&gt;Çoklu aracı sistemleri giderek daha yaygın hale geliyor. Birden fazla aracı birlikte çalıştığında, yalnızca tek bir aracının doğru çalışması yeterli değildir. Aracıların birbirine doğru görevleri aktarıp aktarmadığını, mesajları beklenen formatta gönderip göndermediğini ve sonuçları doğru döndürüp döndürmediğini de test etmeniz gerekir.&lt;/p&gt;

&lt;p&gt;Apidog artık Google’ın A2A, yani Agent-to-Agent protokolü için hata ayıklamayı destekliyor.&lt;/p&gt;

&lt;p&gt;A2A Hata Ayıklayıcısı ile şunları yapabilirsiniz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A2A isteklerini doğrudan göndermek&lt;/li&gt;
&lt;li&gt;İstek parametrelerini incelemek&lt;/li&gt;
&lt;li&gt;Yanıtları kontrol etmek&lt;/li&gt;
&lt;li&gt;Aracılar arası etkileşimin sonucunu doğrulamak&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu, özellikle ham protokol detaylarını elle okumak veya farklı araçlar arasında geçiş yapmak istemeyen ekipler için daha pratik bir test akışı sağlar.&lt;/p&gt;

&lt;p&gt;İki hata ayıklayıcının rolü kısaca şöyle ayrılır:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Araç&lt;/th&gt;
&lt;th&gt;Ne için kullanılır?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Yapay Zeka Aracısı Hata Ayıklayıcısı&lt;/td&gt;
&lt;td&gt;Tek bir aracının görev yürütme sürecini incelemek&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A2A Hata Ayıklayıcısı&lt;/td&gt;
&lt;td&gt;Bir aracının başka bir aracıyla iletişimini test etmek&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Aracı tabanlı sistemler geliştiren ekipler genellikle her iki seviyede de hata ayıklamaya ihtiyaç duyar: önce tek aracının iç akışı, sonra aracılar arası iletişim.&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 Postman API Aracılığıyla Postman Verilerini İçe Aktarın
&lt;/h2&gt;

&lt;p&gt;Postman’dan geçiş yapan ekipler için içe aktarma süreci artık daha büyük çalışma alanlarına daha uygun hale geliyor.&lt;/p&gt;

&lt;p&gt;Apidog zaten yerel Postman dosyalarını içe aktarmayı destekliyordu. Bu sürümle birlikte artık Postman API üzerinden şu verileri de içe aktarabilirsiniz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workspaces&lt;/li&gt;
&lt;li&gt;Collections&lt;/li&gt;
&lt;li&gt;Environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2026%2F04%2F29%2Fxhy7y-9y.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2026%2F04%2F29%2Fxhy7y-9y.gif" alt="Apidog-02.gif" width="600" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu özellik özellikle yeni projeler oluştururken toplu geçiş yapmak için tasarlandı. Pratikte, tüm bir Postman Workspace’i Apidog’a taşımaya daha yakın bir deneyim sunar.&lt;/p&gt;

&lt;p&gt;Postman hesabınızda birden fazla Workspace varsa, Apidog içe aktarımdan sonra bunlara karşılık gelen projeleri oluşturur.&lt;/p&gt;

&lt;p&gt;Tipik kullanım akışı şöyle düşünülebilir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Postman hesabı
  ↓
Postman API
  ↓
Workspace / Collection / Environment seçimi
  ↓
Apidog projeleri
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Küçük geçişlerde yerel Postman dosyaları hâlâ kullanılabilir. Ancak daha büyük ekiplerde ve birden fazla Workspace içeren yapılarda API üzerinden içe aktarma daha az manuel işlem gerektirir.&lt;/p&gt;

&lt;h2&gt;
  
  
  📄 Yayınlanmış Belgelerdeki “Yapay Zekaya Sor” Artık Yan Panelde Açılıyor
&lt;/h2&gt;

&lt;p&gt;Yayınlanmış belgelerdeki “Yapay Zekaya Sor” özelliği artık yan panelde çalışıyor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2026%2F04%2F29%2Fw7yvf-n5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fuploads%2Fhelp%2F2026%2F04%2F29%2Fw7yvf-n5.gif" alt="Apidog-01.gif" width="560" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu değişiklikle okuyucular mevcut belgeyi açık tutarken soru sorabilir. Belge sayfasından ayrılmadan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API dokümanını okuyabilir&lt;/li&gt;
&lt;li&gt;Belirli bir bölüm hakkında soru sorabilir&lt;/li&gt;
&lt;li&gt;Cevabı inceleyebilir&lt;/li&gt;
&lt;li&gt;Sayfadaki konumunu kaybetmeden okumaya devam edebilir&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu özellikle uzun API belgelerinde kullanışlıdır. Cevap dokümanın içinde olabilir, ancak hızlıca bulmak zor olabilir. Yan panel, belge okuma ve soru sorma akışını aynı ekranda tutar.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Özel Yapay Zeka Model Sağlayıcıları
&lt;/h2&gt;

&lt;p&gt;Ekipler artık özel bir Temel URL kullanarak özel yapay zeka model sağlayıcılarını bağlayabilir.&lt;/p&gt;

&lt;p&gt;Bu, özellikle aşağıdaki yapılara sahip ekipler için faydalıdır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kendi barındırılan model servisi&lt;/li&gt;
&lt;li&gt;Dahili model geçidi&lt;/li&gt;
&lt;li&gt;Şirket içinde yönetilen özel yapay zeka altyapısı&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Böyle bir kurulum kullanıyorsanız, yapay zeka ile ilgili iş akışlarını hata ayıklarken her seferinde farklı araçlara geçmek yerine bu sağlayıcıyı Apidog içinde kullanabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐞 Hata Düzeltmeleri ve Küçük İyileştirmeler
&lt;/h2&gt;

&lt;p&gt;Bu sürümde ayrıca aşağıdaki düzeltmeler ve küçük iyileştirmeler yayınlandı:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAPI akıllı birleştirmesinin uç nokta yanıt örneklerini korumadığı bir sorun düzeltildi.&lt;/li&gt;
&lt;li&gt;Bir alt daldan korumalı bir ana dala birleştirmenin, seçili olmayan uç noktaları içerebileceği bir sorun düzeltildi.&lt;/li&gt;
&lt;li&gt;Dallardan uç nokta sürümleri oluştururken yanlış açılır menü gösterimi düzeltildi.&lt;/li&gt;
&lt;li&gt;CLI aracılığıyla testler çalıştırılırken TestData ve TestCase’lerin çalışmadığı bir sorun düzeltildi.&lt;/li&gt;
&lt;li&gt;OpenAPI dışa aktarımının alakasız modüllerden yanıt bileşenlerini içerdiği bir sorun düzeltildi.&lt;/li&gt;
&lt;li&gt;Yorumlu JSON için Markdown dışa aktarım biçimlendirmesi düzeltildi.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;crypto is not defined&lt;/code&gt; hatasından kaynaklanan Word dışa aktarım hatası düzeltildi.&lt;/li&gt;
&lt;li&gt;Basic Auth etkinleştirilmiş Knife4j’yi içe aktarırken kullanıcı adı ve parola alanlarının gösterilmediği bir sorun düzeltildi.&lt;/li&gt;
&lt;li&gt;Etiketler sayı olduğunda oluşan uç nokta filtreleme hatası düzeltildi.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;apidog endpoint list --branch&lt;/code&gt; komutunun belirtilen dal için veri döndürmediği bir sorun düzeltildi.&lt;/li&gt;
&lt;li&gt;Birkaç MCP aracı parametresi, filtreleme ve hata mesajı sorunu düzeltildi.&lt;/li&gt;
&lt;li&gt;Oluşturulan kodun &lt;code&gt;typescriptThreePlus&lt;/code&gt; yapılandırma seçeneğini içermediği bir sorun düzeltildi.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 Bunun Anlamı
&lt;/h2&gt;

&lt;p&gt;Nisan sürümü, Yapay Zeka Aracısı ürünleri geliştiren ekipler için daha uygulama odaklı bir hata ayıklama ve geçiş akışı sunuyor.&lt;/p&gt;

&lt;p&gt;Özetle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yapay Zeka Aracısı Hata Ayıklayıcısı, tek bir aracının çalışmasını adım adım incelemenize yardımcı olur.&lt;/li&gt;
&lt;li&gt;A2A Hata Ayıklayıcısı, aracılar arasındaki iletişimi test etmeyi kolaylaştırır.&lt;/li&gt;
&lt;li&gt;Postman API içe aktarma, daha büyük geçişlerde manuel dosya işlemlerini azaltır.&lt;/li&gt;
&lt;li&gt;“Yapay Zekaya Sor” yan paneli, yayınlanmış belgelerde okuma ve soru sorma deneyimini iyileştirir.&lt;/li&gt;
&lt;li&gt;Özel model sağlayıcıları, ekiplerin mevcut yapay zeka altyapılarını Apidog içinde kullanmasına olanak tanır.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu özellikler, aracı geliştirme süreci demo aşamasından gerçek projelere geçtiğinde ihtiyaç duyulan pratik araçlara odaklanır.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Sohbetimize Katılın
&lt;/h2&gt;

&lt;p&gt;Diğer API mühendisleri ve Apidog ekibiyle bağlantı kurun:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerçek zamanlı tartışmalar ve destek için &lt;a href="https://discord.com/invite/ZBxrzyXfbJ" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; topluluğumuza katılın.&lt;/li&gt;
&lt;li&gt;Teknik konuşmalar için &lt;a href="https://join.slack.com/t/apidogcommunity/shared_invite/zt-2neie4nh2-4_zhufuNBmCq4EtI6fZUwA" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; topluluğumuza katılın.&lt;/li&gt;
&lt;li&gt;En son güncellemeler için &lt;a href="https://x.com/ApidogHQ" rel="noopener noreferrer"&gt;X (Twitter)&lt;/a&gt;’da bizi takip edin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not: Tüm güncellemeler hakkında tam ayrıntılar için &lt;a href="https://apidog.canny.io/changelog/" rel="noopener noreferrer"&gt;Apidog Değişiklik Günlüğü&lt;/a&gt;’nü kontrol edin!&lt;/p&gt;

&lt;p&gt;Saygılarımızla,&lt;br&gt;&lt;br&gt;
Apidog Ekibi&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GitHub Copilot Kullanım Ücretlendirmesi: API Ekipleri Ne Beklemeli?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Wed, 29 Apr 2026 07:14:48 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/github-copilot-kullanim-ucretlendirmesi-api-ekipleri-ne-beklemeli-5em4</link>
      <guid>https://forem.com/tobiass_hoffmann/github-copilot-kullanim-ucretlendirmesi-api-ekipleri-ne-beklemeli-5em4</guid>
      <description>&lt;p&gt;GitHub Copilot'ın faturalandırma modeli geçen yıl iki kez değişti ve bu ay tekrar değişti. Bu ay itibarıyla, pull request'lerdeki Copilot kod incelemesi, depoyu sahibi olan fatura hesabından GitHub Actions dakikalarını tüketmeye başlıyor. Geçen çeyrekte gelen premium istek kotasıyla birlikte API ekipleri artık aynı anda üç ölçüm birimini yönetmek zorunda: Copilot koltukları, premium istekler ve Actions dakikaları.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bu yazıda her ölçüm biriminin neyi ölçtüğünü, yeni kod inceleme faturalandırmasının API depolarını nasıl etkilediğini ve maliyetleri faturaya yansımadan önce nasıl modelleyebileceğinizi adım adım ele alacağız.&lt;/p&gt;

&lt;p&gt;Sonunda bunu Apidog içindeki bir iş akışıyla birleştiriyoruz. Böylece API spesifikasyonu, sözleşme testleri ve yapay zeka inceleme adımları üç ayrı faturalandırma paneline dağılmak yerine tek bir akışta yönetilebilir.&lt;/p&gt;

&lt;p&gt;Ekibinizin doğrudan tükettiği model API'larının maliyetini de hesaplıyorsanız, &lt;a href="http://apidog.com/blog/gpt-5-5-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 fiyatlandırması&lt;/a&gt; ve &lt;a href="http://apidog.com/blog/deepseek-v4-api-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 fiyatlandırması&lt;/a&gt; kılavuzları, aynı konunun belirteç başına maliyet tarafını açıklar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Özet
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Copilot maliyetini artık üç ayrı kalemle düşünün: koltuk lisansı, premium istekler ve Copilot kod incelemesi için Actions dakikaları.&lt;/li&gt;
&lt;li&gt;Pull request üzerindeki Copilot kod incelemesi, arka planda GitHub Actions altyapısında çalışır.&lt;/li&gt;
&lt;li&gt;API depoları daha fazla tüketir çünkü PR'lar genellikle spesifikasyon, oluşturulmuş istemci, handler ve test değişikliklerini birlikte içerir.&lt;/li&gt;
&lt;li&gt;Premium istekler; Workspace, ajan modu, Copilot Spaces ve gelişmiş model seçimi gibi daha pahalı özellikleri sınırlar.&lt;/li&gt;
&lt;li&gt;Bir sonraki fatura döneminden önce harcama limiti koyun, depo bazında Actions kullanımını ölçün ve API deposu başına aylık yaklaşık 400-800 Actions dakikası bütçeleyin.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Copilot maliyetini oluşturan üç ölçüm birimi
&lt;/h2&gt;

&lt;p&gt;Copilot eskiden temelde tek bir lisans kalemiydi. Artık maliyeti üç parçada izlemek gerekiyor.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Koltuk başına lisans
&lt;/h2&gt;

&lt;p&gt;Bu sabit maliyettir.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot Business: kullanıcı başına aylık 10 dolar&lt;/li&gt;
&lt;li&gt;Copilot Enterprise: kullanıcı başına aylık 19 dolar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bu ücret; sohbet, satır içi tamamlamalar, çok satırlı öneriler, IDE entegrasyonları ve standart model havuzuna erişim için ödenir.&lt;/p&gt;

&lt;p&gt;Uygulama adımı:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Aktif Copilot kullanıcılarını listeleyin.&lt;/li&gt;
&lt;li&gt;Son 30-60 günde Copilot kullanmayan kullanıcıları işaretleyin.&lt;/li&gt;
&lt;li&gt;Üç ayda bir koltuk denetimi yapın.&lt;/li&gt;
&lt;li&gt;Pasif kullanıcılardan koltukları geri alın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Basit hesap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;koltuk_maliyeti = aktif_kullanıcı_sayısı × koltuk_fiyatı
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 Enterprise kullanıcısı × 19 dolar = 190 dolar / ay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Premium istekler
&lt;/h2&gt;

&lt;p&gt;Premium istekler, GitHub'ın daha pahalı Copilot özellikleri için kullandığı tüketim birimidir.&lt;/p&gt;

&lt;p&gt;Aşağıdaki işlemler premium istek tüketebilir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ajan modu&lt;/li&gt;
&lt;li&gt;Workspace kullanımı&lt;/li&gt;
&lt;li&gt;Copilot Spaces sorguları&lt;/li&gt;
&lt;li&gt;Varsayılan model dışında model seçimi&lt;/li&gt;
&lt;li&gt;Çok adımlı yapay zeka görevleri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mevcut oranlar revizyona tabi olmakla birlikte şu şekilde düşünülmelidir:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Özellik&lt;/th&gt;
&lt;th&gt;Premium istek cinsinden maliyet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Varsayılan model sohbeti&lt;/td&gt;
&lt;td&gt;Ücretli katmanlar için ücretsiz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Satır içi tamamlamalar&lt;/td&gt;
&lt;td&gt;Ücretli katmanlar için ücretsiz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ajan modu, varsayılan model&lt;/td&gt;
&lt;td&gt;İstek başına 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workspace, varsayılan model&lt;/td&gt;
&lt;td&gt;İstek başına 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 4.5 seçimi&lt;/td&gt;
&lt;td&gt;1,5x çarpan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 seçimi&lt;/td&gt;
&lt;td&gt;2x çarpan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Pro seçimi&lt;/td&gt;
&lt;td&gt;6x çarpan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot Spaces sorgusu&lt;/td&gt;
&lt;td&gt;Sorgu başına 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Dahil edilen kota:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot Business: koltuk başına aylık 300 premium istek&lt;/li&gt;
&lt;li&gt;Copilot Enterprise: koltuk başına aylık 1.000 premium istek&lt;/li&gt;
&lt;li&gt;Aşım: istek başına 0,04 dolar&lt;/li&gt;
&lt;li&gt;Aşım, kuruluşta belirlediğiniz harcama limitiyle sınırlanır&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;API ekiplerinde premium isteği artıran tipik görevler şunlardır:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"OpenAPI istemcisini yeniden oluştur."
"Bu endpoint için sözleşme testi yaz."
"Bu API değişikliğine göre handler ve testleri güncelle."
"Yeni response şemasına göre mock örneklerini düzenle."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu görevler tek bir kullanıcı istemi gibi görünse de arka planda birden fazla ajan adımı çalıştırabilir. Bu yüzden tek bir prompt, birkaç premium isteğe dönüşebilir.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Copilot kod incelemesi için Actions dakikaları
&lt;/h2&gt;

&lt;p&gt;Bu ay ekipleri en çok şaşırtan değişiklik bu oldu.&lt;/p&gt;

&lt;p&gt;Copilot bir pull request üzerinde otomatik kod incelemesi yaptığında, inceleme GitHub Actions altyapısında çalışır. Bu çalışma, kuruluşunuzun normal Actions dakika kotasından düşer.&lt;/p&gt;

&lt;p&gt;Bilmeniz gerekenler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bu dakikalar ayrı bir Copilot kotası değildir.&lt;/li&gt;
&lt;li&gt;GitHub planınızdaki mevcut Actions kotasından tüketilir.&lt;/li&gt;
&lt;li&gt;Team planında ayda 3.000 dakika, Enterprise'da Linux runner'lar için 50.000 dakika kotası bulunur.&lt;/li&gt;
&lt;li&gt;Özel depolardaki Actions dakikaları bütçeden düşer.&lt;/li&gt;
&lt;li&gt;Genel depolardaki Actions kullanımı ücretsizdir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tipik bir API PR'ında Copilot kod incelemesi yaklaşık 2-6 Actions dakikası tüketebilir. Büyük fark içeren, çok dosyalı veya geniş bağlamlı incelemelerde bu süre 15 dakikaya kadar çıkabilir.&lt;/p&gt;

&lt;p&gt;Basit hesap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aylık_inceleme_dakikası = aylık_PR_sayısı × PR_başına_ortalama_dakika
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50 PR × 4 dakika = 200 Actions dakikası / ay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tek depo için bu makul görünebilir. Ancak üç aktif API deposunda:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 depo × 200 dakika = 600 Actions dakikası / ay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu sayı, CI testleri çalışmadan önce tüketilen ek dakikadır.&lt;/p&gt;

&lt;h2&gt;
  
  
  API depoları neden daha fazla tüketir?
&lt;/h2&gt;

&lt;p&gt;API depoları Copilot maliyetini ortalamadan daha hızlı artırır. Bunun üç ana nedeni var.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Pull request'ler daha büyüktür
&lt;/h2&gt;

&lt;p&gt;Tipik bir API değişikliği sadece tek dosyayı etkilemez. Genellikle şunları içerir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;openapi.yaml&lt;/code&gt; veya benzeri API spesifikasyonu&lt;/li&gt;
&lt;li&gt;Oluşturulmuş istemciler&lt;/li&gt;
&lt;li&gt;Sunucu handler'ları&lt;/li&gt;
&lt;li&gt;Sözleşme testleri&lt;/li&gt;
&lt;li&gt;Mock veriler&lt;/li&gt;
&lt;li&gt;Dokümantasyon örnekleri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Copilot incelemesi bu dosyaların tamamını okuyabilir. Daha büyük fark, daha uzun inceleme süresi ve daha fazla Actions dakikası anlamına gelir.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Oluşturulan kod inceleme maliyetini şişirir
&lt;/h2&gt;

&lt;p&gt;Birçok ekip oluşturulmuş istemcileri commit eder. Bu dosyalar çoğu zaman mekanik çıktılardır, ancak PR farkına dahil olduklarında inceleme tarafından okunabilir.&lt;/p&gt;

&lt;p&gt;Bu durumda iki sorun oluşur:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;İnceleme süresi artar.&lt;/li&gt;
&lt;li&gt;İnceleme değeri düşer çünkü üretilmiş kod genellikle manuel incelenmemelidir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pratik çözüm: oluşturulmuş istemcileri Copilot review path filtrelerinden hariç tutun.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. PR başına birden fazla kontrol çalışır
&lt;/h2&gt;

&lt;p&gt;API ekipleri genellikle aynı PR üzerinde şunları birlikte çalıştırır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot kod incelemesi&lt;/li&gt;
&lt;li&gt;CodeQL&lt;/li&gt;
&lt;li&gt;Snyk&lt;/li&gt;
&lt;li&gt;Özel güvenlik tarayıcıları&lt;/li&gt;
&lt;li&gt;Sözleşme testleri&lt;/li&gt;
&lt;li&gt;Entegrasyon testleri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Copilot burada yeni maliyet kalemidir. Diğer kontroller zaten Actions dakikası tüketiyordu. Bu yüzden Copilot incelemesini her PR'da koşulsuz çalıştırmak yerine tetikleyicileri daraltmak gerekir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aylık Copilot faturanızı nasıl tahmin edersiniz?
&lt;/h2&gt;

&lt;p&gt;Maliyeti üç adımda modelleyin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 1: Koltuk maliyetini hesaplayın
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;business_koltuk_maliyeti = aktif_kullanıcı_sayısı × 10
enterprise_koltuk_maliyeti = aktif_kullanıcı_sayısı × 19
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Örnek:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aktif_kullanıcı_sayısı = 10
plan = Enterprise

koltuk_maliyeti = 10 × 19 = 190 dolar / ay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adım 2: Premium istek aşımını hesaplayın
&lt;/h2&gt;

&lt;p&gt;Geliştirici başına aylık tahmin yapın.&lt;/p&gt;

&lt;p&gt;Yaklaşık kullanım profilleri:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sadece sohbet ve temel kullanım: ayda yaklaşık 150 istek&lt;/li&gt;
&lt;li&gt;Yoğun Workspace / ajan modu kullanımı: ayda yaklaşık 600-800 istek&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Business için basit aşım hesabı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;premium_aşım = max(0, kullanılan_istekler - koltuk_başına_300) × 0,04
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enterprise için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;premium_aşım = max(0, kullanılan_istekler - koltuk_başına_1000) × 0,04
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kuruluş düzeyinde mutlaka harcama limiti koyun. Varsayılan davranışı sınırsız kabul etmek, aktif olarak izleme yapmayan ekipler için risklidir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 3: Kod incelemesi için Actions dakikalarını hesaplayın
&lt;/h2&gt;

&lt;p&gt;Orta büyüklükteki API PR'ları için 4 dakikalık ortalama makul bir başlangıç noktasıdır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;inceleme_dakikaları = ay_başına_PR_sayısı × 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Actions kotası aşılıyorsa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;inceleme_aşımı = max(0, inceleme_dakikaları - kalan_actions_kotası) × 0,008
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Örnek senaryo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 geliştirici&lt;/li&gt;
&lt;li&gt;Copilot Enterprise&lt;/li&gt;
&lt;li&gt;Ayda 200 PR&lt;/li&gt;
&lt;li&gt;PR başına ortalama 4 dakika Copilot incelemesi
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;koltuklar = 10 × 19 = 190 dolar
inceleme_dakikaları = 200 × 4 = 800 dakika
premium_aşım = yaklaşık 40 dolar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yaklaşık sonuç:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Koltuklar: 190 dolar&lt;/li&gt;
&lt;li&gt;Premium aşım: 40 dolar&lt;/li&gt;
&lt;li&gt;İnceleme dakikaları: Enterprise kotası içinde ise 0 dolar&lt;/li&gt;
&lt;li&gt;Toplam: yaklaşık 230 dolar / ay&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Business katmanındaki küçük ekipler daha dar Actions kotası nedeniyle aşımı daha hızlı görebilir.&lt;/p&gt;

&lt;h2&gt;
  
  
  CI hattında hemen uygulayabileceğiniz optimizasyonlar
&lt;/h2&gt;

&lt;p&gt;Aşağıdaki üç değişiklik genellikle en hızlı sonucu verir.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Bot PR'larında Copilot incelemesini atlayın
&lt;/h2&gt;

&lt;p&gt;Dependabot veya Renovate PR'larında çoğu zaman yapay zeka kod incelemesine gerek yoktur.&lt;/p&gt;

&lt;p&gt;Örnek GitHub Actions koşulu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;synchronize&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;copilot-review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github.actor != 'dependabot[bot]' &amp;amp;&amp;amp; github.actor != 'renovate[bot]'&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github/copilot-review@v1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu tek filtre, paket güncelleme trafiği yüksek depolarda ciddi dakika tasarrufu sağlar.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Oluşturulmuş istemcileri inceleme kapsamından çıkarın
&lt;/h2&gt;

&lt;p&gt;Eğer depo her PR'da istemcileri yeniden oluşturuyorsa, Copilot farkı her seferinde okuyabilir.&lt;/p&gt;

&lt;p&gt;Daha iyi yaklaşım:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Oluşturulmuş çıktılar için hash hesaplayın.&lt;/li&gt;
&lt;li&gt;Hash temel branch ile aynıysa inceleme adımını atlayın.&lt;/li&gt;
&lt;li&gt;Oluşturulmuş klasörleri path filtresi dışında bırakın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Örnek hariç tutulacak klasörler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;generated/**
clients/**
sdk/**
dist/**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Copilot incelemesini sadece anlamlı API yollarında çalıştırın
&lt;/h2&gt;

&lt;p&gt;İncelemeyi handler, spesifikasyon ve test dosyalarıyla sınırlayın.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;apis/**/*.yaml'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cmd/**'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;internal/**'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tests/**'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu yaklaşımda Copilot incelemesi hâlâ kritik API mantığını görür, ancak oluşturulmuş veya alakasız dosyalar için dakika harcamaz.&lt;/p&gt;

&lt;h2&gt;
  
  
  API ekipleri için önerilen yönetim kontrolleri
&lt;/h2&gt;

&lt;p&gt;Bu kontrolleri kurmak genellikle 20 dakika sürer ve sürpriz faturaları azaltır.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Kuruluş düzeyinde harcama limiti belirleyin
&lt;/h2&gt;

&lt;p&gt;Harcama limitini depo bazında değil, kuruluş düzeyinde belirleyin.&lt;/p&gt;

&lt;p&gt;Pratik yaklaşım:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;beklenen_aylık_aşım × 1,2 = harcama_limiti
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eğer emin değilseniz daha düşük bir limit ile başlayın ve 30 gün sonra artırın.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Premium istek uyarılarını görünür hale getirin
&lt;/h2&gt;

&lt;p&gt;GitHub dahil edilen kotanın yüzde 50, 75 ve 90 seviyelerinde uyarı gönderebilir. Bu uyarıları sadece e-postada bırakmayın.&lt;/p&gt;

&lt;p&gt;Bağlayabileceğiniz yerler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Microsoft Teams&lt;/li&gt;
&lt;li&gt;PagerDuty&lt;/li&gt;
&lt;li&gt;İç geliştirici portalı&lt;/li&gt;
&lt;li&gt;FinOps dashboard'u&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Copilot incelemesini etiketle tetikleyin
&lt;/h2&gt;

&lt;p&gt;Her PR'da otomatik inceleme yerine etiket tabanlı model kullanın.&lt;/p&gt;

&lt;p&gt;Örnek politika:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sadece review-please etiketi olan PR'larda Copilot incelemesi çalışır.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bunun avantajı:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Küçük veya mekanik PR'lar atlanır.&lt;/li&gt;
&lt;li&gt;Kritik API değişiklikleri hâlâ incelenir.&lt;/li&gt;
&lt;li&gt;Actions dakika tüketimi azalır.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Enterprise özelliklerini ekip bazında açın
&lt;/h2&gt;

&lt;p&gt;Copilot Enterprise özelliklerini tüm kuruluşa tek seferde açmak yerine ekip bazında etkinleştirin.&lt;/p&gt;

&lt;p&gt;Önerilen sıra:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;API platform ekibi&lt;/li&gt;
&lt;li&gt;Yoğun sözleşme testi yazan ekipler&lt;/li&gt;
&lt;li&gt;SDK ve istemci üreten ekipler&lt;/li&gt;
&lt;li&gt;Geniş organizasyon kullanımı&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bu yaklaşım yeni özelliklerin maliyetini kontrollü ölçmenizi sağlar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apidog bu akışta nerede duruyor?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, Copilot alternatifi değildir. API sözleşmesi, mock, test ve dokümantasyon katmanını tek yerde tutarak Copilot incelemesinin daha pahalı aşamalara gereksiz yere harcama yapmasını önlemeye yardımcı olur.&lt;/p&gt;

&lt;p&gt;API depoları için pratik akış şu şekilde kurulabilir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;API spesifikasyonunu Apidog koleksiyonunda tutun.&lt;/li&gt;
&lt;li&gt;Kaydedilmiş request/response örneklerini spesifikasyonla birlikte yönetin.&lt;/li&gt;
&lt;li&gt;Sözleşme testlerini canlı API yerine Apidog mock sunucusuna karşı çalıştırın.&lt;/li&gt;
&lt;li&gt;CI içinde önce sözleşme doğrulamasını çalıştırın.&lt;/li&gt;
&lt;li&gt;Copilot incelemesini sadece doğrulama başarılıysa tetikleyin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Örnek akış:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PR açılır
  ↓
OpenAPI / Apidog koleksiyonu doğrulanır
  ↓
Mock sunucuya karşı sözleşme testleri çalışır
  ↓
Başarısızsa pipeline durur
  ↓
Başarılıysa Copilot kod incelemesi çalışır
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu sıralama önemlidir çünkü Copilot incelemesi hattaki daha pahalı adımlardan biridir. Ucuz sözleşme kontrollerinde başarısız olacak bir PR için inceleme dakikası harcamamak gerekir.&lt;/p&gt;

&lt;p&gt;Daha temel mock iş akışı için &lt;a href="http://apidog.com/blog/api-testing-without-postman-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Postman olmadan API testi kılavuzuna&lt;/a&gt;, model API senaryosu için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API kılavuzuna&lt;/a&gt; bakabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Örnek CI akışı
&lt;/h2&gt;

&lt;p&gt;Aşağıdaki yapı, önce ucuz kontrolleri çalıştırıp Copilot incelemesini sona bırakır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;synchronize&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;apis/**/*.yaml'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cmd/**'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;internal/**'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tests/**'&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;contract-check&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;

      &lt;span class="c1"&gt;# Örnek: sözleşme doğrulama adımı&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run contract validation&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;apidog-cli validate&lt;/span&gt;

  &lt;span class="na"&gt;copilot-review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;needs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;contract-check&lt;/span&gt;
    &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github.actor != 'dependabot[bot]' &amp;amp;&amp;amp; github.actor != 'renovate[bot]'&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github/copilot-review@v1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Buradaki amaç Copilot incelemesini kaldırmak değil, doğru yerde çalıştırmaktır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bir sonraki faturalandırma döngüsünde neyi izlemelisiniz?
&lt;/h2&gt;

&lt;p&gt;Takviminize üç kontrol noktası ekleyin.&lt;/p&gt;

&lt;h2&gt;
  
  
  1-7. günler
&lt;/h2&gt;

&lt;p&gt;Premium istek kullanımı genellikle normal görünür. Çoğu ekip ilk hafta dahil edilen kotanın altında kalır.&lt;/p&gt;

&lt;p&gt;Kontrol edin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Koltuk sayısı&lt;/li&gt;
&lt;li&gt;Aktif kullanıcı sayısı&lt;/li&gt;
&lt;li&gt;Premium istek eğilimi&lt;/li&gt;
&lt;li&gt;Actions dakika taban çizgisi&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  14-21. günler
&lt;/h2&gt;

&lt;p&gt;Yoğun Workspace veya ajan modu kullanıcıları dahil kotayı aşmaya başlayabilir.&lt;/p&gt;

&lt;p&gt;Kontrol edin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hangi kullanıcılar kotaya yaklaşıyor?&lt;/li&gt;
&lt;li&gt;Harcama limiti devrede mi?&lt;/li&gt;
&lt;li&gt;Ajan modu kullanımı beklenen seviyede mi?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  28-30. günler
&lt;/h2&gt;

&lt;p&gt;Copilot incelemesinden kaynaklanan Actions dakika kullanımı belirginleşir.&lt;/p&gt;

&lt;p&gt;Kontrol edin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bu ayki Actions kullanımı&lt;/li&gt;
&lt;li&gt;Önceki ayla fark&lt;/li&gt;
&lt;li&gt;En çok dakika tüketen depolar&lt;/li&gt;
&lt;li&gt;En çok tetiklenen workflow'lar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ay sonunda şu kararları verin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yoğun kullanıcıları Enterprise katmanına taşımak gerekiyor mu?&lt;/li&gt;
&lt;li&gt;Pasif kullanıcıların koltukları kaldırılmalı mı?&lt;/li&gt;
&lt;li&gt;Copilot review path filtresi daraltılmalı mı?&lt;/li&gt;
&lt;li&gt;Etiket tabanlı tetikleme modeline geçilmeli mi?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sık yapılan hatalar
&lt;/h2&gt;

&lt;p&gt;API ekiplerinde en sık görülen sorunlar şunlar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Harcama limiti olmaması&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Tek bir ajan döngüsü uzun süre çalışabilir. Her zaman üst sınır belirleyin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Copilot incelemesinin her depoda açık olması&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
İncelemenin gerçekten değer kattığı depoları seçin. Diğerlerinde kapatın.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Oluşturulmuş istemcilerin incelenmesi&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Generated kodu path filtresiyle hariç tutun.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bot PR'larının incelenmesi&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Dependabot, Renovate ve şirket içi otomatik güncelleyicileri filtreleyin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Öncesi/sonrası ölçüm yapılmaması&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
GitHub faturalandırma arayüzünden CSV dışa aktarımı alın ve her ay saklayın.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  SSS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Koltuk fiyatı hâlâ kullanıcı başına 10 dolar mı?
&lt;/h3&gt;

&lt;p&gt;Copilot Business kullanıcı başına aylık 10 dolar, Copilot Enterprise kullanıcı başına aylık 19 dolar ve bireyler için Copilot Pro aylık 10 dolardır. Koltuk katmanı, dahil edilen premium istek kotasını belirler.&lt;/p&gt;

&lt;h3&gt;
  
  
  Satır içi tamamlamalar artık ölçülüyor mu?
&lt;/h3&gt;

&lt;p&gt;Hayır. Sohbet ve satır içi tamamlamalar için varsayılan model, ücretli katmanlarda ölçülmez. Premium istekler daha pahalı özellikleri ve model seçimini kapsar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Premium kotam bittiğinde ne olur?
&lt;/h3&gt;

&lt;p&gt;Varsayılan olarak istekler kota hatasıyla başarısız olmaya başlar. Aşım kullanımına izin vermek için kuruluş düzeyinde harcama limiti belirleyebilirsiniz. Aşım, belirlenen limite kadar istek başına 0,04 dolar olarak hesaplanır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kod incelemesi için Actions dakikaları ayrı mı faturalandırılır?
&lt;/h3&gt;

&lt;p&gt;Hayır. Copilot kod incelemesi, CI işlerinizle aynı Actions dakika havuzunu tüketir. Bu yüzden toplam Actions kullanımını izlemeli ve workflow tetikleyicilerini buna göre ayarlamalısınız.&lt;/p&gt;

&lt;h3&gt;
  
  
  Copilot kod incelemesini tamamen devre dışı bırakabilir miyim?
&lt;/h3&gt;

&lt;p&gt;Evet. Kuruluş yöneticisi politika düzeyinde depolar için Copilot kod incelemesini devre dışı bırakabilir. Aynı yaklaşım ekip bazında etkinleştirme için de kullanılabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Copilot incelemesi özel API spesifikasyonlarında çalışır mı?
&lt;/h3&gt;

&lt;p&gt;Evet. Özel depolarda çalışır ve Actions dakikası tüketir. İnceleyici, spesifikasyon ve handler dosyalarını diğer kaynak dosyalar gibi okuyabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Copilot incelemesi premium istekleri de kullanıyor mu?
&lt;/h3&gt;

&lt;p&gt;Şu anda Copilot kod incelemesi yalnızca Actions dakikalarını tüketir. İncelemede kullanılan model Copilot platformunun parçasıdır ve ayrı bir premium istek olarak faturalandırılmaz. Bu alan değişebileceği için GitHub değişiklik günlüğünü izlemek gerekir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Son kontrol listesi
&lt;/h2&gt;

&lt;p&gt;Bir sonraki fatura döneminden önce şunları yapın:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Aktif Copilot kullanıcılarını çıkarın.&lt;/li&gt;
&lt;li&gt;[ ] Pasif koltukları kaldırın.&lt;/li&gt;
&lt;li&gt;[ ] Kuruluş düzeyinde harcama limiti belirleyin.&lt;/li&gt;
&lt;li&gt;[ ] Premium istek uyarılarını Slack veya benzeri bir kanala bağlayın.&lt;/li&gt;
&lt;li&gt;[ ] Bot PR'larında Copilot incelemesini kapatın.&lt;/li&gt;
&lt;li&gt;[ ] Oluşturulmuş istemcileri path filtresinden çıkarın.&lt;/li&gt;
&lt;li&gt;[ ] API depoları için aylık Actions dakika bütçesi belirleyin.&lt;/li&gt;
&lt;li&gt;[ ] GitHub faturalandırma CSV'sini her ay dışa aktarın.&lt;/li&gt;
&lt;li&gt;[ ] Ucuz sözleşme kontrollerini Copilot incelemesinden önce çalıştırın.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hem Copilot incelemesi hem de CI içinde doğrudan model API çağrıları çalıştıran ekipler için &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-free-codex?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 ücretsiz Codex kılavuzu&lt;/a&gt; belirteç başına maliyet tarafını açıklar. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ise mock ve sözleşme katmanını yöneterek yapay zeka incelemesinin yalnızca ucuz kontrolleri geçen PR'larda çalışmasına yardımcı olur.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zuplo API'si Nasıl Kullanılır?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Mon, 27 Apr 2026 08:59:54 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/zuplo-apisi-nasil-kullanilir-1o2c</link>
      <guid>https://forem.com/tobiass_hoffmann/zuplo-apisi-nasil-kullanilir-1o2c</guid>
      <description>&lt;p&gt;Zuplo hakkında bilgi edindiyseniz ve onunla gerçek bir şeyler göndermek istiyorsanız, bu yazı tam size göre. Platformu öğrenmek hızlıdır, ancak dökümantasyonu farklı kaynaklara yayılmıştır. Bu rehberde, bir projeyi nasıl oluşturacağınız, rota açacağınız, API anahtarı kimlik doğrulaması ve hız limiti ekleyeceğiniz, özel bir TypeScript ilkesi yazacağınız, dağıtıma göndereceğiniz ve Apidog ile test edeceğiniz adım adım gösterilecektir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Bugün Apidog'u deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bu sürecin sonunda, kimlik doğrulama, hız limiti, otomatik geliştirici portalı ve CI ile uyumlu bir Git iş akışı ile kaynak API'nızın önünde çalışan bir API gateway’iniz olacak. Tüm işlem yaklaşık otuz dakika sürer.&lt;/p&gt;

&lt;p&gt;Zuplo’nun sizin için uygun olup olmadığından emin değilseniz, şu makaleye göz atın: &lt;a href="http://apidog.com/blog/what-is-zuplo-api-gateway?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Zuplo API ağ geçidi nedir&lt;/a&gt;. Diğer detaylar için &lt;a href="https://zuplo.com/docs" rel="noopener noreferrer"&gt;Zuplo belgelerine&lt;/a&gt; başvurabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Özet
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://portal.zuplo.com" rel="noopener noreferrer"&gt;portal.zuplo.com&lt;/a&gt; üzerinden kayıt olun veya &lt;code&gt;npm create zuplo&lt;/code&gt; ile yerel proje başlatın.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;config/routes.oas.json&lt;/code&gt; dosyasında rotaları tanımlayın ve URL Forward Handler ile kaynak API’ya yönlendirin.&lt;/li&gt;
&lt;li&gt;Gerekli inbound policy’leri (API anahtarı doğrulama, hız limiti, şema doğrulama) rota dosyası veya Route Designer üzerinden ekleyin.&lt;/li&gt;
&lt;li&gt;Özel mantık için &lt;code&gt;modules/&lt;/code&gt; klasöründe TypeScript modülleri yazın; runtime üzerinden tip güvenli erişim elde edersiniz.&lt;/li&gt;
&lt;li&gt;Değişiklikleri bağlı Git dalına gönderin ve bir önizleme ortamı dağıtın; üretime almak için birleştirin.&lt;/li&gt;
&lt;li&gt;Yayına almadan önce her rotayı &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile test edin.&lt;/li&gt;
&lt;li&gt;Ücretsiz plan ayda 100K istek sunar, Builder planı aylık 25$’dır.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ön Koşullar
&lt;/h2&gt;

&lt;p&gt;Başlamadan önce ihtiyacınız olanlar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bir Zuplo hesabı&lt;/li&gt;
&lt;li&gt;Gateway’in önünde çalışacak bir kaynak API (yoksa &lt;code&gt;https://echo.zuplo.io&lt;/code&gt; kullanılabilir)&lt;/li&gt;
&lt;li&gt;CLI kullanacaksanız Node.js 18+&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ayrıca yerel geliştirme için bir kod editörü gerekir. VS Code + TypeScript eklentisi önerilir. VS Code içerisinden istek göndermek için &lt;a href="http://apidog.com/blog/how-to-use-apidog-inside-vscode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog VS Code uzantısını&lt;/a&gt; kurabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 1: Zuplo Projesi Oluşturun
&lt;/h2&gt;

&lt;p&gt;Proje oluşturmanın iki yolu var: Web portali veya CLI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seçenek A: Portal Kullanarak
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://portal.zuplo.com" rel="noopener noreferrer"&gt;portal.zuplo.com&lt;/a&gt; adresinde oturum açın.&lt;/li&gt;
&lt;li&gt;"Yeni Proje"ye tıklayın, örneğin &lt;code&gt;acme-gateway&lt;/code&gt; adını verin.&lt;/li&gt;
&lt;li&gt;"Boş Proje"yi seçin.&lt;/li&gt;
&lt;li&gt;Kod sekmesi başlangıç dosya ağacı ile açılır.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdr81khlfl02v9c67utmp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdr81khlfl02v9c67utmp.png" alt="Zuplo Portal" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Portal, projeyi varsayılan olarak yönetilen bir Git deposuna bağlar. Sonradan kendi GitHub, GitLab, Bitbucket veya Azure DevOps deponuzu Ayarlar’dan bağlayabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seçenek B: CLI Kullanarak
&lt;/h3&gt;

&lt;p&gt;Yerel projeyi CLI ile başlatmak için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create zuplo@latest &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; acme-gateway
&lt;span class="nb"&gt;cd &lt;/span&gt;acme-gateway
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Geliştirme sunucusu 9000 portunda başlar ve Route Designer’a &lt;code&gt;http://localhost:9100&lt;/code&gt; üzerinden erişebilirsiniz. Yaptığınız değişiklikler otomatik olarak yansır.&lt;/p&gt;

&lt;p&gt;Projeyi dağıtıma hazır hale getirmek ve Zuplo hesabınıza bağlamak için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx zuplo &lt;span class="nb"&gt;link&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hesap ve ortam seçin. Sonrasında güncel dalı dağıtmak için:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx zuplo deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adım 2: İlk Rotanızı Tanımlayın
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;config/routes.oas.json&lt;/code&gt; dosyasını açın. OpenAPI 3 dokümanı içinde aşağıdaki gibi bir rota ekleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"openapi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"info"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Acme Ağ Geçidi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"paths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"/v1/products"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ürünleri listele"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"operationId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"list-products"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"x-zuplo-route"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"corsPolicy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"anything-goes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"urlForwardHandler"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${env.ORIGIN_URL}"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"policies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"inbound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"responses"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"200"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Başarılı"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;x-zuplo-route&lt;/code&gt; altında handler ve policy’leri tanımlarsınız. &lt;code&gt;${env.ORIGIN_URL}&lt;/code&gt; ortam değişkeni ile farklı backend’lere yönlendirme yapabilirsiniz.&lt;/p&gt;

&lt;p&gt;Ortam değişkenini portaldan veya yerelde &lt;code&gt;config/.env&lt;/code&gt; dosyasına ekleyin. Kaydedin, değişiklikler anında yansır. Test için &lt;code&gt;http://localhost:9000/v1/products&lt;/code&gt; adresine gidin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 3: API Anahtarı Kimlik Doğrulaması Ekleyin
&lt;/h2&gt;

&lt;p&gt;Kamuya açık API’ler için kimlik doğrulama gerekir. Zuplo, yönetilen API anahtarı servisi sağlar.&lt;/p&gt;

&lt;p&gt;Rota dosyanızda inbound policy’yi ekleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"policies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inbound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy tanımını &lt;code&gt;config/policies.json&lt;/code&gt; içerisine ekleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-key-inbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ApiKeyInboundPolicy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"allowUnauthenticatedRequests"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Portal üzerinden Hizmetler &amp;gt; API Anahtar Servisi'ne gidin, “Tüketici Oluştur” ile yeni bir API anahtarı üretin.&lt;/p&gt;

&lt;p&gt;Başlık olmadan test edin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; https://PROJENIZ.zuplo.app/v1/products
&lt;span class="c"&gt;# HTTP/2 401&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Doğru başlıkla tekrar deneyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; https://PROJENIZ.zuplo.app/v1/products &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer SIZIN_API_ANAHTARINIZ"&lt;/span&gt;
&lt;span class="c"&gt;# HTTP/2 200&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dilerseniz OpenAPI dökümanı ile &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;'da test ortamı kurabilir, API anahtarınızı ortam değişkeni olarak bağlayabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 4: Hız Sınırı Ekleyin
&lt;/h2&gt;

&lt;p&gt;API’nizi hız limiti olmadan yayınlamayın. Aşağıdaki şekilde inbound policy’lere ekleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"policies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inbound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-key"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy tanımı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-inbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RateLimitInboundPolicy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"rateLimitBy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sub"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"requestsAllowed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"timeWindowMinutes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Her müşteri için 60 istek/dk sınırı. Aşağıdaki betikle test edin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..70&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s2"&gt;"%{http_code}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    https://PROJENIZ.zuplo.app/v1/products &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer SIZIN_API_ANAHTARINIZ"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;uniq&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;60 satır &lt;code&gt;200&lt;/code&gt;, 10 satır &lt;code&gt;429&lt;/code&gt; görmelisiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 5: İstek Yüklerini Doğrulayın
&lt;/h2&gt;

&lt;p&gt;Bir &lt;code&gt;POST&lt;/code&gt; rotanız varsa, gövde şemasını OpenAPI ile tanımlayın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"/v1/products"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ürün oluştur"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"operationId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create-product"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestBody"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"application/json"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"priceCents"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minLength"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"priceCents"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"integer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minimum"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"enum"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"food"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"drink"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"x-zuplo-route"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;yukarıdakiyle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;aynı&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;*/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"policies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"inbound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="s2"&gt;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="s2"&gt;"validate-request"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy tanımı:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"validate-request"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"open-api-request-validation-inbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"OpenApiRequestValidationInboundPolicy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"validateBody"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reject"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eksik veya hatalı gövdeler gateway’de 400 ile reddedilir. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile başarılı, eksik alanlı ve hatalı enum’lu fonksiyon testleri oluşturun.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 6: Özel TypeScript Policy Yazın
&lt;/h2&gt;

&lt;p&gt;Hazır policy’ler çoğu ihtiyacı karşılar. Ancak özel mantık gerekirse, örneğin ücretli müşterilere farklı cache davranışı eklemek için:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;modules/tiered-cache.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;HttpProblems&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@zuplo/runtime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;PolicyOptions&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;paidPlanHeader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;paidMaxAge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;PolicyOptions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cache-Control&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no-store&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cache-Control&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s2"&gt;`public, max-age=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;paidMaxAge&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Cache header set for plan=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy olarak ekleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tiered-cache"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"custom-code-outbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"default"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(./modules/tiered-cache)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"paidPlanHeader"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"x-plan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"paidMaxAge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rota dosyasında outbound policy olarak referans verin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"policies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inbound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-key"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"outbound"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"tiered-cache"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu policy’yi Jest veya Vitest ile birim test edebilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 7: Uca Dağıtım
&lt;/h2&gt;

&lt;p&gt;Git ile dağıtım yapın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Kimlik doğrulama, hız limiti ve cache policy eklendi"&lt;/span&gt;
git push origin feature/products-gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Her dal için önizleme ortamı oluşur ve URL’i log’da görebilirsiniz. Önizleme URL’sini &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile test edin. Her şey tamamsa ana dala birleştirin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
git merge feature/products-gateway
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Birleştirme otomatik olarak prod dağıtımını tetikler.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 8: Geliştirici Portalı Oluşturun
&lt;/h2&gt;

&lt;p&gt;Portalınız &lt;code&gt;https://PROJENIZ.developers.zuplo.com&lt;/code&gt; adresinde barındırılır. İçerik:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Her rota için OpenAPI şeması, açıklama ve deneme konsolu&lt;/li&gt;
&lt;li&gt;cURL, JS, Python, Go ve diğer dillerde kod örnekleri&lt;/li&gt;
&lt;li&gt;Otomatik API anahtarı oluşturma&lt;/li&gt;
&lt;li&gt;Markalama kontrolleri: Geliştirici Portalı &amp;gt; Ayarlar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenAPI şemanız yeterliyse, portal ekstra iş gerektirmez. Özelleştirmek için &lt;a href="https://github.com/zuplo/zudoku" rel="noopener noreferrer"&gt;Zuplo Geliştirici Portalı&lt;/a&gt; kodunu çatallayabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 9: Tümünü Apidog ile Test Edin
&lt;/h2&gt;

&lt;p&gt;Gateway’iniz yayında olduğunda, her rota ve policy’i Apidog ile test edin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogdwuct2qhdh0f7n983r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogdwuct2qhdh0f7n983r.png" alt="Apidog ile test" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Önerilen süreç:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenAPI şemanızı &lt;code&gt;https://PROJENIZ.zuplo.app/openapi&lt;/code&gt; üzerinden içe aktarın.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;local&lt;/code&gt;, &lt;code&gt;preview&lt;/code&gt;, &lt;code&gt;production&lt;/code&gt; ortamları oluşturun ve uygun base_url/api_key girin.&lt;/li&gt;
&lt;li&gt;Her rota için başarılı, kimlik doğrulama hatalı ve hız limiti tetikleyen örnekler oluşturun.&lt;/li&gt;
&lt;li&gt;Apidog’un test senaryoları ile zincirli istekler kurun ve yanıtları doğrulayın.&lt;/li&gt;
&lt;li&gt;Dilediğiniz dilde kod örneklerini alın ve dokümanlarınıza ekleyin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Postman’dan geçiş için &lt;a href="http://apidog.com/blog/api-testing-without-postman-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API test rehberini&lt;/a&gt; izleyebilirsiniz. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog’u indirin&lt;/a&gt; ve sürecinize entegre edin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zuplo Kullanımı Hakkında Sık Sorulan Sorular
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bir rotayı spesifikasyonu değiştirmeden ortamlar arasında nasıl değiştiririm?
&lt;/h3&gt;

&lt;p&gt;Ortam değişkenleri kullanın. Her ortam için Ayarlar veya &lt;code&gt;config/.env&lt;/code&gt; dosyasına &lt;code&gt;ORIGIN_URL&lt;/code&gt; tanımlayın, handler’da &lt;code&gt;${env.ORIGIN_URL}&lt;/code&gt; kullanın.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo'yu çevrimdışı çalıştırabilir miyim?
&lt;/h3&gt;

&lt;p&gt;Evet. &lt;code&gt;npm run dev&lt;/code&gt; ile 9000 portunda local gateway ve 9100 portunda Route Designer açılır. API anahtarı servisi hariç tüm özellikler offline çalışır. API anahtarı için &lt;code&gt;npx zuplo link&lt;/code&gt; ile bulut hizmetine bağlanabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kötü bir dağıtımı nasıl geri alırım?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git revert&lt;/code&gt; ile son merge commit’ini geri alın ve push edin. Zuplo otomatik olarak eski sürümü yayına alır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dağıtım sırasında devam eden isteklere ne olur?
&lt;/h3&gt;

&lt;p&gt;Dağıtımlar uçta atomiktir. Devam eden istekler eski sürümü bitirir, yeni istekler yeni sürüme gider.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo'yu gRPC veya WebSockets ile kullanabilir miyim?
&lt;/h3&gt;

&lt;p&gt;Evet. &lt;code&gt;urlForwardHandler&lt;/code&gt; WebSocket yükseltmesini ve gRPC ise ilgili handler ile desteklenir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo API’mi AI araçlarına nasıl açarım?
&lt;/h3&gt;

&lt;p&gt;Rotalara MCP Server Handler ekleyin, OpenAPI şemanıza işaret edin ve işlemleri seçin. Policy’ler MCP istekleri için de geçerlidir. &lt;a href="https://zuplo.com/docs/mcp-server/introduction" rel="noopener noreferrer"&gt;MCP Server dökümantasyonu&lt;/a&gt; detaylıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Üretimde ağ geçidi ne kadar tutar?
&lt;/h3&gt;

&lt;p&gt;Ücretsiz katman ayda 100K istek kapsar. Builder planı aylık 25$’a 1M istek içerir, fazlası için 100K başına 100$ ücretlendirilir. Kurumsal fiyatlar için &lt;a href="https://zuplo.com/pricing" rel="noopener noreferrer"&gt;fiyatlandırma sayfasını&lt;/a&gt; inceleyin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sonuç
&lt;/h2&gt;

&lt;p&gt;Artık API anahtarı doğrulama, anahtar başına hız limiti, istek doğrulama, özel TypeScript outbound policy ve geliştirici portalı içeren, Git ile global edge’e dağıtılan bir Zuplo gateway’iniz var. Aynı proje ile preview, prod ve AI agent erişimi yönetebilirsiniz.&lt;/p&gt;

&lt;p&gt;Bunu stabil tutmanın yolu, test döngüsüdür. Her önizleme merge etmeden &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile kimlik doğrulama hatalarını, eksik şema alanlarını ve yanlış hız limitlerini önceden yakalayın. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog’u indirin&lt;/a&gt; ve API gateway’inize bağlayın.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zuplo API Ağ Geçidi Nedir?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Mon, 27 Apr 2026 06:36:31 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/zuplo-api-ag-gecidi-nedir-5n8</link>
      <guid>https://forem.com/tobiass_hoffmann/zuplo-api-ag-gecidi-nedir-5n8</guid>
      <description>&lt;p&gt;Çoğu API ağ geçidi hâlâ 2014 operasyon ekibi için tasarlanmış gibi hissettiriyor. YAML dosyalarını yönetiyorsunuz, kontrol düzlemiyle uğraşıyorsunuz ve değişikliklerinizi uygulamak için küme erişimi olan birinden yardım bekliyorsunuz. Zuplo bu modeli tersine çeviriyor: Rotalarınızın bir Git deposunda yaşadığı, politikalarınızı TypeScript ile yazabildiğiniz ve her taahhüdün saniyeler içinde 300'den fazla küresel konuma dağıtıldığı, programlanabilir ve uç-yerel bir API ağ geçidi. Bu yazıda Zuplo API ağ geçidinin yeteneklerini, Kong ve AWS API Gateway'den nasıl ayrıştığını, fiyatlandırmasını ve otuz dakikadan kısa sürede ilk ağ geçidinizi nasıl kuracağınızı adım adım bulacaksınız. Ayrıca yönlendirme, kimlik doğrulama ve hız sınırlama için örnek kodları ve üretime geçmeden önce &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile uç noktalarınızı nasıl test edebileceğinizi anlatan pratik başlıklar da mevcut.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&amp;lt;!--kg-card-begin: html--&amp;gt;&lt;/p&gt;
&lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
    &amp;lt;!--kg-card-end: html--&amp;gt;

&lt;p&gt;Zuplo, bir zamanlar Kong, Apigee ve AWS API Gateway'in hâkim olduğu bir kategoride rekabet ediyor. Temel yaklaşım: Geliştiriciler gerçek bir programlama dili ve modern bir iş akışıyla çalışır, operasyonlar yönetilen bir hizmet alır, ürün ise yerleşik para kazanma araçlarına sahip olur. Bu yazı, bu farkları ve pratik iş akışını özetliyor.&lt;/p&gt;
&lt;h2&gt;
  
  
  ÖZET
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Zuplo, 300'den fazla Cloudflare veri merkezinde 50ms'den kısa gecikme ve sıfır soğuk başlatma ile rotalarınızı çalıştıran, tamamen yönetilen uç-yerel bir API ağ geçididir.&lt;/li&gt;
&lt;li&gt;Yapılandırma GitOps tabanlıdır; ağ geçidiniz bir Git deposunda yaşar, dağıtımlar CI/CD üzerinden yapılır.&lt;/li&gt;
&lt;li&gt;Politikalar, YAML/Lua yerine TypeScript ile yazılır, tam IDE desteği vardır.&lt;/li&gt;
&lt;li&gt;Ücretsiz katman, sınırsız ortam, API anahtarı ve geliştirici portalı ile ayda 100.000 isteği kapsar.&lt;/li&gt;
&lt;li&gt;API anahtarı kimlik doğrulama, JWT, OAuth2, hız sınırlama, istek doğrulama, otomatik geliştirici portalı ve Stripe ile para kazanma dahili olarak gelir.&lt;/li&gt;
&lt;li&gt;Zuplo artık MCP Sunucu İşleyicisi sunuyor; böylece herhangi bir rota Claude, Codex, Cursor gibi MCP istemcilerine açılabilir.&lt;/li&gt;
&lt;li&gt;Her Zuplo rotasını üretime almadan önce uçtan uca &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile test edin.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Zuplo Nedir?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://zuplo.com/docs/api-management/introduction" rel="noopener noreferrer"&gt;Zuplo, üç temel ilkeye dayalı bir API yönetim platformudur&lt;/a&gt;: yapılandırma yerine kod, bölge yerine uç, GUI yerine Git. Cloudflare’in uç ağında tamamen yönetilen bir hizmet olarak çalışır; bir dağıtım yaptığınızda 300+ veri merkezine otomatik olarak ulaşır.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06t6wd5qu6bick3ihqgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06t6wd5qu6bick3ihqgi.png" alt="zuplo-architecture" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Çoğu ağ geçidi yapılandırmanızı bir YAML dosyasında ya da kontrol düzlemi veritabanında saklarken, Zuplo ağ geçidinizi bir TypeScript projesi olarak ele alır. Temel dosya yapısı:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;routes.oas.json&lt;/code&gt;: Uç noktaları tanımlar&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;modules/&lt;/code&gt;: Özel TypeScript modülleri (politikalar)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zuplo.json&lt;/code&gt;: Politika ve yapılandırma dosyası&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub’a push yaptığınızda platform otomatik olarak oluşturur, doğrular ve dağıtır.&lt;/p&gt;

&lt;p&gt;Platform REST, GraphQL, gRPC, WebSockets ve SOAP’u destekler. SOC 2 Tip II uyumlu, AWS, Azure ve GCP üzerinde çalışabiliyor; kendi kendine barındırılan Kubernetes seçeneği de var. Fiyatlandırma istek hacmine göre; detaylar için &lt;a href="https://zuplo.com/pricing" rel="noopener noreferrer"&gt;Zuplo fiyatlandırma sayfasına&lt;/a&gt; bakabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchc3a093df7p7muegdtm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchc3a093df7p7muegdtm.png" alt="zuplo-pricing" width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Geliştiriciler Neden Kong, Apigee ve AWS API Gateway Yerine Zuplo'yu Seçiyor?
&lt;/h2&gt;

&lt;p&gt;Her ağ geçidinin kendine özgü bir karakteri var. &lt;a href="http://apidog.com/blog/apigee-vs-kong/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Kong&lt;/a&gt; maksimum kontrol isteyen, karşılığında Lua uzmanlığı gerektiren açık kaynaklı bir ağır sıklet. &lt;a href="http://apidog.com/blog/apigee-vs-kong/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apigee&lt;/a&gt; kurumsal segmentte, derin analizler ve yüksek öğrenme eğrisine sahip. AWS API Gateway ise AWS kullananlar için varsayılan, ancak geliştirici portalı zayıf ve Lambda entegrasyonu soğuk başlatma problemi taşıyor.&lt;/p&gt;

&lt;p&gt;Zuplo, platform mühendisliği ekibi olmayan küçük ama kurumsal ihtiyaçlardaki ekipler için ideal. Fark yaratan noktalar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;YAML değil, kod:&lt;/strong&gt; Bir hız sınırlama politikası Zuplo’da üç satır TypeScript ile yazılır. Kong’da aynı iş için 15+ satır YAML gerekir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geliştirici portalı dahili:&lt;/strong&gt; Kong’da portal sadece kurumsal plana dahildir. Zuplo’da ücretsiz katman da dâhil, OpenAPI spesifikasyonundan otomatik portal oluşturulur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Varsayılan GitOps:&lt;/strong&gt; Tüm değişiklikler çekme isteğidir. Otomatik inceleme, denetim ve revert desteği var.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uç-yerel, soğuk başlatma yok:&lt;/strong&gt; Cloudflare Workers üzerinde çalışır. İstekler milisaniyeler içinde en yakın veri merkezinden ulaşır.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eğer ekibinizde Kong/Apigee yatırımı varsa ve operasyonel yük sorun değilse geçiş şart değil. Ancak yeni başlıyorsanız, Zuplo iş akışında belirgin avantaj sunar.&lt;/p&gt;
&lt;h2&gt;
  
  
  Zuplo API Ağ Geçidinin Temel Özellikleri
&lt;/h2&gt;
&lt;h3&gt;
  
  
  TypeScript Öncelikli Programlanabilirlik
&lt;/h3&gt;

&lt;p&gt;Ağ geçidi davranışı, rotalarınızın yanında TypeScript dosyalarında tanımlanır. İsteğe özel gelen/giden politikalar, fonksiyon olarak yazılır. Tam tip desteği, otomatik tamamlama ve test kolaylığı sağlar.&lt;/p&gt;

&lt;p&gt;Örnek: Yanıttan dahili bir başlığı kaldıran politika:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@zuplo/runtime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-internal-trace-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bu dosyayı &lt;code&gt;modules/strip-internal-header.ts&lt;/code&gt; olarak ekleyin, rotada referans verin, Git’e itin—hepsi bu.&lt;/p&gt;

&lt;h3&gt;
  
  
  60+ Hazır Politika
&lt;/h3&gt;

&lt;p&gt;API anahtarı kimlik doğrulama, JWT doğrulama, OAuth 2.0, hız sınırlama, istek/yanıt doğrulama, CORS, IP listeleme, istek dönüşümü ve upstream entegrasyonları için 60’tan fazla hazır politika. Sadece rota tanımında ekleyin, kod yazmak gerekmez.&lt;/p&gt;

&lt;h3&gt;
  
  
  Otomatik Oluşan Geliştirici Portalı
&lt;/h3&gt;

&lt;p&gt;OpenAPI spesifikasyonunuza bağlayın; etkileşimli deneme, cURL/JS/Python/Go örnekleri, self-servis API anahtar yönetimiyle portal anında hazır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Yerleşik API Para Kazanma
&lt;/h3&gt;

&lt;p&gt;Stripe ile entegre olarak API erişimi satabilirsiniz. Plan tanımlayın, Stripe bağlayın, ödemeler ve abonelik yönetimi otomatik çalışır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Yapay Zeka Araçları için MCP Sunucu İşleyicisi
&lt;/h3&gt;

&lt;p&gt;OpenAPI spesifikasyonunuzu yönlendirin, hangi işlemleri açacağınızı seçin. Böylece Claude Code, OpenAI Codex, Cursor ve diğer MCP istemcileri API’nizi otomatik kullanabilir. Standart politikalara ek olarak AI agent’lar için de kimlik doğrulama ve hız sınırlama çalışır. Detaylı rehber: &lt;a href="https://zuplo.com/docs/mcp-server/introduction" rel="noopener noreferrer"&gt;API’leri MCP ile açma&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uç Dağıtım, 50ms Altı Gecikme
&lt;/h3&gt;

&lt;p&gt;Her dağıtım Cloudflare’in 300+ bölgesine otomatik gider. Hiçbir ek yapılandırma gerekmez; her istek kullanıcıya en yakın uç noktadan yönlendirilir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zuplo Perde Arkasında Nasıl Çalışır?
&lt;/h2&gt;

&lt;p&gt;Bir istek uç konumda şu sırayla işlenir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Rota Eşleşmesi:&lt;/strong&gt; URL ve metot, &lt;code&gt;routes.oas.json&lt;/code&gt; ile eşleşir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gelen Politikalar:&lt;/strong&gt; API anahtarı, JWT, hız sınırlama, şema doğrulama gibi politikalar sırayla uygulanır.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;İşleyici:&lt;/strong&gt; Proxy, statik yanıt, özel TypeScript kodu veya MCP’ye çağrı yapılır.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giden Politikalar:&lt;/strong&gt; Yanıt dönüşümleri ve başlık manipülasyonu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yanıt:&lt;/strong&gt; Müşteriye döner; loglar ve metrikler gözlemlenebilirlik katmanına gider.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tüm pipeline Cloudflare Worker’da çalışır. Gecikme düşük, kapasite kullanımı optimize.&lt;/p&gt;

&lt;h2&gt;
  
  
  İlk Zuplo Ağ Geçidinizi Kurma
&lt;/h2&gt;

&lt;p&gt;30 dakikadan kısa sürede ilk çalışan ağ geçidinizi kurmak için adımlar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Kayıt ve Proje Oluşturma:&lt;/strong&gt; &lt;a href="https://zuplo.com" rel="noopener noreferrer"&gt;zuplo.com&lt;/a&gt;’dan kaydolun, yeni proje başlatın. GitHub entegrasyonu ile kendi deponuza bağlayın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAPI Spesifikasyonunu İçe Aktarın:&lt;/strong&gt; Mevcut bir OpenAPI spesiniz varsa, içe aktarın. Yoksa UI üzerinden rotaları oluşturun.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Anahtarı Kimlik Doğrulama Politikası Ekleyin:&lt;/strong&gt; Rota düzenleyicide &lt;code&gt;api-key-inbound&lt;/code&gt; politikasını ekleyin. Zuplo otomatik olarak tüketici veritabanı ve anahtar UI’si oluşturur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hız Sınırı Ekleyin:&lt;/strong&gt; &lt;code&gt;rate-limit-inbound&lt;/code&gt; politikasını, örneğin anahtar başına dakikada 100 istek ile ekleyin. Sadece rota dosyasına JSON bloğu eklemeniz yeterli.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dağıtın:&lt;/strong&gt; Dalınıza push yapın. Zuplo önizleme ortamı oluşturur, merge sonrası prod’a çıkar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ağ Geçidini Test Edin:&lt;/strong&gt; Yeni gateway URL’sine geçerli/geçersiz API anahtarı, aşılmış limit ve hatalı yüklerle istek göndermek için &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; kullanın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kurulum dakikalar içinde tamamlanır. Asıl zorluk rotaları iyi adlandırmak ve mantık ayrımını doğru yapmaktır.&lt;/p&gt;

&lt;h2&gt;
  
  
  TypeScript'te Özel Politikalar Yazma
&lt;/h2&gt;

&lt;p&gt;Hazır politikalar çoğu durumu kapsar. Özel gereksinimler için TypeScript ile yeni politika yazabilirsiniz. Örnek: İstekleri, upstream’e ulaşmadan önce dahili bir hizmetten gelen verilerle zenginleştirin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@zuplo/runtime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;UserContext&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pro&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;enterprise&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ZuploRequest&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Unauthorized&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;401&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lookupUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`https://internal.example.com/users/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lookupUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;INTERNAL_TOKEN&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;userResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User lookup failed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;502&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;userResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;UserContext&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-user-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-user-plan&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Burada:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Politika normal bir async fonksiyon, kolayca birim test edilebilir.&lt;/li&gt;
&lt;li&gt;Ortam değişkenlerine &lt;code&gt;context.environment&lt;/code&gt; ile erişilir, tip güvenli.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Response&lt;/code&gt; döndürmek işlem hattını kısa devre yapar (ör: kimlik doğrulama hatası).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2026'da Zuplo Fiyatlandırması
&lt;/h2&gt;

&lt;p&gt;Üç ana plan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ücretsiz, ayda 0$:&lt;/strong&gt; Ayda 100K istek, sınırsız ortam, sınırsız API anahtarı ve geliştirici portalı, 1 GB çıkış, 2 geliştirici.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Builder, ayda 25$:&lt;/strong&gt; 1M istek, 2 özel alan adı, 100K istek başına 1 GB çıkış, ek istek başı 100$.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise, 1.000$+ / ay:&lt;/strong&gt; Sınırsız istek ve alan adı, %99,5–%99,999 SLA, GitHub Enterprise/GitLab/Azure DevOps entegrasyonu, SSO, RBAC ve 7/24 destek.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI Ağ Geçidi ve Geliştirici Portalı ürünleri ayrı katmanlarda; güncel rakamlar için &lt;a href="https://zuplo.com/pricing" rel="noopener noreferrer"&gt;Zuplo fiyatlandırma sayfasına&lt;/a&gt; bakın.&lt;/p&gt;

&lt;p&gt;AWS API Gateway milyon REST isteği başına 3.50$, veri transferi ve Lambda maliyetleri eklenir. Kong’un kurumsal katmanı genelde Zuplo Enterprise’dan daha pahalı. Sadece ücretsiz katman bile erken aşama projeler için fazlasıyla yeterli.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zuplo Ne Zaman Doğru Tercih, Ne Zaman Değil?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Zuplo’yu seçin:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Yönetilen ağ geçidi istiyor, Kubernetes üstünde Kong kurmak istemiyorsanız&lt;/li&gt;
&lt;li&gt;Ekibiniz TypeScript/JavaScript’e hâkimse&lt;/li&gt;
&lt;li&gt;Ayrı bir satıcı kullanmadan geliştirici portalı istiyorsanız&lt;/li&gt;
&lt;li&gt;API’den gelir elde edip Stripe faturalandırmasını entegre etmek istiyorsanız&lt;/li&gt;
&lt;li&gt;API’nizi AI agent’lara açmak ve MCP desteği almak istiyorsanız&lt;/li&gt;
&lt;li&gt;Trafiğiniz küresel ve uç gecikmesi kritikse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Zuplo uygun değil:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tam açık kaynak kod kontrolü gerekiyorsa (Kong)&lt;/li&gt;
&lt;li&gt;Tamamen şirket içi, internete çıkışı olmayan bir mimariniz varsa (Kong/Tyk self-hosted)&lt;/li&gt;
&lt;li&gt;NGINX’in dahili özelliklerine erişmeniz gerekiyorsa&lt;/li&gt;
&lt;li&gt;Zaten Apigee veya MuleSoft’a derin yatırımınız varsa&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Zuplo Ağ Geçidinizi Apidog ile Test Etme
&lt;/h2&gt;

&lt;p&gt;Gateway’iniz önizleme ortamında yayına alındıktan sonra, üretime geçmeden önce tüm rotaları ve politikaları kapsamlıca test edin. Bu noktada bir API istemcisi şart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, OpenAPI spesifikasyonunuzu direkt içe aktarır ve Zuplo rotalarınızı test paketiyle eşleştirir. Şunları kolayca yapabilirsiniz:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Her rotayı geçerli/geçersiz API anahtarı ile çağırıp kimlik doğrulama politikalarını doğrulayın&lt;/li&gt;
&lt;li&gt;Hatalı yüklerle istek doğrulamasını test edin&lt;/li&gt;
&lt;li&gt;Hız sınırlama eşiklerinde rate limit politikalarını zorlayın&lt;/li&gt;
&lt;li&gt;Ortam değişkenleri ile önizleme/üretim URL ve anahtarlarını yönetin&lt;/li&gt;
&lt;li&gt;cURL, JS, Python ve Go kod örnekleri oluşturun&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ayrıca Apidog’un otomatik test senaryoları ile, manuel script yazmaya gerek kalmadan hızlıca kapsamlı testler yapabilirsiniz. VS Code uzantısı için &lt;a href="http://apidog.com/blog/how-to-use-apidog-inside-vscode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;buraya&lt;/a&gt;, Postman alternatifi için &lt;a href="http://apidog.com/blog/api-testing-without-postman-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;buraya&lt;/a&gt; bakabilirsiniz. Başlamak için &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zuplo API Ağ Geçidi Hakkında Sıkça Sorulan Sorular
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Zuplo Açık Kaynak mı?
&lt;/h3&gt;

&lt;p&gt;Çekirdek çalışma zamanı kapalı kaynaklı, ancak geliştirici portalı ve bazı yardımcı kütüphaneler açık kaynak. Kendi kendine barındırılan Kubernetes seçeneği mevcut; çoğu ekip yönetilen hizmeti tercih ediyor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo Kendi Altyapımda Çalışabilir mi?
&lt;/h3&gt;

&lt;p&gt;Evet. Enterprise planında self-hosted Kubernetes seçeneği var; karşılığında küresel uç dağıtımdan vazgeçersiniz ve operasyon sizde olur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo, Cloudflare API Shield ile Karşılaştırıldığında?
&lt;/h3&gt;

&lt;p&gt;API Shield temel güvenlik (schema validation, abuse detection, mTLS) sunar. Zuplo ise tam yönetim platformu: yönlendirme, politika, portal, para kazanma, MCP. İhtiyaçlarınıza göre ikisini birlikte de kullanabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo Mevcut OpenAPI Spesifikasyonumla Çalışıyor mu?
&lt;/h3&gt;

&lt;p&gt;Evet. Spesifikasyonu içe aktarın, rotalar ve portal otomatik oluşur; istek doğrulama aynı şemayı kullanır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo Ağ Geçidimi Claude veya Codex Gibi AI Agent’lara Açabilir miyim?
&lt;/h3&gt;

&lt;p&gt;Evet, MCP Sunucu İşleyicisi ile. OpenAPI spesini yönlendirip hangi işlemleri açacağınızı seçersiniz, AI agent’lar aynı kimlik doğrulama ve hız sınırlama kurallarıyla erişir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bir Zuplo Dağıtımı Ne Kadar Sürer?
&lt;/h3&gt;

&lt;p&gt;Push-to-deploy döngüsü önizleme ortamı için genellikle 60 saniyeden kısa sürer. Üretim yükseltmeleri daha da hızlıdır; bakım penceresi yoktur.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloudflare Çökerse Ne Olur?
&lt;/h3&gt;

&lt;p&gt;Zuplo, Cloudflare uç ağında çalışır. Bölgesel bir kesinti o bölgeyi etkiler. Enterprise planı için çoklu bulut seçenekleri var. Standart ekipler Cloudflare’in genel güvenilirliğine güvenir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sonuç
&lt;/h2&gt;

&lt;p&gt;Zuplo, operasyonel karmaşa olmadan kurumsal API özellikleri isteyen ekipler için güçlü bir seçenektir. TypeScript tabanlı politikalar, GitOps dağıtım, otomatik geliştirici portalı, entegre para kazanma ve AI agent’lar için MCP desteği ile yalnızca bir yönlendirme katmanı değil, tam bir platform sunar. Ücretsiz katman gerçek üretim için yeterlidir; daha büyük ihtiyaçlar için Enterprise mevcut.&lt;/p&gt;

&lt;p&gt;Denemek için, gerçek API’nizle 30 dakikalık kurulumu tamamlayın, tüm politikaları &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile test edin ve kararınızı gerçek kullanım üzerinden verin. Yönetilen uç gateway ve güçlü bir test istemcisi, "API’miz var"dan "ürünümüz var"a geçişin en hızlı yoludur. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt; ve test sürecine başlayın.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DeepSeek V4'ü Yerel Olarak Nasıl Çalıştırılır?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Fri, 24 Apr 2026 05:19:23 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/deepseek-v4u-yerel-olarak-nasil-calistirilir-25go</link>
      <guid>https://forem.com/tobiass_hoffmann/deepseek-v4u-yerel-olarak-nasil-calistirilir-25go</guid>
      <description>&lt;p&gt;DeepSeek V4, 23 Nisan 2026'da Hugging Face üzerinde MIT lisanslı ağırlıklarıyla yayınlandı. Bu lisans, kendi donanımında ileri seviye yapay zeka çalıştırmak isteyen ekipler için büyük bir avantaj. V4-Flash (284B toplam, 13B aktif parametre) FP8'de iki adet H100'e sığarken, V4-Pro (1.6T toplam, 49B aktif parametre) bir küme gerektiriyor ve kod/muhakeme konularında GPT-5.5 ve Claude Opus 4.6 ile rekabetçi şekilde çalışıyor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bu rehberde, DeepSeek V4'ü yerelde kurmak için donanım gereksinimlerinden başlayıp, niceleme (quantization) işlemlerine, vLLM ve SGLang kurulumlarına, araç entegrasyonu ve Apidog ile üretim öncesi doğrulamaya kadar tüm adımlar pratik bir şekilde ele alınmıştır.&lt;/p&gt;

&lt;p&gt;Ürüne genel bakış için &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 nedir&lt;/a&gt; makalesine göz atın. Barındırılan API entegrasyonu için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API nasıl kullanılır&lt;/a&gt;. Maliyet analizi için &lt;a href="http://apidog.com/blog/deepseek-v4-api-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API fiyatlandırması&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;V4-Flash&lt;/strong&gt;, FP8'de 2 × H100 80GB veya INT4'te 1 × H100 üzerinde çalışır. FP8 ağırlıklar ~500GB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro&lt;/strong&gt;, FP8 modunda üretim için 16+ H100 gerektirir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vLLM&lt;/strong&gt;, OpenAI uyumlu sunucu kurmanın en hızlı yoludur. &lt;code&gt;vllm&amp;gt;=0.9.0&lt;/code&gt; V4 desteğiyle gelir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SGLang&lt;/strong&gt;, araç kullanımı ve yapılandırılmış çıktı isteyen ekipler için alternatiftir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWQ INT4&lt;/strong&gt; veya &lt;strong&gt;GPTQ INT4&lt;/strong&gt; quantization, V4-Flash'i tek bir 80GB karta yaklaşık %5 kalite kaybıyla sığdırır.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http://localhost:8000/v1&lt;/code&gt; adresine yönlendirme ve barındırılan API koleksiyonunu tekrar kullanmak için &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; kullanabilirsiniz.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kimler kendi kendine barındırmalı?
&lt;/h2&gt;

&lt;p&gt;Aşağıdaki ekipler için self-hosting doğru tercihtir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Uyumluluk gerektirenler&lt;/strong&gt;: Sağlık, finans, hukuk, savunma gibi verinin dışarı çıkamayacağı alanlarda; MIT lisansı sayesinde veri kullanımı ve dağıtımında kısıtlama yoktur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Büyük ve stabil iş yükleri&lt;/strong&gt;: V4-Pro API fiyatları giriş başına 1.74 $/M, çıkış başına 3.48 $/M. Ayda 200 milyar jetonu aşan işlerde donanım ekonomisi avantajlıdır.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;İnce ayar ve araştırma&lt;/strong&gt;: Temel checkpointler sürekli ön eğitim ve alan adaptasyonu için uygundur; MIT lisansı ile türetilmiş modelleri ticari olarak kullanabilirsiniz.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Küçük prototipler, GPU yönetimi deneyimi olmayan ekipler ve aylık 200 dolar altında API kullananlar için self-hosting önerilmez.&lt;/p&gt;

&lt;h2&gt;
  
  
  Donanım Gereksinimleri
&lt;/h2&gt;

&lt;p&gt;DeepSeek V4, FP4 + FP8 mixed precision ile daha verimli VRAM kullanır.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Varyant&lt;/th&gt;
&lt;th&gt;Toplam parametre&lt;/th&gt;
&lt;th&gt;Aktif parametre&lt;/th&gt;
&lt;th&gt;FP8 VRAM&lt;/th&gt;
&lt;th&gt;INT4 VRAM&lt;/th&gt;
&lt;th&gt;Minimum kart&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V4-Flash&lt;/td&gt;
&lt;td&gt;284B&lt;/td&gt;
&lt;td&gt;13B&lt;/td&gt;
&lt;td&gt;~500GB&lt;/td&gt;
&lt;td&gt;~140GB&lt;/td&gt;
&lt;td&gt;2 × H100 80GB (FP8) veya 1 × H100 (INT4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V4-Pro&lt;/td&gt;
&lt;td&gt;1.6T&lt;/td&gt;
&lt;td&gt;49B&lt;/td&gt;
&lt;td&gt;~2.4TB&lt;/td&gt;
&lt;td&gt;~700GB&lt;/td&gt;
&lt;td&gt;16 × H100 80GB (FP8) veya 8 × H100 (INT4)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notlar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MoE belleği toplamdır, aktif olan değildir.&lt;/strong&gt; Bellek hesabında tüm uzmanlar için VRAM gerekir, yalnızca aktif parametreler işlem maliyetini etkiler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;H200 ve MI300X&lt;/strong&gt; alternatif olarak kullanılabilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tüketici GPU'ları uygun değil&lt;/strong&gt;; V4-Flash bile 24GB RTX 5090'da çalışmaz.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apple Silicon (M3/M4 Max)&lt;/strong&gt; sadece test/development için uygundur, prodüksiyon için değil.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adım 1: Ağırlıkları İndirin
&lt;/h2&gt;

&lt;p&gt;Resmi HuggingFace depoları:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash" rel="noopener noreferrer"&gt;deepseek-ai/DeepSeek-V4-Flash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro" rel="noopener noreferrer"&gt;deepseek-ai/DeepSeek-V4-Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;İnce ayar için: &lt;code&gt;deepseek-ai/DeepSeek-V4-Flash-Base&lt;/code&gt; ve &lt;code&gt;DeepSeek-V4-Pro-Base&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kurulum ve indirme:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="s2"&gt;"huggingface_hub[cli]"&lt;/span&gt;
huggingface-cli login

huggingface-cli download deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir&lt;/span&gt; ./models/deepseek-v4-flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir-use-symlinks&lt;/span&gt; False
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;V4-Flash için ~500GB, V4-Pro için birkaç TB disk alanı ayırın. Çin içi için &lt;a href="https://modelscope.cn/models/deepseek-ai/DeepSeek-V4-Flash" rel="noopener noreferrer"&gt;modelscope.cn&lt;/a&gt; hızlı bir alternatif.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 2: Sunum Motoru Seçimi
&lt;/h2&gt;

&lt;p&gt;İki ana seçenek:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;vLLM:&lt;/strong&gt; En geniş topluluk ve en iyi OpenAI uyumluluğu. Varsayılan öneri.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SGLang:&lt;/strong&gt; Daha iyi araç kullanımı ve yapılandırılmış çıktı isteyenler için.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Her ikisi de V4'ü kutudan çıkar çıkmaz destekliyor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 3: V4-Flash'i vLLM ile Sunmak
&lt;/h2&gt;

&lt;p&gt;Kurulum ve başlatma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"vllm&amp;gt;=0.9.0"&lt;/span&gt;

vllm serve deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 1048576 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dtype&lt;/span&gt; auto &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-prefix-caching&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kritik parametreler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--tensor-parallel-size 2&lt;/code&gt;: 2 H100 kullanır; daha fazla kart için artırılabilir.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--max-model-len 1048576&lt;/code&gt;: 1M tokenlık pencere; VRAM için düşürebilirsiniz.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--enable-prefix-caching&lt;/code&gt;: Tekrarlayan öneklerde hızlandırma sağlar.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--dtype auto&lt;/code&gt;: FP8 karma hassasiyeti için.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Açılan sunucu OpenAI uyumlu istemcilerle &lt;code&gt;http://localhost:8000/v1&lt;/code&gt; üzerinden kullanılabilir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 4: V4-Pro'yu vLLM ile Sunmak
&lt;/h2&gt;

&lt;p&gt;V4-Pro için daha fazla paralellik gerekir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve deepseek-ai/DeepSeek-V4-Pro &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 8 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--pipeline-parallel-size&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 524288 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-prefix-caching&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bağlam uzunluğunu VRAM'e göre ayarlayın. Paralellik parametreleri küme/çoklu GPU için optimize edilmiştir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 5: SGLang ile Sunmak (Araç Kullanımı için Alternatif)
&lt;/h2&gt;

&lt;p&gt;Kurulum ve sunucu başlatma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"sglang[all]&amp;gt;=0.4.0"&lt;/span&gt;

python &lt;span class="nt"&gt;-m&lt;/span&gt; sglang.launch_server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model-path&lt;/span&gt; deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tp&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--context-length&lt;/span&gt; 1048576 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 30000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SGLang, &lt;code&gt;http://localhost:30000/v1&lt;/code&gt; adresinde OpenAI uyumlu API sunar. Daha iyi fonksiyon çağrısı ve JSON çıktısı için &lt;code&gt;lang&lt;/code&gt; DSL'si kullanılabilir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 6: Tek GPU’da Çalıştırmak için Niceleme
&lt;/h2&gt;

&lt;p&gt;INT4 quantization ile V4-Flash, tek 80GB kartta küçük bir kalite kaybıyla çalışır.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWQ (Önerilir)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;autoawq

python &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

model_path = './models/deepseek-v4-flash'
out_path = './models/deepseek-v4-flash-awq'
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.quantize(tokenizer, quant_config={'w_bit': 4, 'q_group_size': 128})
model.save_quantized(out_path)
tokenizer.save_pretrained(out_path)
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  GPTQ
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;auto-gptq
&lt;span class="c"&gt;# GPTQ quantization için AWQ ile benzer talimatları takip edebilirsiniz.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Niceleme sonrası vLLM ile başlatırken &lt;code&gt;--quantization awq&lt;/code&gt; veya &lt;code&gt;--quantization gptq&lt;/code&gt; parametresini ekleyin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adım 7: Apidog ile Test Etme
&lt;/h2&gt;

&lt;p&gt;Üretim trafiği göndermeden önce yerel sunucunuzu Apidog ile test edin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-228.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-228.png" alt="" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Apidog'u indirin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http://localhost:8000/v1/chat/completions&lt;/code&gt; adresine yönlendirilmiş bir koleksiyon oluşturun.&lt;/li&gt;
&lt;li&gt;Barındırılan API'ye gönderdiğiniz aynı test isteklerini kullanın, yanıtları karşılaştırın.&lt;/li&gt;
&lt;li&gt;KV önbelleğini test etmek için 500K tokenlık uzun bir bağlam gönderin.&lt;/li&gt;
&lt;li&gt;Araç çağırma akışını baştan sona test edin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Barındırılan DeepSeek V4 API koleksiyonu&lt;/a&gt; temel URL değişikliğiyle lokal sunucuda aynen çalışır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gözlemlenebilirlik ve İzleme
&lt;/h2&gt;

&lt;p&gt;Başlangıçtan itibaren şu metrikleri izleyin:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Saniye başına token&lt;/strong&gt; (input/output): vLLM &lt;code&gt;/metrics&lt;/code&gt; endpointinde Prometheus formatında sunar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU kullanımı&lt;/strong&gt;: &lt;code&gt;nvidia-smi&lt;/code&gt; veya DCGM ile kontrol edin. &amp;lt;70% ise batch size'ı artırın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KV cache isabet oranı&lt;/strong&gt;: &lt;code&gt;--enable-prefix-caching&lt;/code&gt; ile ölçülür, düşüş varsa promptlarda değişiklik olabilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;İstek gecikmeleri (p50/p95/p99)&lt;/strong&gt;: Yüksek p99, darboğaz işareti olabilir.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tüm metrikleri Grafana veya mevcut izleme altyapınıza entegre edin.&lt;/p&gt;

&lt;h2&gt;
  
  
  V4 Temel Checkpointlerde İnce Ayar
&lt;/h2&gt;

&lt;p&gt;Checkpointler üzerinden SFT ve LoRA ile ince ayar yapmak için standart pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"torch&amp;gt;=2.6"&lt;/span&gt; transformers accelerate peft trl

&lt;span class="c"&gt;# V4-Flash-Base üzerinde LoRA ile SFT&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; trl sft &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model_name_or_path&lt;/span&gt; deepseek-ai/DeepSeek-V4-Flash-Base &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dataset_name&lt;/span&gt; your-org/your-sft-set &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output_dir&lt;/span&gt; ./models/v4-flash-custom &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--per_device_train_batch_size&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--gradient_accumulation_steps&lt;/span&gt; 16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--learning_rate&lt;/span&gt; 2e-5 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--bf16&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--use_peft&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--lora_r&lt;/span&gt; 64 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--lora_alpha&lt;/span&gt; 128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;V4-Pro üzerinde tam parametre ince ayarı büyük donanım gerektirir. Çoğu ekip için LoRA adaptörleri pratik bir çözümdür.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yaygın Tuzaklar
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Başlangıçta OOM:&lt;/strong&gt; &lt;code&gt;--max-model-len&lt;/code&gt; VRAM'i aşıyorsa veya &lt;code&gt;--tensor-parallel-size&lt;/code&gt; düşükse; bağlamı azaltın veya paralelliği artırın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yavaş ilk istek:&lt;/strong&gt; vLLM ilk istekte derleme yapar; test isteğiyle ısıtın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Araç kullanımı hataları:&lt;/strong&gt; DeepSeek kodlama şeması OpenAI'den farklı olabilir; uygun SDK sürümünü kullandığınızdan emin olun.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FP8 hataları (eski kartlar):&lt;/strong&gt; A100 FP8 desteklemez; BF16 kullanın ve 2x VRAM bekleyin.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Kendi Kendine Barındırma Ne Zaman Kârlı?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://apidog.com/blog/deepseek-v4-api-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Barındırılan DeepSeek V4 fiyatlandırması&lt;/a&gt; baz alınarak:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;V4-Flash (ayda 200B giriş + 20B çıkış token):&lt;/strong&gt; API'de ~33.6K$; 8 × H100 sunucu kirası ~20K$, self-hosted %40 avantajlı.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro (ayda 500B giriş + 50B çıkış):&lt;/strong&gt; API'de ~1.04M$; 16 × H100 cluster kirası ~35K$, self-hosted %95 avantajlı.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;V4-Flash için başabaş noktası aylık ~100B token; bunun altında barındırılan API daha uygun.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;V4-Flash'i tek bir A100'de çalıştırabilir miyim?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yoğun quantization ve kısa bağlamda evet, ama yavaş olacaktır (INT4 ile A100 80GB'da 5-15 token/sn).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4, LoRA ince ayarını destekliyor mu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Evet, temel checkpointleri ile TRL veya Axolotl pipeline'larını kullanabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yerel sunucu OpenAI uyumlu mu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Evet, vLLM ve SGLang &lt;code&gt;/v1/chat/completions&lt;/code&gt; ve &lt;code&gt;/v1/completions&lt;/code&gt; endpointleriyle uyumlu. &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Barındırılan API kılavuzu&lt;/a&gt; localhost'a doğrudan uygulanabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yerel olarak thinking mode nasıl etkinleştirilir?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
İstek gövdesine &lt;code&gt;thinking_mode: "thinking"&lt;/code&gt; veya &lt;code&gt;"thinking_max"&lt;/code&gt; ekleyin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yerel V4 sunucusundan stream yapılabilir mi?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Evet, &lt;code&gt;stream: true&lt;/code&gt; ile OpenAI API'sinde olduğu gibi kullanabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Donanım satın almadan önce deneme yapmak için en ucuz yol nedir?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
RunPod veya Lambda'dan saatlik H100 kiralayıp V4-Flash'i INT4 modunda deneyin; 10-30$'lık bir test ile hızlıca karar verebilirsiniz.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DeepSeek V4 API Fiyatları</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:30:26 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/deepseek-v4-api-fiyatlari-218j</link>
      <guid>https://forem.com/tobiass_hoffmann/deepseek-v4-api-fiyatlari-218j</guid>
      <description>&lt;p&gt;DeepSeek, modellerin piyasaya sürüldüğü gün olan 23 Nisan 2026'da V4 fiyatlandırmasını duyurdu ve bu fiyatlar, ileri seviye yapay zeka için maliyet tabanını yeniden tanımladı. V4-Flash modeli, milyon giriş token başına &lt;strong&gt;0,14 ABD doları&lt;/strong&gt; ve milyon çıkış token başına &lt;strong&gt;0,28 ABD doları&lt;/strong&gt; ücretlendirilirken; V4-Pro modeli ise milyon giriş için &lt;strong&gt;1,74 ABD doları&lt;/strong&gt; ve çıkış için &lt;strong&gt;3,48 ABD doları&lt;/strong&gt; olarak ücretlendirilir. Her iki model de 1M token bağlam penceresi ve 384K'ya kadar çıkış tokenı sunar. Ayrıca, tekrarlanan istemlerde giriş maliyetini %80-%90 oranında azaltan otomatik önbellek isabet indirimi bulunur.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u hemen deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bu rehberde; tam fiyat tablosunu, bağlam önbelleklemenin gerçek çağrı başına maliyeti nasıl düşürdüğünü, GPT-5.5 ve Claude Opus ile doğrudan kıyaslamayı ve Apidog ile harcamayı öngörülebilir tutmanın dört yolunu bulacaksınız.&lt;/p&gt;

&lt;p&gt;Ürüne genel bakış için, &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 nedir&lt;/a&gt; yazısına göz atın. Geliştirici kılavuzu için, &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API nasıl kullanılır&lt;/a&gt; makalesini inceleyin. Sıfır maliyetli yollar için, &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 ücretsiz nasıl kullanılır&lt;/a&gt; başlıklı yazıyı okuyun.&lt;/p&gt;

&lt;h2&gt;
  
  
  ÖZET
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;V4-Flash:&lt;/strong&gt; $0,14 / M giriş (önbellek ıskası), $0,028 / M giriş (önbellek isabeti), $0,28 / M çıkış.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro:&lt;/strong&gt; $1,74 / M giriş (önbellek ıskası), $0,145 / M giriş (önbellek isabeti), $3,48 / M çıkış.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bağlam penceresi:&lt;/strong&gt; Her iki varyantta da 1M token giriş, 384K token çıkış.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Önbellek isabeti indirimi:&lt;/strong&gt; Flash için yaklaşık %80, Pro için yaklaşık %92 indirim.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;deepseek-chat&lt;/code&gt; ve &lt;code&gt;deepseek-reasoner&lt;/code&gt; modelleri &lt;strong&gt;24 Temmuz 2026&lt;/strong&gt;'da kullanımdan kaldırılacak; faturalandırma V4-Flash üzerinden yapılacak.&lt;/li&gt;
&lt;li&gt;V4-Pro, girişte GPT-5.5'ten yaklaşık &lt;strong&gt;2,9 kat&lt;/strong&gt;, çıkışta ise &lt;strong&gt;8,6 kat&lt;/strong&gt; daha ucuz.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tam fiyat listesi
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Giriş (önbellek ıskası)&lt;/th&gt;
&lt;th&gt;Giriş (önbellek isabeti)&lt;/th&gt;
&lt;th&gt;Çıkış&lt;/th&gt;
&lt;th&gt;Bağlam&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.14 / M&lt;/td&gt;
&lt;td&gt;$0.028 / M&lt;/td&gt;
&lt;td&gt;$0.28 / M&lt;/td&gt;
&lt;td&gt;1M / 384K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$1.74 / M&lt;/td&gt;
&lt;td&gt;$0.145 / M&lt;/td&gt;
&lt;td&gt;$3.48 / M&lt;/td&gt;
&lt;td&gt;1M / 384K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;deepseek-chat&lt;/code&gt; (Kaldırılıyor)&lt;/td&gt;
&lt;td&gt;V4-Flash Düşünme Dışı&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;deepseek-reasoner&lt;/code&gt; (Kaldırılıyor)&lt;/td&gt;
&lt;td&gt;V4-Flash Düşünme&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Önemli detaylar:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Düşünme ve düşünme dışı modda fiyatlar aynıdır; model kimliği oranı belirler.&lt;/li&gt;
&lt;li&gt;Önbellek isabet fiyatlandırması otomatik ve kullanıcı müdahalesi gerektirmez. Önekler en az 1.024 token olmalı ve tam eşleşmeli.&lt;/li&gt;
&lt;li&gt;Eski &lt;code&gt;deepseek-chat&lt;/code&gt; ve &lt;code&gt;deepseek-reasoner&lt;/code&gt; kimlikleri artık V4-Flash olarak faturalandırılır, 24 Temmuz 2026 sonrası tamamen kaldırılacak.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Basit Bağlam Önbellekleme
&lt;/h2&gt;

&lt;p&gt;Önbellekleme, DeepSeek V4'te önemli bir maliyet avantajı sağlar. Özellikle tekrarlayan uzun sistem istemleri, ajan araç şemaları ve RAG bağlamı ile çalışıyorsanız, tekrar eden önekler sayesinde sonraki çağrılarda giriş token maliyeti ciddi oranda düşer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pratik Örnek:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;20.000 tokenlık sabit sistem istemi olan bir ajanınız var, ardından her biri 200 token olan 100 kullanıcı sorusu soruyorsunuz.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Önbellekleme Olmadan:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Giriş: 100 çağrı × 20.200 token × $1,74 / M = $3,52
Çıkış: 100 çağrı × 500 token × $3,48 / M = $0,17
Toplam: $3,69
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Önbellekleme ile (ilk çağrı ıskası, sonraki 99 isabet):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;İlk çağrı girişi: 20.200 × $1,74 / M = $0,035
99 önbellek isabetli önek: 99 × 20.000 × $0,145 / M = $0,287
99 kullanıcı dönüşü (ıskası): 99 × 200 × $1,74 / M = $0,034
Çıkış: 100 × 500 × $3,48 / M = $0,174
Toplam: $0,53
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yani, aynı iş yükünde yaklaşık &lt;strong&gt;7 kat daha ucuz&lt;/strong&gt;. V4-Flash'ta bu etki daha da büyüktür.&lt;/p&gt;

&lt;h2&gt;
  
  
  GPT-5.5 ve Claude ile Karşılaştırma
&lt;/h2&gt;

&lt;p&gt;Aşağıdaki tablo, giriş/çıkış başına maliyetleri ve bağlam limitlerini pratik olarak karşılaştırır:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Giriş (standart)&lt;/th&gt;
&lt;th&gt;Giriş (önbellekli)&lt;/th&gt;
&lt;th&gt;Çıkış&lt;/th&gt;
&lt;th&gt;Bağlam&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4-Flash&lt;/td&gt;
&lt;td&gt;$0.14 / M&lt;/td&gt;
&lt;td&gt;$0.028 / M&lt;/td&gt;
&lt;td&gt;$0.28 / M&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek V4-Pro&lt;/td&gt;
&lt;td&gt;$1.74 / M&lt;/td&gt;
&lt;td&gt;$0.145 / M&lt;/td&gt;
&lt;td&gt;$3.48 / M&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5&lt;/td&gt;
&lt;td&gt;$5 / M&lt;/td&gt;
&lt;td&gt;$1.25 / M&lt;/td&gt;
&lt;td&gt;$30 / M&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Pro&lt;/td&gt;
&lt;td&gt;$30 / M&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$180 / M&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 4.6&lt;/td&gt;
&lt;td&gt;$15 / M&lt;/td&gt;
&lt;td&gt;$1.50 / M&lt;/td&gt;
&lt;td&gt;$75 / M&lt;/td&gt;
&lt;td&gt;200K&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Yorumlar:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;V4-Pro, çıkış tokenında GPT-5.5'ten &lt;strong&gt;8,6 kat&lt;/strong&gt;, Claude Opus 4.6'dan &lt;strong&gt;21 kat&lt;/strong&gt; daha ucuzdur.&lt;/li&gt;
&lt;li&gt;Önbellekli girişte, V4-Pro hem GPT-5.5 hem de Claude karşısında yaklaşık &lt;strong&gt;10 kat&lt;/strong&gt; daha ucuzdur.&lt;/li&gt;
&lt;li&gt;Performans olarak V4-Pro, LiveCodeBench ve Codeforces'ta GPT-5.5 seviyesinde veya üzerinde; maliyeti ise çok daha düşük. Detaylı kıyas için &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 nedir&lt;/a&gt; yazısına bakın.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Not: Bazı senaryolarda Claude veya Gemini modelleri uzun bağlamda veya belirli testlerde daha iyi olabilir, fakat maliyet/performans oranı çoğu iş yükünde DeepSeek lehine.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Yaygın İş Yükleri için Maliyet Modellemesi
&lt;/h2&gt;

&lt;p&gt;Aşağıda üretimde sık karşılaşılan 4 iş yükü ve V4-Pro için maliyetleri yer alıyor (önbellek ıskası tabanlı):&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Ajanlı Kodlama Döngüsü (50K bağlam, 2K çıkış, görev başına 20 çağrı)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Giriş: 50.000 × 20 × $1,74 / M = $1,74
Çıkış: 2.000 × 20 × $3,48 / M = $0,14
Görev başına toplam: ~$1,88
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;GPT-5.5 ile aynı iş yükü ~$6,20&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. Uzun Belge Soru-Cevap (500K bağlam, 1K çıkış)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Giriş: 500.000 × $1,74 / M = $0,87
Çıkış: 1.000 × $3,48 / M = $0,003
Çağrı başına toplam: ~$0,87
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;GPT-5.5 ile aynı iş yükü ~$2,53&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Yüksek Hacimli Sınıflandırma (2K bağlam, 200 çıkış, 10.000 çağrı)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Bu senaryoda V4-Flash daha uygun.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Giriş: 2.000 × 10.000 × $0,14 / M = $2,80
Çıkış: 200 × 10.000 × $0,28 / M = $0,56
Toplam: ~$3,36
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;GPT-5.5 ile aynı iş yükü ~$110&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. Tekrarlanan İstemli Sohbet Robotu (10K sistem istemi, 500 kullanıcı tokenı, 1K çıkış, 1.000 oturum)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;İlk çağrı girişi: 10.500 × $1,74 / M = $0,018
Önbellek isabetli giriş: 999 × 10.000 × $0,145 / M = $1,45
Kullanıcı dönüşleri: 999 × 500 × $1,74 / M = $0,87
Çıkış: 1.000 × 1.000 × $3,48 / M = $3,48
Toplam: ~$5,82
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;GPT-5.5 ile aynı iş yükünde ~$26,35&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Dikkat Edilmesi Gereken Gizli Maliyetler
&lt;/h2&gt;

&lt;p&gt;Fiyat tablosu tek başına yeterli değildir; aşağıdaki noktalar ilk aylarda faturada sürpriz yaratabilir:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Düşünme modu token enflasyonu:&lt;/strong&gt; &lt;code&gt;thinking_max&lt;/code&gt;, aynı istemde &lt;code&gt;non-thinking&lt;/code&gt;e göre 3-10 kat fazla çıkış tokenı üretir. Token kullanımı ciddi artar. &lt;code&gt;thinking_max&lt;/code&gt; modunu isteğe bağlı olarak kullanın ve izleyin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sessiz bağlam büyümesi:&lt;/strong&gt; Ajan döngülerinde tüm konuşmayı tekrar tekrar bağlama eklemeyin. Çok hızlı büyür. Kısaltma ve özetlemeyle sınırlandırın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yeniden deneme fırtınaları:&lt;/strong&gt; Yanlış yapılandırılmış döngülerde, tekrar tekrar başarısız istekler faturayı hızla artırır. Üstel geri çekilme ve istek başına sabit retry limiti ekleyin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geliştirme döngüsü:&lt;/strong&gt; curl ile elle deneme yapmak her seferinde tüm bağlamı yeniden çalıştırır. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile değişken ikamesi ve ücretsiz denemelerle bu maliyetleri minimize edin.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Apidog'da Maliyeti Takip Etme
&lt;/h2&gt;

&lt;p&gt;Maliyetleri sürekli kontrol etmek için pratik bir iş akışı:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt; ve &lt;code&gt;DEEPSEEK_API_KEY&lt;/code&gt;'i ortam değişkeni olarak tanımlayın.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;https://api.deepseek.com/v1/chat/completions&lt;/code&gt; adresine tek bir POST isteği kaydedin.&lt;/li&gt;
&lt;li&gt;Yanıt panelinde &lt;code&gt;usage.prompt_tokens&lt;/code&gt;, &lt;code&gt;usage.completion_tokens&lt;/code&gt; ve &lt;code&gt;usage.reasoning_tokens&lt;/code&gt; değerlerini sabitleyin. Her çağrıda, çıktıyla birlikte maliyet analizi anında görünür.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;model&lt;/code&gt; ve &lt;code&gt;thinking_mode&lt;/code&gt; parametrelerini değiştirerek V4-Flash/V4-Pro ve Düşünme-Dışı/Düşünme-Max A/B testi yapın.&lt;/li&gt;
&lt;li&gt;GPT-5.5 için aynı koleksiyonu oluşturun (detaylar için &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 API rehberi&lt;/a&gt;). Böylece iki sağlayıcıda da maliyetleri tek pencerede karşılaştırabilirsiniz.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bu süreç, ay sonunda ortaya çıkabilecek maliyet sürprizlerinin %80'ini önden görmenizi sağlar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Harcamayı Öngörülebilir Tutan Dört Kural
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Varsayılan olarak V4-Flash kullanın.&lt;/strong&gt; Yalnızca kalite farkı gelir etkisi yaratıyorsa V4-Pro'ya geçin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Varsayılan olarak Düşünme-Dışı modunu seçin.&lt;/strong&gt; Zor görevlerde Düşünme-Yüksek; kritik işlerde Düşünme-Maks modunu kullanın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;max_tokens&lt;/code&gt; değerini sınırlayın.&lt;/strong&gt; 384K sınırı bir güvenlik önlemidir, çoğu üretim çıktısı 2K'yı geçmez.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kullanım telemetrisi gönderin.&lt;/strong&gt; Her çağrıda &lt;code&gt;prompt_tokens&lt;/code&gt;, &lt;code&gt;completion_tokens&lt;/code&gt;, &lt;code&gt;reasoning_tokens&lt;/code&gt; değerlerini kaydedin ve özellikle reasoning token artışlarında otomatik uyarı verin.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Sıkça Sorulan Sorular
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ücretsiz bir katman var mı?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
API'da ücretsiz katman yok; bazı yeni hesaplara sınırlı deneme kredisi gelebilir. API dışındaki ücretsiz yollar için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü ücretsiz nasıl kullanacağınızı&lt;/a&gt; inceleyin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Önbellek isabeti fiyatlandırması nasıl işler?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Aynı hesapta tekrarlanan 1.024+ token önekler otomatik olarak önbellekli fiyatla faturalandırılır. İlk çağrı tam oranı, takip edenler indirimli oranı öder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Düşünme modları daha mı pahalı?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Token başına oran sabit; ancak düşünme modlarında daha fazla token kullanılır. Gerçek maliyeti ölçmek için &lt;code&gt;usage.reasoning_tokens&lt;/code&gt;'ı izleyin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fiyatlar sabit mi?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
DeepSeek fiyatları zaman zaman günceller. Güncel oranlar için &lt;a href="https://api-docs.deepseek.com/quick_start/pricing" rel="noopener noreferrer"&gt;canlı fiyatlandırma sayfasına&lt;/a&gt; bakın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4-Pro ve V4-Flash aynı çıkış oranına mı sahip?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Hayır; V4-Pro çıkışı $3,48 / M, V4-Flash çıkışı $0,28 / M. Bu yüzden çoğu iş için V4-Flash tercih edilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anthropic formatındaki uç nokta fiyatı değiştiriyor mu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Hayır; &lt;code&gt;https://api.deepseek.com/anthropic&lt;/code&gt; OpenAI formatındaki uç nokta ile aynı fiyatı kullanır.&lt;/p&gt;




&lt;p&gt;Uygulamada yukarıdaki adımları izleyerek maliyetleri önceden tahmin edebilir, beklenmedik faturaların önüne geçebilirsiniz. Geliştirici iş akışınızda Apidog ile entegrasyon ve otomatik telemetriyi ihmal etmeyin.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DeepSeek V4 API Nasıl Kullanılır?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:29:58 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/deepseek-v4-api-nasil-kullanilir-56fk</link>
      <guid>https://forem.com/tobiass_hoffmann/deepseek-v4-api-nasil-kullanilir-56fk</guid>
      <description>&lt;p&gt;DeepSeek V4, ilk günden itibaren canlı API ile kullanılabilir durumda. Model kimlikleri &lt;code&gt;deepseek-v4-pro&lt;/code&gt; ve &lt;code&gt;deepseek-v4-flash&lt;/code&gt; ile OpenAI uyumlu uç noktada (temel URL: &lt;code&gt;https://api.deepseek.com&lt;/code&gt;) çalışır. Yani, halihazırda OpenAI gibi bir istemci kullanıyorsanız, sadece temel URL'yi değiştirerek DeepSeek V4'e geçebilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-222.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-222.png" alt="" width="1200" height="825"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bu teknik rehberde; kimlik doğrulama, önemli parametreler, Python ve Node istemci örnekleri, düşünme modu kullanımı, araç çağrısı, akışlı yanıtlar ve maliyet kontrolünü &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; tabanlı bir iş akışı ile adım adım öğreneceksiniz.&lt;/p&gt;

&lt;p&gt;Ürün genel bakışı için &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 nedir&lt;/a&gt; ve ücretsiz kullanım için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü ücretsiz nasıl kullanırsınız&lt;/a&gt; bağlantılarına göz atabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;DeepSeek V4, &lt;code&gt;&lt;a href="https://api.deepseek.com/v1/chat/completions" rel="noopener noreferrer"&gt;https://api.deepseek.com/v1/chat/completions&lt;/a&gt;&lt;/code&gt; (OpenAI uyumlu) ve &lt;code&gt;&lt;a href="https://api.deepseek.com/anthropic" rel="noopener noreferrer"&gt;https://api.deepseek.com/anthropic&lt;/a&gt;&lt;/code&gt; (Anthropic uyumlu) uç noktalar ile sunulur.&lt;/li&gt;
&lt;li&gt;Model Kimlikleri: &lt;code&gt;deepseek-v4-pro&lt;/code&gt; (1.6T toplam, 49B aktif) ve &lt;code&gt;deepseek-v4-flash&lt;/code&gt; (284B toplam, 13B aktif).&lt;/li&gt;
&lt;li&gt;Her iki model de &lt;strong&gt;1M token bağlamı&lt;/strong&gt; ve üç düşünme modunu destekler: &lt;code&gt;non-thinking&lt;/code&gt;, &lt;code&gt;thinking&lt;/code&gt;, &lt;code&gt;thinking_max&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;DeepSeek önerisi: &lt;code&gt;temperature=1.0, top_p=1.0&lt;/code&gt; — GPT-5.5/Claude varsayılanlarını kullanmayın.&lt;/li&gt;
&lt;li&gt;Eski &lt;code&gt;deepseek-chat&lt;/code&gt; ve &lt;code&gt;deepseek-reasoner&lt;/code&gt; kimlikleri &lt;strong&gt;24 Temmuz 2026&lt;/strong&gt;'da kaldırılacak; geçişinizi bu tarihten önce yapın.&lt;/li&gt;
&lt;li&gt;İstekleri kolayca tekrarlamak, düşünme modlarını karşılaştırmak ve API anahtarınızı terminal geçmişinizden uzak tutmak için &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-223.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-223.png" alt="" width="1200" height="887"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Önkoşullar
&lt;/h2&gt;

&lt;p&gt;İlk isteğiniz için aşağıdaki adımları tamamlayın:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;En az 2$ bakiye yüklü, &lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt; üzerinden oluşturulmuş bir DeepSeek geliştirici hesabı.&lt;/li&gt;
&lt;li&gt;Her proje için ayrı API anahtarı (proje kapsamlı anahtarlar önerilir).&lt;/li&gt;
&lt;li&gt;OpenAI uyumlu temel URL'yi destekleyen bir SDK. Python için &lt;code&gt;openai&amp;gt;=1.30.0&lt;/code&gt;, Node için &lt;code&gt;&lt;a href="mailto:openai@4.x"&gt;openai@4.x&lt;/a&gt;&lt;/code&gt; doğrudan çalışır.&lt;/li&gt;
&lt;li&gt;Tekrarlanabilir API çağrıları için bir istemci. Curl ilk test için yeterli; seri ve karşılaştırmalı çağrılar için &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;'u tercih edin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;API anahtarını ortam değişkeni olarak kaydedin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Uç Nokta ve Kimlik Doğrulama
&lt;/h2&gt;

&lt;p&gt;İki temel uç nokta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST https://api.deepseek.com/v1/chat/completions    # OpenAI formatı
POST https://api.deepseek.com/anthropic/v1/messages  # Anthropic formatı
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Çoğu senaryo için OpenAI uyumlu formatı seçin. Kimlik doğrulama için &lt;code&gt;Authorization&lt;/code&gt; başlığına Bearer token ekleyin.&lt;/p&gt;

&lt;p&gt;Örnek cURL isteği:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.deepseek.com/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "user", "content": "MoE yönlendirmesini iki cümlede açıklayın."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Başarılı yanıt; &lt;code&gt;choices&lt;/code&gt; dizisi, token kullanımı (&lt;code&gt;usage&lt;/code&gt; bloğu) ve izleme için bir &lt;code&gt;id&lt;/code&gt; içerir. Hatalar, OpenAI standardında döner (&lt;code&gt;error.code&lt;/code&gt;, &lt;code&gt;error.message&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  İstek Parametreleri
&lt;/h2&gt;

&lt;p&gt;Aşağıdaki tablo, DeepSeek V4'te kullanabileceğiniz başlıca parametreleri özetler:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parametre&lt;/th&gt;
&lt;th&gt;Tür&lt;/th&gt;
&lt;th&gt;Değerler&lt;/th&gt;
&lt;th&gt;Notlar&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;deepseek-v4-pro&lt;/code&gt;, &lt;code&gt;deepseek-v4-flash&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Zorunlu.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;messages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;rol/içerik çiftleri&lt;/td&gt;
&lt;td&gt;Zorunlu. OpenAI ile aynı şema.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;thinking_mode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;non-thinking&lt;/code&gt;, &lt;code&gt;thinking&lt;/code&gt;, &lt;code&gt;thinking_max&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Varsayılan &lt;code&gt;non-thinking&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;0 ila 2&lt;/td&gt;
&lt;td&gt;DeepSeek 1.0 öneriyor.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;top_p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;0 ila 1&lt;/td&gt;
&lt;td&gt;DeepSeek 1.0 öneriyor.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;max_tokens&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;1 ila 131,072&lt;/td&gt;
&lt;td&gt;Çıkış uzunluğunu sınırlar.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;stream&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;doğru veya yanlış&lt;/td&gt;
&lt;td&gt;SSE akışını etkinleştirir.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tools&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;OpenAI araç belirtimi&lt;/td&gt;
&lt;td&gt;Fonksiyon çağrısı için.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tool_choice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string veya object&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;required&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt;, veya belirli araç&lt;/td&gt;
&lt;td&gt;Araç kullanımını kontrol eder.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;response_format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;object&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{"type": "json_object"}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;JSON modlu çıktı.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;herhangi bir int&lt;/td&gt;
&lt;td&gt;Tekrarlanabilirlik için.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;presence_penalty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;-2 ila 2&lt;/td&gt;
&lt;td&gt;Tekrarlanan konuları cezalandırır.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;frequency_penalty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;-2 ila 2&lt;/td&gt;
&lt;td&gt;Tekrarlanan token'ları cezalandırır.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;thinking_mode&lt;/code&gt;: Maliyet üzerinde en büyük etkiye sahip parametredir.

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;non-thinking&lt;/code&gt;: Hızlı, en düşük maliyetli mod.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;thinking&lt;/code&gt;: Doğruluk için ek token harcar.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;thinking_max&lt;/code&gt;: Maksimum doğruluk, en yüksek maliyet.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;code&gt;temperature&lt;/code&gt; ve &lt;code&gt;top_p&lt;/code&gt;: DeepSeek'in önerdiği şekilde 1.0 kullanın.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Python İstemcisi
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;openai&lt;/code&gt; SDK ile temel URL'yi değiştirerek doğrudan kullanabilirsiniz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.deepseek.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sadece kodla yanıt ver.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Olayları debounc eden bir Rust fonksiyonu yaz.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;İçerik:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Akıl yürütme tokenları:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reasoning_tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Toplam tokenlar:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total_tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;extra_body&lt;/code&gt;, DeepSeek'e özgü parametreleri OpenAI SDK üzerinden iletmek için kullanılır.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Node İstemcisi
&lt;/h2&gt;

&lt;p&gt;Node ekosisteminde de benzer yapı ile ilerleyebilirsiniz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.deepseek.com/v1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Muon optimizatörünü basit İngilizce ile açıkla.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;thinking_mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;thinking&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;top_p&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Kullanım:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Node SDK, bilinmeyen alanları üst düzeyden kabul eder; &lt;code&gt;thinking_mode&lt;/code&gt; doğrudan geçilebilir.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Yanıtların Akışı
&lt;/h2&gt;

&lt;p&gt;Akışlı yanıt almak için &lt;code&gt;stream: true&lt;/code&gt; ayarını kullanın ve gelen SSE parçalarını işleyin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MoE hakkında 300 kelimelik bir deneme akışla gönder.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;non-thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;delta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Düşünme modu açıkken, akıl yürütme izleri &lt;code&gt;delta.reasoning_content&lt;/code&gt; ile ayrı olarak akışa alınır. Bunları arayüzde gösterebilir veya yoksayabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Araç Çağrısı
&lt;/h2&gt;

&lt;p&gt;V4, OpenAI araç (function calling) şemasını destekler. &lt;code&gt;tools&lt;/code&gt; dizisinde fonksiyon tanımlayıp otomatik çağrıya açabilirsiniz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_weather&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bir şehir için mevcut hava durumunu döndürür.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parameters&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enum&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;c&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}]&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Lagos&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ta hava durumu Celsius cinsinden nedir?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tool_choice&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;tool_call&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool_calls&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fonksiyonu çağırıp sonucu API'ye tekrar gönderebilir, OpenAI pattern'ı ile aynı döngüyü kurabilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON Modu
&lt;/h2&gt;

&lt;p&gt;Yapılandırılmış JSON çıktı almak için aşağıdaki gibi kullanın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tek bir JSON nesnesiyle yanıt ver.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bu sürüm notunu {başlık, tarih, madde işaretleri} olarak özetle: ...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;response_format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;json_object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;non-thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JSON modunda çıktı her zaman geçerli JSON olur. Şema doğrulama gerekiyorsa, istemci tarafında Pydantic veya Zod vb. ile eşleştirin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apidog'da Koleksiyon Oluşturun
&lt;/h2&gt;

&lt;p&gt;Terminalden istek göndermek yerine, iş akışınızı görselleştirmek ve karşılaştırmak için şu adımları izleyin:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt; ve yeni bir proje açın.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;{{DEEPSEEK_API_KEY}}&lt;/code&gt; için gizli bir ortam değişkeni ekleyin.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Authorization: Bearer {{DEEPSEEK_API_KEY}}&lt;/code&gt; başlığı ile &lt;code&gt;{{BASE_URL}}/chat/completions&lt;/code&gt;'a POST isteği oluşturun.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;model&lt;/code&gt; ve &lt;code&gt;thinking_mode&lt;/code&gt; parametrelerini değiştirerek varyantlar arasında A/B testi yapın.&lt;/li&gt;
&lt;li&gt;Her çağrıda &lt;code&gt;usage.reasoning_tokens&lt;/code&gt; değerini kontrol ederek fazladan düşünme moduna ödeme yapmadığınızdan emin olun.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ayrıca, &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 API koleksiyonu&lt;/a&gt;'nu kopyalayıp temel URL ve model kimliklerini değiştirerek iki platformu yan yana test edebilirsiniz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hata Yönetimi
&lt;/h2&gt;

&lt;p&gt;DeepSeek, OpenAI hata zarfını takip eder. Sık karşılaşılan hata kodları ve çözümleri:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kod&lt;/th&gt;
&lt;th&gt;Anlamı&lt;/th&gt;
&lt;th&gt;Çözüm&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Hatalı istek&lt;/td&gt;
&lt;td&gt;JSON şemasını, özellikle &lt;code&gt;messages&lt;/code&gt; ve &lt;code&gt;tools&lt;/code&gt;'u kontrol edin.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;Geçersiz anahtar&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt; adresinde yeniden oluşturun.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;402&lt;/td&gt;
&lt;td&gt;Yetersiz bakiye&lt;/td&gt;
&lt;td&gt;Hesaba para yükleyin.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;403&lt;/td&gt;
&lt;td&gt;Modele izin verilmiyor&lt;/td&gt;
&lt;td&gt;Anahtarın kapsamını ve model kimliğinin yazımını kontrol edin.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;422&lt;/td&gt;
&lt;td&gt;Parametre aralık dışında&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;max_tokens&lt;/code&gt; veya &lt;code&gt;thinking_mode&lt;/code&gt; muhtemelen uyuşmuyor.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;429&lt;/td&gt;
&lt;td&gt;Oran sınırlaması&lt;/td&gt;
&lt;td&gt;Geri çekilin, ardından üstel gecikme ile tekrar deneyin.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;Sunucu hatası&lt;/td&gt;
&lt;td&gt;Bir kez tekrar deneyin; tekrar ederse, durum sayfasını kontrol edin.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;503&lt;/td&gt;
&lt;td&gt;Aşırı yüklenmiş&lt;/td&gt;
&lt;td&gt;V4-Flash'e geri dönün veya 30 saniye içinde tekrar deneyin.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;429 ve 5xx kodları için çağrılarınızı üstel geri çekilme ile sarmalayın. 4xx kodlarını otomatik yeniden denemeyin.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Maliyet Kontrol Desenleri
&lt;/h2&gt;

&lt;p&gt;Maliyetleri yönetmek için şu pratik desenleri uygulayın:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Varsayılan olarak V4-Flash kullanın.&lt;/strong&gt; Yüksek kalite gerektiren istemler için sadece V4-Pro'ya geçin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;thinking_max&lt;/code&gt;'i bayrak arkasına alın.&lt;/strong&gt; En pahalı moddur; sadece gerekliyse açın.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;max_tokens&lt;/code&gt;'ı sınırlandırın.&lt;/strong&gt; Çoğu çıktı için 2.000 token yeterli.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Her çağrıda &lt;code&gt;usage&lt;/code&gt;'ı loglayın.&lt;/strong&gt; Token tüketimini gözlemleyerek beklenmeyen maliyet artışlarını yakalayın.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Eski DeepSeek Modellerinden Geçiş
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;deepseek-chat&lt;/code&gt; ve &lt;code&gt;deepseek-reasoner&lt;/code&gt; kimlikleri 24 Temmuz 2026'da kaldırılacak. Geçiş yapmak için sadece model adını değiştirin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-  model="deepseek-chat"
&lt;/span&gt;&lt;span class="gi"&gt;+  model="deepseek-v4-pro"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Üretim geçişinden önce Apidog ile yan yana A/B testi yaparak kalite farkını gözlemleyin.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DeepSeek V4 API üretime hazır mı?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Evet. API 23 Nisan 2026'da ağırlıklarla birlikte açıldı; altyapı olgun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4, Anthropic formatını destekliyor mu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Evet, &lt;code&gt;&lt;a href="https://api.deepseek.com/anthropic/v1/messages" rel="noopener noreferrer"&gt;https://api.deepseek.com/anthropic/v1/messages&lt;/a&gt;&lt;/code&gt; ile kullanılabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bağlam penceresi nedir?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Her iki modelde de 1 milyon token. Think Max için minimum öneri 384K token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Girdi tokenlarını nasıl sayarım?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yaklaşık değer için OpenAI tokenlaştırıcı; tam sayı için yanıtın &lt;code&gt;usage&lt;/code&gt; bloğu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API ile ince ayar yapılabiliyor mu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lansmanda hayır; sadece kendi barındırılan checkpoint'ler üzerinden (Hugging Face).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API ücretsiz mi?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ücretsiz katman yok, ancak yeni hesaplar bazen deneme kredisi alabilir.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DeepSeek V4 API Ücretsiz Nasıl Kullanılır?</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:29:19 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/deepseek-v4-api-ucretsiz-nasil-kullanilir-10b8</link>
      <guid>https://forem.com/tobiass_hoffmann/deepseek-v4-api-ucretsiz-nasil-kullanilir-10b8</guid>
      <description>&lt;p&gt;DeepSeek V4, 23 Nisan 2026'da lansman yaptı ve API fiyatları çoğu ekibin ücretsiz katman arayışını gereksiz kılacak kadar düştü. Ancak, kart bilgisi vermeden V4'ü programatik olarak çağırmak isteyen geliştiriciler için tamamen ücretsiz yollar mevcut. Agregatör gateway’ler &lt;code&gt;:free&lt;/code&gt; varyantlarını sunar, Hugging Face paylaşılan çıkarım uç noktası sağlar ve resmi API yeni hesaplara deneme kredisi tanımlar. Bu üç yöntemi birleştirip Apidog üzerinde bir geri dönüş zinciri kurarak hiç harcama yapmadan V4 tabanlı bir ürün prototipi çıkarabilirsiniz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u bugün deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bu kılavuz, DeepSeek V4 API’ye özel ücretsiz yolları kapsar. Web sohbeti ve kendi kendine barındırma dahil daha geniş kapsam için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü ücretsiz olarak nasıl kullanabilirsiniz&lt;/a&gt; başlığına bakın. Ücretli adım adım kurulum için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API'sini nasıl kullanabilirsiniz&lt;/a&gt; rehberini inceleyin. Ürünün genel görünümü için &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 nedir&lt;/a&gt; yazısına göz atın.&lt;/p&gt;

&lt;h2&gt;
  
  
  Özet (TL;DR)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter ücretsiz katmanı&lt;/strong&gt; — &lt;code&gt;deepseek/deepseek-v4-flash:free&lt;/code&gt; ve bazen &lt;code&gt;deepseek-v4-pro:free&lt;/code&gt;. OpenAI uyumlu, anahtar başına günde birkaç yüz istek.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hugging Face Çıkarım Sağlayıcıları&lt;/strong&gt; — &lt;code&gt;&lt;a href="https://router.huggingface.co/hf-inference" rel="noopener noreferrer"&gt;https://router.huggingface.co/hf-inference&lt;/a&gt;&lt;/code&gt; adresinde ücretsiz, oran sınırlamalı, prototipleme için ideal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chutes ücretsiz katmanı&lt;/strong&gt; — Lansmandan sonraki ilk hafta sık sık ücretsiz DeepSeek uç noktaları sunan topluluk GPU ağı.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek deneme kredisi&lt;/strong&gt; — &lt;code&gt;platform.deepseek.com&lt;/code&gt; adresindeki yeni hesaplara bazen başlangıç bakiyesi tanımlanıyor.&lt;/li&gt;
&lt;li&gt;Kendi GPU’nuzda kendi kendine barındırılan V4-Flash da lisans düzeyinde ücretsizdir; detaylar için &lt;a href="http://apidog.com/blog/how-to-run-deepseek-v4-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü yerel olarak nasıl çalıştırabilirsiniz&lt;/a&gt; başlığını inceleyin.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile geri dönüş zinciri kurun, istek yapısı tüm sağlayıcılar için sabit kalsın.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-227.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-227.png" alt="" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Neden ücretsiz API yolu mevcut?
&lt;/h2&gt;

&lt;p&gt;DeepSeek’in ücretli tarifeleri zaten ucuz, peki neden ücretsizini arayalım? Üç sebep:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Kart öncesi prototipleme:&lt;/strong&gt; Ödeme eklemeden, tedarik veya hızlı PoC için V4’ü koddan çağırmak isteyebilirsiniz.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Öğrenci, araştırma ve açık kaynak:&lt;/strong&gt; Bütçesiz küçük projeler yine de kaliteli modele ihtiyaç duyar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sağlayıcı karşılaştırması:&lt;/strong&gt; Üç ücretsiz endpoint’te aynı prompt’u çalıştırmak, pratikteki gecikme/kalite/fark farklarını görmenizi sağlar.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bunlar ilginizi çekiyorsa, bu rehber tam size göre. Üretime göndereceğiniz bir ürün kuruyorsanız, &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;ücretli API rehberine&lt;/a&gt; geçin; resmi DeepSeek API’deki 2$ minimum yükleme, oran sınırlamalarıyla uğraşmaktan daha avantajlıdır.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yol 1: OpenRouter ücretsiz katmanı
&lt;/h2&gt;

&lt;p&gt;OpenRouter, OpenAI uyumlu API arkasında öncü modelleri toplayan bir ağ geçididir. DeepSeek’in V3, V3.1, V3.2 ve şimdi V4 sürümlerinde güvenilir şekilde ücretsiz varyantlar açıyor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kurulum
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://openrouter.ai/" rel="noopener noreferrer"&gt;openrouter.ai&lt;/a&gt; adresine kaydolun.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ayarlar → Anahtarlar&lt;/strong&gt; altında API anahtarı oluşturun.&lt;/li&gt;
&lt;li&gt;Model kataloğunda &lt;code&gt;:free&lt;/code&gt; soneki olan girişleri (ör. &lt;code&gt;deepseek/deepseek-v4-flash:free&lt;/code&gt;) bulun.&lt;/li&gt;
&lt;li&gt;Herhangi bir OpenAI uyumlu SDK ile uç noktayı çağırın.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;OPENROUTER_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://openrouter.ai/api/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek/deepseek-v4-flash:free&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Refactor this Go function to use channels.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sınırlar
&lt;/h3&gt;

&lt;p&gt;OpenRouter’daki ücretsiz istekler, yoğunlukta ücretli trafiğin arkasında sıraya girer. Genelde anahtar başına günde 50-200 istek limiti, sıkı eşzamanlılık ve haber verilmeksizin varyant değişimi olabilir. Yalnızca prototipleme amaçlıdır.&lt;/p&gt;

&lt;h3&gt;
  
  
  Node.js Sürümü
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OPENROUTER_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://openrouter.ai/api/v1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deepseek/deepseek-v4-flash:free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Explain MoE routing like I'm 12.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Yol 2: Hugging Face Çıkarım Sağlayıcıları
&lt;/h2&gt;

&lt;p&gt;Hugging Face, V4 kontrol noktalarını piyasaya sürüldükten kısa süre sonra paylaşılan bir çıkarım endpoint’i olarak sunuyor. Bir HF token’ı ile çağırmak ücretsiz, ancak en sıkı oran sınırlarına sahip.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;huggingface_hub&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;InferenceClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;InferenceClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-ai/DeepSeek-V4-Flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;HF_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write a Python decorator that retries with jitter.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HF token’ı &lt;a href="https://huggingface.co/settings/tokens" rel="noopener noreferrer"&gt;huggingface.co/settings/tokens&lt;/a&gt; üzerinden ücretsiz alınabilir. Gecikme ve hız, yük ve token sayısına göre değişir. Daha fazla limite ihtiyacınız varsa, HF Pro veya ücretli DeepSeek API’ye geçin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yol 3: Chutes ve topluluk ağ geçitleri
&lt;/h2&gt;

&lt;p&gt;Chutes, genellikle ücretsiz veya çok düşük maliyetli DeepSeek modellerini barındıran merkeziyetsiz bir GPU ağıdır. &lt;code&gt;&lt;a href="https://llm.chutes.ai/v1" rel="noopener noreferrer"&gt;https://llm.chutes.ai/v1&lt;/a&gt;&lt;/code&gt; adresinden OpenAI uyumlu endpoint sunar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;CHUTES_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://llm.chutes.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-ai/DeepSeek-V4-Flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Compare CSA and HCA attention in two sentences.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kullanılabilirlik ve model kimlikleri değişkenlik gösterir. Bağımlılık kurmadan önce Chutes panelinden mevcut modelleri ve maliyeti kontrol edin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Yol 4: DeepSeek deneme kredisi
&lt;/h2&gt;

&lt;p&gt;DeepSeek, yeni hesaplara zaman zaman deneme kredisi tanımlar. Miktar ve geçerlilik süresi değişir; genellikle e-posta doğrulamasından sonra hesaba 1$ yüklenir. Kayıt sonrası &lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt;’daki faturalandırma panelini kontrol edin.&lt;/p&gt;

&lt;p&gt;1$ deneme kredisi ile V4-Flash’ta yaklaşık 7 milyon giriş token’ı, V4-Pro’da 570 bin giriş token’ı alırsınız. Yüzlerce prototip çağrısı için yeterlidir.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apidog'da sağlayıcıdan bağımsız ücretsiz bir zincir oluşturun
&lt;/h2&gt;

&lt;p&gt;Birden fazla ücretsiz yol desteklemek, sağlayıcılar kısıtlandığında sorunsuz çalışan esnek bir prototip sağlar. Adımlar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt; ve yeni proje oluşturun.&lt;/li&gt;
&lt;li&gt;Dört ortam açın: &lt;code&gt;openrouter&lt;/code&gt;, &lt;code&gt;huggingface&lt;/code&gt;, &lt;code&gt;chutes&lt;/code&gt;, &lt;code&gt;deepseek-trial&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Her ortamda ilgili API anahtarını gizli değişken olarak kaydedin ve &lt;code&gt;BASE_URL&lt;/code&gt;’yi ayarlayın.&lt;/li&gt;
&lt;li&gt;Parametreli bir &lt;code&gt;model&lt;/code&gt; alanı ile &lt;code&gt;{{BASE_URL}}/chat/completions&lt;/code&gt;’a POST isteği kaydedin.&lt;/li&gt;
&lt;li&gt;Aynı prompt’u tüm sağlayıcılarda tek tıkla çalıştırmak için ortam değiştirin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Aynı yaklaşımı &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 API ücretsiz yolları&lt;/a&gt; için de kopyalayıp sağlayıcıları değiştirerek uygulayabilirsiniz.&lt;/p&gt;

&lt;h3&gt;
  
  
  Koda bir geri dönüş zinciri bağlayın
&lt;/h3&gt;

&lt;p&gt;Bir sağlayıcı kısıtlandığında, otomatik geri dönüş zinciriyle diğerine geçiş yapabilirsiniz. OpenAI SDK’sı ile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RateLimitError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;APIError&lt;/span&gt;

&lt;span class="n"&gt;PROVIDERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;base_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://openrouter.ai/api/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OPENROUTER_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek/deepseek-v4-flash:free&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;base_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://llm.chutes.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CHUTES_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-ai/DeepSeek-V4-Flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;base_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.deepseek.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_v4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;provider&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;PROVIDERS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;base_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;except &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RateLimitError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;APIError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;base_url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; failed: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;all providers exhausted&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Her ücretsiz yolun aslında ne için iyi olduğu
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Yol&lt;/th&gt;
&lt;th&gt;En iyi olduğu alan&lt;/th&gt;
&lt;th&gt;En kötü olduğu alan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter ücretsiz&lt;/td&gt;
&lt;td&gt;Prototipleme, günlük geliştirme&lt;/td&gt;
&lt;td&gt;Sıkı SLA'lar gerektiren işler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HF Çıkarım&lt;/td&gt;
&lt;td&gt;Keşif, defterler&lt;/td&gt;
&lt;td&gt;Düşük gecikmeli işler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chutes&lt;/td&gt;
&lt;td&gt;Deneysel topluluk çalışması&lt;/td&gt;
&lt;td&gt;Uzun vadeli bağımlılıklar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek deneme&lt;/td&gt;
&lt;td&gt;Tam doğruluk testi&lt;/td&gt;
&lt;td&gt;Sürekli üretim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kendi kendine barındırılan V4-Flash&lt;/td&gt;
&lt;td&gt;Uyumluluk gerektiren işler&lt;/td&gt;
&lt;td&gt;GPU kapasitesi olmayan ekipler&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Önemli kota hesaplaması
&lt;/h2&gt;

&lt;p&gt;Herhangi bir ücretsiz yolu kullanmadan önce, günlük işleme kapasitenizi hesaplayın:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter ücretsiz:&lt;/strong&gt; Anahtar başına günlük ~100 istek, her biri ~50K token. Günde 30-50 geliştirme çağrısı için yeterlidir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HF Çıkarım ücretsiz:&lt;/strong&gt; Paylaşılan oran limitleri, toplamda yaklaşık 1K istek/gün. Yük altında yavaşlayabilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chutes:&lt;/strong&gt; Değişken; en iyi çaba olarak değerlendirin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek deneme (1$):&lt;/strong&gt; V4-Flash’ta 10K giriş token’ı ile yaklaşık 700 çağrı. Sınırlı ama cömert.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kendi kendine barındırma:&lt;/strong&gt; Donanımınıza bağlı. 4 × H100 ile saniyede 50-150 token işleyebilirsiniz.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Daha fazlasına ihtiyacınız varsa, ücretli API’ya geçmek daha mantıklı. V4-Flash’ta 0,14 $/M fiyatla, 2K bağlam ve 500 çıkış token’ı ile 10.000 çağrı yaklaşık 2,80 $’a mal olur. Prototip sonrası ücretli API genellikle daha basit çözüm sunar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ücretli API'ye ne zaman geçmeli?
&lt;/h2&gt;

&lt;p&gt;Ücretsiz katmanı aştığınızın 3 pratik göstergesi:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Oran limitleri günde birden fazla kez sizi durduruyor.&lt;/li&gt;
&lt;li&gt;Bir iş yükü için birden fazla ücretsiz sağlayıcıyı bir araya getiriyorsunuz.&lt;/li&gt;
&lt;li&gt;Testleriniz öngörülebilir gecikme veya SLA gerektiriyor.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;platform.deepseek.com&lt;/code&gt; adresinde minimum yükleme 2$. Yoğun prototipleme için ücretsiz katmanlarda harcayacağınız zaman, ücretli API’dan daha pahalıya gelebilir. Tam oranlar için &lt;a href="http://apidog.com/blog/deepseek-v4-api-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 fiyatlandırma kılavuzu&lt;/a&gt;'na bakın.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Bu yollar kalıcı olarak ücretsiz mi?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Hayır. Ücretsiz katmanlar değişkendir, prototipleme için uygundur, üretim için değildir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenRouter &lt;code&gt;:free&lt;/code&gt; gerçek V4 mü çalıştırıyor?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Evet, ancak sıkı oran limitli paylaşılan altyapı üzerinde. Kalite eşleşir, hız eşleşmez.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ücretsiz yol çıktısını ürünümde kullanabilir miyim?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Her sağlayıcının koşullarını okuyun. OpenRouter oran sınırı dahilinde ticari kullanıma izin verir. HF Çıkarım ticariye izin verir, sıkı sınır koyar. DeepSeek deneme kredisi ana hükümlere tabidir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hangi ücretsiz yolun gecikmesi en iyi?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
DeepSeek deneme kredisi; doğrudan üretim altyapısıdır. OpenRouter ikinci sırada. HF Çıkarım ve Chutes değişkendir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4’ü ücretsiz olarak kendim barındırabilir miyim?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lisans MIT, evet. Maliyet donanımdır. Kurulum için &lt;a href="http://apidog.com/blog/how-to-run-deepseek-v4-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü yerel olarak nasıl çalıştırabilirsiniz&lt;/a&gt; başlığına bakın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bugün hangi ücretsiz yolu kullandığımı nasıl takip edebilirim?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; ile yanıt görüntüleyicide &lt;code&gt;usage&lt;/code&gt; alanını sabitleyin. Çoğu toplayıcıda kullanım panosu mevcuttur.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DeepSeek V4 Kullanımı: Web Sohbet, API ve Self-Hosted Yöntemleri</title>
      <dc:creator>Tobias Hoffmann</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:20:02 +0000</pubDate>
      <link>https://forem.com/tobiass_hoffmann/deepseek-v4-kullanimi-web-sohbet-api-ve-self-hosted-yontemleri-c83</link>
      <guid>https://forem.com/tobiass_hoffmann/deepseek-v4-kullanimi-web-sohbet-api-ve-self-hosted-yontemleri-c83</guid>
      <description>&lt;p&gt;DeepSeek V4, 23 Nisan 2026'da dört kontrol noktası, canlı bir API ve Hugging Face'de MIT lisanslı ağırlıklarla yayınlandı. Bu kombinasyon, onu kullanmanın tek bir "doğru yolu" olmadığı anlamına geliyor; en iyi yol, anında erişim, üretim API çağrıları veya şirket içi dağıtım isteyip istemediğinize bağlıdır. Bu kılavuz, her üçünü de ödünleşimleri, püf noktaları ve yeniden kullanabileceğiniz üretime hazır bir prompt iş akışıyla birlikte anlatmaktadır.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog'u hemen deneyin&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Sadece ürün seviyesi genel bir bakış istiyorsanız, önce &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 nedir&lt;/a&gt; yazısını okuyun. Sadece API kullanımına ilişkin ayrıntılı bilgi için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API kılavuzuna&lt;/a&gt; bakın. Sıfır maliyetli yol için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü ücretsiz olarak nasıl kullanacağınıza&lt;/a&gt; bakın. Gerçek istekleri test etmeye hazır olduğunuzda &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;'u edinin ve koleksiyonu önceden oluşturun.&lt;/p&gt;

&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;En hızlı yol: &lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;. Ücretsiz web sohbeti, varsayılan olarak V4-Pro, üç düşünme modu.&lt;/li&gt;
  &lt;li&gt;Üretim yolu: &lt;code&gt;https://api.deepseek.com/v1/chat/completions&lt;/code&gt;, model ID'leri &lt;code&gt;deepseek-v4-pro&lt;/code&gt; veya &lt;code&gt;deepseek-v4-flash&lt;/code&gt; ile.&lt;/li&gt;
  &lt;li&gt;Kendi kendine barındırılan yol: &lt;a href="https://huggingface.co/collections/deepseek-ai/deepseek-v4" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt;'den ağırlıkları çekin, repodaki &lt;code&gt;/inference&lt;/code&gt; komut dosyalarını çalıştırın.&lt;/li&gt;
  &lt;li&gt;Yönlendirme ve sınıflandırma için &lt;strong&gt;Non-Think&lt;/strong&gt;'i, kod ve analiz için &lt;strong&gt;Think High&lt;/strong&gt;'ı, maliyetten ziyade doğruluk önemli olduğunda ise sadece &lt;strong&gt;Think Max&lt;/strong&gt;'i seçin.&lt;/li&gt;
  &lt;li&gt;DeepSeek'ten örnekleme önerisi: &lt;code&gt;temperature=1.0, top_p=1.0&lt;/code&gt;. Buna tekrar şüpheyle yaklaşmayın.&lt;/li&gt;
  &lt;li&gt;API istemcisi olarak &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;'u kullanın; OpenAI uyumlu format, kaydedilen bir isteğin DeepSeek, OpenAI ve Anthropic'te tekrar oynatılması anlamına gelir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-220.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-220.png" alt="" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="i%CC%87%C5%9F-y%C3%BCk%C3%BCn%C3%BCz-i%C3%A7in-do%C4%9Fru-yolu-se%C3%A7in"&gt;İş Yükünüz İçin Doğru Yolu Seçin&lt;/h2&gt;

&lt;p&gt;Dört pratik yol var. Her birinin öne çıktığı farklı kullanım alanları mevcut:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Yol&lt;/th&gt;
&lt;th&gt;Maliyet&lt;/th&gt;
&lt;th&gt;Kurulum süresi&lt;/th&gt;
&lt;th&gt;En iyisi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Ücretsiz&lt;/td&gt;
&lt;td&gt;30 saniye&lt;/td&gt;
&lt;td&gt;Hızlı testler, geçici işler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek API&lt;/td&gt;
&lt;td&gt;Token başına ücretlendirme&lt;/td&gt;
&lt;td&gt;5 dakika&lt;/td&gt;
&lt;td&gt;Üretim, ajanlar, toplu işler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kendi kendine barındırılan V4-Flash&lt;/td&gt;
&lt;td&gt;Yalnızca donanım maliyeti&lt;/td&gt;
&lt;td&gt;Birkaç saat&lt;/td&gt;
&lt;td&gt;Şirket içi uyumluluk, çevrimdışı çıkarım&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kendi kendine barındırılan V4-Pro&lt;/td&gt;
&lt;td&gt;Yalnızca küme maliyeti&lt;/td&gt;
&lt;td&gt;Bir gün&lt;/td&gt;
&lt;td&gt;Araştırma, özel ince ayarlar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter / toplayıcı&lt;/td&gt;
&lt;td&gt;Token başına ücretlendirme&lt;/td&gt;
&lt;td&gt;2 dakika&lt;/td&gt;
&lt;td&gt;Çoklu sağlayıcı yedeklemesi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2 id="yol-1-v4%C3%BC-web-sohbetinde-kullan%C4%B1n"&gt;Yol 1: V4'ü Web Sohbetinde Kullanın&lt;/h2&gt;

&lt;p&gt;En hızlı başlama yolu resmi sohbet arayüzüdür:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
&lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt; adresine gidin.&lt;/li&gt;
  &lt;li&gt;E-posta, Google veya WeChat ile oturum açın.&lt;/li&gt;
  &lt;li&gt;V4-Pro varsayılan modeldir. Üstteki anahtardan Non-Think, Think High ve Think Max modunu seçebilirsiniz.&lt;/li&gt;
  &lt;li&gt;Prompt'unuzu yazmaya başlayın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-221.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F04%2Fimage-221.png" alt="" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web sohbeti üzerinden dosya yükleyebilir, web araması yapabilir ve 1M token bağlam desteğinden yararlanabilirsiniz. Hesap bazlı hız limiti uygulanır; yoğun kullanımda yanıtlar yavaşlayabilir fakat genelde bloklanmaz.&lt;/p&gt;

&lt;p&gt;Web arayüzü için tipik işler: hata izi teşhisi, uzun PDF özetleme, farklı modellerle prompt karşılaştırması. Kötü kullanım: otomatikleştirilmiş veya tekrar oynatılması gereken işler.&lt;/p&gt;

&lt;h2 id="yol-2-deepseek-apisini-kullan%C4%B1n"&gt;Yol 2: DeepSeek API'sini Kullanın&lt;/h2&gt;

&lt;p&gt;Üretim ve otomasyon için en pratik yöntem budur. API, OpenAI formatı ile tamamen uyumlu.&lt;/p&gt;

&lt;h3 id="bir-anahtar-al%C4%B1n"&gt;API Anahtarı Alın&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;
&lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt; adresinden kaydolun.&lt;/li&gt;
  &lt;li&gt;Bir ödeme yöntemi ekleyin (minimum 2 dolar yükleme).&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;API Anahtarları&lt;/strong&gt; altında yeni bir anahtar oluşturun ve gizli anahtarı saklayın.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anahtarı terminal ortamına ekleyin:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3 id="minimum-uygulanabilir-istek"&gt;Minimum Uygulanabilir API Çağrısı&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.deepseek.com/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "user", "content": "Bu Python fonksiyonunu eşzamansız olarak yeniden düzenleyin. Sadece kodla yanıtlayın."}
    ],
    "thinking_mode": "thinking"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daha uygun maliyetli bir cevap için &lt;code&gt;deepseek-v4-pro&lt;/code&gt; yerine &lt;code&gt;deepseek-v4-flash&lt;/code&gt; kullanın. Düşünme modunu hız için &lt;code&gt;non-thinking&lt;/code&gt; olarak ayarlayın.&lt;/p&gt;

&lt;h3 id="python-istemcisi"&gt;Python İstemcisi ile Kullanım&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.deepseek.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sen özlü bir kıdemli mühendissin.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CSA+HCA hibrit dikkat yığınını açıklayın.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;extra_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3 id="node-istemcisi"&gt;Node.js İstemcisi ile Kullanım&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.deepseek.com/v1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deepseek-v4-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Rust'ta bir fizzbuzz yaz.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;top_p&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tüm endpoint ve parametre detayları ile hata yönetimi için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 API kılavuzunu&lt;/a&gt; inceleyin.&lt;/p&gt;

&lt;h2 id="yol-3-apidog-ile-tekrarlay%C4%B1n"&gt;Yol 3: Apidog ile Otomatikleştirin ve Tekrar Oynatın&lt;/h2&gt;

&lt;p&gt;Curl ile bir-iki deneme kolaydır; ancak tekrar eden denemeler için Apidog ile çok daha verimli çalışırsınız.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Mac, Windows veya Linux için &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog'u indirin&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Yeni bir API projesi oluşturun, &lt;code&gt;https://api.deepseek.com/v1/chat/completions&lt;/code&gt; adresine POST isteği ekleyin.&lt;/li&gt;
  &lt;li&gt;
&lt;code&gt;Authorization: Bearer {{DEEPSEEK_API_KEY}}&lt;/code&gt; başlığı ekleyin, anahtarı ortam değişkeni olarak saklayın.&lt;/li&gt;
  &lt;li&gt;İlk JSON gövdesini yapıştırıp kaydedin. Her değişiklikten sonra tek tıkla tekrar oynatabilirsiniz.&lt;/li&gt;
  &lt;li&gt;Yanıtları karşılaştırmak için yerleşik viewer'ı kullanın, özellikle Non-Think ve Think Max varyantlarının çıktısını gözlemleyin.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Aynı koleksiyonla OpenAI GPT-5.5, Claude ve DeepSeek V4 isteklerini yan yana test edebilirsiniz. Bu, sağlayıcılar arası A/B testini kolaylaştırır ve faturalama görünürlüğü sağlar. Var olan &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 koleksiyonunu&lt;/a&gt; temel URL değiştirerek V4 koleksiyonu haline getirmek mümkündür.&lt;/p&gt;

&lt;h2 id="yol-4-v4-flashi-kendi-kendine-bar%C4%B1nd%C4%B1r"&gt;Yol 4: V4-Flash'i Kendi Kendine Barındır&lt;/h2&gt;

&lt;p&gt;Şirket içi uyumluluk, hava boşluğu veya maliyet gerekçeleriyle kendi sunucunuzda çalıştırmak için MIT lisanslı ağırlıkları kullanabilirsiniz.&lt;/p&gt;

&lt;h3 id="donan%C4%B1m"&gt;Donanım Gereksinimleri&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;V4-Flash (13B aktif, toplam 284B):&lt;/strong&gt; FP8 için 2-4 H100/H200/MI300X kart, INT4 nicemlemede tek bir 80GB kartta sıkı batch ile çalışır.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;V4-Pro (49B aktif, toplam 1.6T):&lt;/strong&gt; 16-32 H100 gerektirir.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="a%C4%9F%C4%B1rl%C4%B1klar%C4%B1-al%C4%B1n"&gt;Model Ağırlıklarını İndirin&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="s2"&gt;"huggingface_hub[cli]"&lt;/span&gt;

huggingface-cli login  &lt;span class="c"&gt;# Gerekirse&lt;/span&gt;

huggingface-cli download deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir&lt;/span&gt; ./models/deepseek-v4-flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir-use-symlinks&lt;/span&gt; False
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;V4-Flash FP8 ~500GB; V4-Pro ise birkaç TB büyüklüğünde olabilir.&lt;/p&gt;

&lt;h3 id="%C3%A7%C4%B1kar%C4%B1m-%C3%A7al%C4%B1%C5%9Ft%C4%B1r%C4%B1n"&gt;Çıkarım Sunucusunu Başlatın&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"vllm&amp;gt;=0.9.0"&lt;/span&gt;

vllm serve deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 4 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 1048576 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dtype&lt;/span&gt; auto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vLLM çalıştıktan sonra, OpenAI uyumlu herhangi bir istemciyi &lt;code&gt;http://localhost:8000/v1&lt;/code&gt; adresine yönlendirin. Apidog koleksiyonunu da bu şekilde kullanabilirsiniz.&lt;/p&gt;

&lt;h2 id="v4%C3%BC-etkili-bir-%C5%9Fekilde-y%C3%B6nlendirme"&gt;V4’ü Etkili Yönlendirme (Prompting)&lt;/h2&gt;

&lt;p&gt;Pratik prompt yazımı için:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
&lt;strong&gt;Düşünme modunu her zaman açıkça belirtin.&lt;/strong&gt; &lt;code&gt;thinking_mode&lt;/code&gt; parametresini göreve göre ayarlayın.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Sistem mesajlarını sadece kişilik ve ton için kullanın.&lt;/strong&gt; Görev tanımını kullanıcı mesajında belirtin.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Kod görevlerinde test vaka(ları) ekleyin.&lt;/strong&gt; Başarısız bir testi ekleyin, modelin daha doğru kod üretme ihtimali artar.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Uzun bağlamlarda, önemli bilgileri prompt'un başı ve sonuna yakın tutmaya çalışın.&lt;/p&gt;

&lt;h2 id="maliyet-kontrol%C3%BC"&gt;Maliyet Kontrolü&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;Varsayılan olarak V4-Flash kullanın.&lt;/strong&gt; V4-Pro'ya yalnızca kalite farkı ölçüldüğünde geçin.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Varsayılan olarak Non-Think kullanın.&lt;/strong&gt; Sadece gerektiğinde Think High veya Think Max’a yükseltin.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;&lt;code&gt;max_tokens&lt;/code&gt; sınırı belirleyin.&lt;/strong&gt; Çoğu yanıt için 2.000 token yeterlidir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apidog ortam değişkenlerini kullanarak test ve prod anahtarlarını ayırabilirsiniz. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; yanıt token sayılarını da gösterir; bu sayede uzun prompt'ları hızlıca tespit edebilirsiniz.&lt;/p&gt;

&lt;h2 id="deepseek-v3-veya-di%C4%9Fer-modellerden-ge%C3%A7i%C5%9F"&gt;DeepSeek V3 veya Diğer Modellerden Geçiş&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;&lt;code&gt;deepseek-chat&lt;/code&gt; / &lt;code&gt;deepseek-reasoner&lt;/code&gt;’dan geçiş:&lt;/strong&gt; Model ID’sini &lt;code&gt;deepseek-v4-pro&lt;/code&gt; veya &lt;code&gt;deepseek-v4-flash&lt;/code&gt; ile değiştirin.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;OpenAI GPT-5.x'ten geçiş:&lt;/strong&gt; Temel URL’yi &lt;code&gt;https://api.deepseek.com/v1&lt;/code&gt; olarak değiştirin, model ID’sini güncelleyin.&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Anthropic Claude’dan geçiş:&lt;/strong&gt; &lt;code&gt;https://api.deepseek.com/anthropic&lt;/code&gt; endpoint’i veya OpenAI formatını kullanın.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="sss"&gt;SSS&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;V4'ü kullanmak için ücretli hesap gerekir mi?&lt;/strong&gt; Web sohbeti ücretsizdir. API için minimum 2 dolar yükleme gerekir. Ücretsiz kullanım yolları için &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4'ü ücretsiz olarak nasıl kullanacağınıza&lt;/a&gt; bakın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Varsayılan olarak hangi varyantı kullanmalıyım?&lt;/strong&gt; V4-Flash ve Non-Think mod ile başlayın. Kaliteyi ölçüp gerekiyorsa yükseltin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4'ü MacBook'ta çalıştırabilir miyim?&lt;/strong&gt; V4-Flash, 128GB RAM'li M3 Max/M4 Max ile ağır nicemleme altında yavaşça çalışabilir. V4-Pro dizüstünde çalışmaz. Dizüstü için API veya web sohbetini kullanın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4 araç kullanımı/fonksiyon çağırmayı destekliyor mu?&lt;/strong&gt; Evet. OpenAI uyumlu endpoint &lt;code&gt;tools&lt;/code&gt; dizisini kabul eder, yanıtlar &lt;code&gt;tool_calls&lt;/code&gt; ile gelir. Anthropic endpoint'i de destekler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yanıtları nasıl akış yapabilirim?&lt;/strong&gt; İstek gövdesinde &lt;code&gt;stream: true&lt;/code&gt; ayarlayın. Yanıt, OpenAI uyumlu SSE akışıdır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API hız limiti var mı?&lt;/strong&gt; Barındırılan API limitleri &lt;a href="https://api-docs.deepseek.com/" rel="noopener noreferrer"&gt;api-docs.deepseek.com&lt;/a&gt;'da yayınlanır. Kendi barındırılan modelde donanımınız dışında ek limit yoktur.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
