İstem Önbelleği Nedir? En İyi Uygulamalar Açıklandı

Büyük Dil Modelleri (LLM'ler) yapay zeka ile etkileşimimizi değiştirdi. Metin üretimi, çeviri gibi karmaşık görevler için kullanılır. Ancak, maliyet ve gecikme olabilir. Benzer istemler tekrar gönderilir.

Efe Demir

Efe Demir

5 June 2025

İstem Önbelleği Nedir? En İyi Uygulamalar Açıklandı

Büyük Dil Modelleri (BDM'ler), metin oluşturma, çeviri, soru yanıtlama ve daha fazlası gibi karmaşık görevleri mümkün kılarak, yapay zeka ile etkileşim şeklimizde devrim yarattı. Ancak, özellikle gelişmiş istemlerle bu güçlü modellerle etkileşim kurmak, önemli hesaplama maliyetlerine ve gecikmelere neden olabilir. Birçok uygulama, benzer veya kısmen aynı istemleri tekrar tekrar göndermeyi içerir. Sabit bir sistem istemi, aynı talimatlarla parçaları işleyen bir belge analiz aracı veya tutarlı araç tanımlamaları kullanan bir temsilciye sahip bir sohbet robotu düşünün. Bu senaryolarda, BDM, aynı ilk bilgileri (istem öneki) tekrar tekrar işleyerek, hesaplamayı boşa harcar ve yanıt sürelerini artırır.

İstem önbelleğe alma, bu verimsizliği gidermek için güçlü bir optimizasyon tekniği olarak ortaya çıkıyor. BDM sağlayıcılarının, bir istemin ilk, statik bölümüyle (önek) ilişkili ara hesaplama durumunu depolamasına olanak tanır. Sonraki istekler aynı öneki kullandığında, model bu önbelleğe alınmış durumu yeniden kullanabilir, gereksiz hesaplamayı atlayabilir ve yalnızca istemin yeni, dinamik bölümünü (son ek) işleyebilir. Bu, hem gecikmede hem de maliyette önemli iyileştirmelere yol açarak, BDM uygulamalarını daha hızlı ve daha ekonomik hale getirir.

Bu kılavuz, istem önbelleğe almanın kapsamlı bir genel görünümünü, nasıl çalıştığını, faydalarını, uygulama ayrıntılarını (Anthropic'in API'sine odaklanarak, bu da AWS Bedrock'taki Claude modelleri için de geçerlidir), fiyatlandırma hususlarını, sınırlamalarını ve en iyi uygulamalarını sunmaktadır.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Maksimum verimlilikle birlikte çalışmak için Geliştirici Ekibiniz için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

İstem Önbelleğe Alma Nasıl Çalışır: Mekanizma

Temelinde, istem önbelleğe alma, birçok BDM etkileşiminin tekrarlayan doğasından yararlanır. Bir BDM'ye bir istem gönderdiğinizde, model, bir iç temsil veya durum oluşturmak için giriş belirteçlerini sırayla işler. İstem önbelleğe alma bu süreci keser.

  1. Önbellek Hatası (İlk İstek / Değiştirilmiş Önek): Bir istek, yakın zamanda görülmemiş veya mevcut hiçbir önbellek girdisiyle eşleşmeyen bir istem önekiyle geldiğinde, BDM tüm istemi her zamanki gibi işler. Ancak, belirli bir önek sınırı için önbelleğe alma etkinleştirilmişse, sistem, bu öneke karşılık gelen iç model durumunu, onu işledikten sonra depolar. Bu genellikle bir önbellek yazma olarak adlandırılır. Genellikle önek içeriğinin (sistem istemleri, araç tanımlamaları ve önbellek noktasına kadar olan mesajlar dahil) kriptografik bir karması olan benzersiz bir tanımlayıcı, bu depolanmış durumla ilişkilendirilir ve önbellek anahtarı olarak görev yapar.
  2. Önbellek İsabeti (Sonraki İstek): Sonraki bir istek, önbelleğin Yaşam Süresi (TTL) içinde gelirse ve öneki, depolanmış bir önbellek anahtarıyla ilişkili içerikle tam olarak eşleşirse, sistem kaydedilmiş iç durumu alır. BDM, onu yeniden işlemden geçirmeden önekin sonuna doğru etkili bir şekilde hızlıca ilerler. Daha sonra yalnızca istemin yeni bölümünü (son ek) işlemesi gerekir. Bu, bir önbellek okuma veya önbellek isabeti olarak bilinir.

Önbelleğe Alınan Önek:

"Önek" tam olarak neyden oluşur, API'ye ve isteğinizi nasıl yapılandırdığınıza bağlıdır. Genel olarak, çağrılar arasında yeniden kullanmayı amaçladığınız isteminizin statik kısımlarını içerir. Örneğin, Anthropic'in API yapısını referans olarak kullanırsak:

Sıra genellikle önemlidir (örneğin, Anthropic araçları, ardından sistemi, ardından mesajları işler). Önbelleğe alınabilir önekin nerede bittiğini, belirli API parametrelerini kullanarak belirlersiniz.

Önbellek Özellikleri:

Neden İstem Önbelleğe Alma Kullanmalısınız?

İstem önbelleğe almayı uygulamak, öncelikle performans ve maliyet verimliliğine odaklanan önemli avantajlar sunar.

  1. Azaltılmış Gecikme Süresi: Bu genellikle en doğrudan faydadır. Potansiyel olarak binlerce önek belirtecinin yeniden işlenmesini atlayarak, BDM, ilgili yeni bilgileri (istem son eki) çok daha hızlı işlemeye başlayabilir. Bu, doğrudan son kullanıcı için daha hızlı yanıt sürelerine dönüşür. Sohbet robotları veya kod asistanları gibi gerçek zamanlı etkileşim gerektiren uygulamalar için bu hızlanma çok önemlidir. AWS Bedrock, desteklenen modeller için potansiyel olarak %85'e varan gecikme azaltmaları bildirmektedir.
  2. Azaltılmış Maliyet: BDM API'leri tipik olarak işlenen giriş ve çıkış belirteçlerinin sayısına göre ücretlendirilir. Bir önbellek isabeti oluştuğunda, önbellekten okunan belirteçler için genellikle standart giriş belirteci oranına kıyasla önemli ölçüde daha düşük bir ücretlendirilirsiniz. Yalnızca son ekteki yeni belirteçler (ve potansiyel olarak ilk önbellek yazma için biraz daha yüksek bir oran) için standart giriş oranını ödersiniz. Büyük, statik öneklerle yapılan birçok çağrı üzerinden, bu önemli maliyet tasarruflarına yol açabilir. AWS Bedrock, %90'a varan maliyet azaltmalarının mümkün olduğunu öne sürüyor.
  3. Yaygın Kullanım Durumları için Optimize Edilmiş Performans: Önbelleğe alma, doğal olarak istem tekrarını içeren uygulamalar için özellikle etkilidir:
  1. Kesintisiz Entegrasyon: İstem önbelleğe alma, diğer BDM özellikleriyle birlikte çalışacak şekilde tasarlanmıştır. Örneğin, Temsilciler ve Koruma Rayları gibi AWS Bedrock özellikleriyle entegre olur ve tekrarlanan bileşenler için tam gecikme cezasına maruz kalmadan karmaşık kurulumlardan yararlanmanıza olanak tanır.

İstem Önbelleğe Alma Nasıl Etkinleştirilir

İstem önbelleğe almayı etkinleştirmenin tam yöntemi, BDM sağlayıcıları ve API'leri arasında biraz farklılık gösterir. Burada, Anthropic'in Mesajlar API'sini kullanarak uygulamaya odaklanacağız; bu, doğrudan Anthropic aracılığıyla veya AWS Bedrock gibi platformlar aracılığıyla Claude modelleri için geçerlidir.

Genel İlke: İsteminizi Yapılandırın

Anahtar, API çağrılarınızı, statik, yeniden kullanılabilir içeriğin önce, ardından dinamik içeriğin gelmesi için yapılandırmaktır.

+-------------------------+--------------------------+
|      STATİK ÖNEK      |     DİNAMİK SON EK       |
| (Sistem İstemleri, Araçlar,  | (Yeni Kullanıcı Sorgusu, En Son  |
|  Birkaç Deneme Örnekleri,     |  Konuşma Turu, vb.)|
|  İlk Bağlam)       |                          |
+-------------------------+--------------------------+
          ^
          |
   Burada Önbellek Kesme Noktası

Anthropic API Uygulaması (cache_control)

Anthropic, önbelleğe almayı etkinleştirmek ve yönetmek için Mesajlar API istek gövdesi içinde cache_control parametresini kullanır.

Örnek (Anthropic Python SDK): Bir Sistem İstemini Önbelleğe Alma

import anthropic

client = anthropic.Anthropic(api_key="YOUR_API_KEY")

# İlk İstek (Önbellek Yazma)
response1 = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            # Bu sistem istemi, önbelleğe almak istediğimiz içeriktir
            "text": "Astrofizik konusunda uzmanlaşmış, yardımcı bir asistansınız. Bilgi tabanınız, yıldız evrimi, kozmoloji ve gezegen bilimi hakkında kapsamlı ayrıntıları içerir. Doğru ve öz bir şekilde yanıt verin.",
            "cache_control": {"type": "ephemeral"} # Önbelleğe alma için işaretle
        }
    ],
    messages=[
        {
            "role": "user",
            # Bu, öneke önbelleğe alınmayan dinamik kısımdır
            "content": "Chandrasekhar limiti nedir?"
        }
    ]
)
print("İlk Yanıt:", response1.content)
print("Kullanım (Yazma):", response1.usage)
# Örnek kullanım çıktısı şöyle görünebilir:
# Usage(Write): Usage(input_tokens=60, output_tokens=50, cache_creation_input_tokens=60, cache_read_input_tokens=0)

# Sonraki İstek (Önbellek İsabeti - TTL içinde, örneğin, < 5 dakika sonra)
response2 = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            # Öncekiyle TAM OLARAK aynı sistem istemi
            "text": "Astrofizik konusunda uzmanlaşmış, yardımcı bir asistansınız. Bilgi tabanınız, yıldız evrimi, kozmoloji ve gezegen bilimi hakkında kapsamlı ayrıntıları içerir. Doğru ve öz bir şekilde yanıt verin.",
            "cache_control": {"type": "ephemeral"} # Tekrar işaretle
        }
    ],
    messages=[
        {
            "role": "user",
            # Yeni dinamik sorgu
            "content": "Karanlık enerji kavramını açıklayın."
        }
    ]
)
print("\\\\nİkinci Yanıt:", response2.content)
print("Kullanım (İsabet):", response2.usage)
# Örnek kullanım çıktısı şöyle görünebilir:
# Usage(Hit): Usage(input_tokens=8, output_tokens=75, cache_creation_input_tokens=0, cache_read_input_tokens=60)

Bu örnekte:

  1. İlk çağrı, sistem isteminin 60 belirtecini ve kullanıcı mesajının 8 belirtecini işler. Sistem istemini önbelleğe alır (cache_creation_input_tokens: 60).
  2. İkinci çağrı, aynı sistem istemi için bir önbellek isabeti bulur (cache_read_input_tokens: 60). Yalnızca yeni kullanıcı mesajının 8 belirtecinin standart girdi olarak işlenmesi gerekir (input_tokens: 8).

Örnek (Konuşmada Artımlı Önbelleğe Alma):

Konuşma geçmişini önbelleğe almak için, sonraki tur için önbelleğe dahil etmek istediğiniz son mesajın üzerine cache_control yerleştirebilirsiniz.

# 1. Tur (Kullanıcı sorar, Asistan yanıtlar - Önbellek Sistem + 1. Tur)
response_turn1 = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    max_tokens=500,
    system=[{"type": "text", "text": "Dostça bir kişiliği koruyun."}], # Bunu da önbelleğe alın
    messages=[
        {"role": "user", "content": "Merhaba Claude!"},
        {"role": "assistant", "content": "Merhaba! Bugün size nasıl yardımcı olabilirim?", "cache_control": {"type": "ephemeral"}} # Buraya kadar önbelleğe alın
    ]
)
# Kullanıcının 2. Tur için başka bir mesaj eklediğini varsayalım
# 2. Tur (Sistem + 1. Tur için önbellek isabeti, 2. Tur için önbellek yazma)
response_turn2 = client.messages.create(
    model="claude-3-5-sonnet-20240620",
    max_tokens=500,
    system=[{"type": "text", "text": "Dostça bir kişiliği koruyun."}], # Aynı sistem istemi
    messages=[
        {"role": "user", "content": "Merhaba Claude!"}, # Artık önbelleğe alınmış önekin bir parçası
        {"role": "assistant", "content": "Merhaba! Bugün size nasıl yardımcı olabilirim?"}, # Artık önbelleğe alınmış önekin bir parçası
        {"role": "user", "content": "Bana eğlenceli bir gerçek söyleyin."}, # Yeni dinamik içerik
        {"role": "assistant", "content": "Balın asla bozulmadığını biliyor muydunuz?", "cache_control": {"type": "ephemeral"}} # 2. Turun sonuna kadar önbelleğe alın
    ]
)
# 2. Tur kullanımı, Sistem+1. Tur için cache_read_input_tokens'u gösterir
# ve 2. Turun yeni kullanıcı/asistan mesajları için cache_creation_input_tokens'u

Önbellek Performansını İzleme:

API yanıtı, önbelleğin nasıl kullanıldığını ortaya koyan kullanım ölçümlerini içerir:

Bu alanları izlemek, önbelleğe alma stratejinizin etkili olup olmadığını anlamak için çok önemlidir. Zaman içinde cache_read_input_tokens'un cache_creation_input_tokens'a göre yüksek olması, başarılı önbelleğe almayı gösterir.

AWS Bedrock:

AWS Bedrock aracılığıyla erişilen Anthropic Claude gibi modeller için, önbelleğe alma mekanizması tipik olarak, model çağırma istek gövdesi (InvokeModel veya InvokeModelWithResponseStream'e geçirilen application/json formatı) içinde aynı cache_control parametresi kullanılarak etkinleştirilir. JSON gövdesini, belirli modelin gereksinimlerine (örneğin, Anthropic'in Mesajlar API formatı) göre yapılandırır ve yukarıda gösterildiği gibi cache_control alanını eklersiniz. Kullandığınız model sağlayıcısı için belirli Bedrock belgelerini kontrol edin.

İstem Önbelleğe Alma için Fiyatlandırma Nedir?

İstem önbelleğe alma, standart belirteç maliyetlerine kıyasla daha nüanslı bir fiyatlandırma yapısı sunar. Genel olarak faydalı olsa da, dahil olan farklı belirteç türlerini anlamak önemlidir:

  1. Temel Giriş Belirteçleri: Bunlar, önbelleğe alınmış bir önekin parçası olmayan (yani, bir önbellek isabeti senaryosunda dinamik son ek veya önbelleğe alma kullanılmazsa veya başarısız olursa tüm istem) standart giriş belirteçleridir. Modelin standart giriş belirteci oranında ücretlendirilirler.
  2. Önbellek Yazma Belirteçleri (cache_creation_input_tokens): Bir önek ilk kez işlendiğinde (veya bir önbellek hatasından sonra) ve önbelleğe yazıldığında, bu önekle ilişkili belirteçler genellikle premium bir oranda ücretlendirilir. Örneğin, Anthropic, önbellek yazmalar için temel giriş belirteci oranından %25 daha fazla ücret alır. Bu, hem önbellek girdisini işleme hem de depolama maliyetini yansıtır.
  3. Önbellek Okuma Belirteçleri / Önbellek İsabet Belirteçleri (cache_read_input_tokens): Bir önbellek isabeti oluştuğunda, önbellekten yüklenen öneke karşılık gelen belirteçler önemli ölçüde indirimli bir oranda ücretlendirilir. Örneğin, Anthropic, önbellek okumalar için temel giriş belirteci oranının yalnızca %10'unu ( %90 indirim) ücretlendirir. Bu, hesaplama tasarruflarını yansıtır.
  4. Çıkış Belirteçleri: Yanıtta BDM tarafından oluşturulan belirteçler, giriş için önbelleğe alma kullanılıp kullanılmadığına bakılmaksızın, modelin standart çıkış belirteci oranında ücretlendirilir.

Örnek Fiyatlandırma Tablosu (Anthropic Claude Modelleri - örnek oranlar):

Model Temel Giriş (/MTok) Önbellek Yazma (/MTok) (+%25) Önbellek Okuma (/MTok) (-%90) Çıkış (/MTok)
Claude 3.5 Sonnet $3.00 $3.75 $0.30 $15.00
Claude 3 Haiku $0.25 $0.30 $0.03 $1.25
Claude 3 Opus $15.00 $18.75 $1.50 $75.00

(Not: En güncel oranlar için her zaman Anthropic ve AWS Bedrock'in resmi fiyatlandırma sayfalarına bakın.)

Maliyet etkinliği, verilen bir önek için önbellek isabetlerinin önbellek hatalarına kıyasla ne sıklıkta oluştuğuna büyük ölçüde bağlıdır. Büyük bir önek birçok kez yeniden kullanılırsa, önbellek yazmanın ilk yüksek maliyeti, sonraki önbellek okumalarından elde edilen önemli tasarruflarla hızla dengelenir.

İstem Önbelleğe Almanın Sınırlamaları

Güçlü olsa da, istem önbelleğe almanın dikkate alınması gereken sınırlamaları ve faktörleri vardır:

Önbelleğe Alınabilir Minimum Uzunluk: Modeller, önbelleğe alınmaya uygun bir önek için genellikle minimum bir belirteç gereksinimine sahiptir. Bu sınırdan daha kısa istemler, cache_control ile işaretlense bile önbelleğe alınamaz.

Önbellek Geçersiz Kılma (Önbellek Kırma): Önbellek, önekteki değişikliklere karşı son derece duyarlıdır. Herhangi bir değişiklik önbelleği bozacak ve yeni bir yazma zorlayacaktır:

Önbellek Yaşam Süresi (TTL): Önbelleğin geçici olduğunu unutmayın (örneğin, Anthropic için 5 dakikalık minimum TTL, kullanımda yenilenir). TTL içinde yeniden kullanılmayan öneklerin süresi dolar. Şu anda, önbelleği otomatik davranışının ötesinde manuel olarak temizlemenin veya uzatmanın bir yolu yoktur.

Eşzamanlılık: İlk istek bitip girdiyi önbelleğe yazmadan önce, bir öneği hedefleyen birçok aynı isteği eşzamanlı olarak gönderirseniz, sonraki istekler ilk yazma tamamlanana kadar önbellek hatalarıyla sonuçlanabilir. Paralel senaryolarda garantili isabetler için, diğerlerini göndermeden önce ilk yanıtı beklemeniz gerekebilir.

Desteklenen Modeller: İstem önbelleğe alma, tüm modellerde veya sağlayıcılarda evrensel olarak mevcut değildir. Her zaman kullanmayı düşündüğünüz belirli modelin belgelerini kontrol edin. (Şu anda çeşitli Claude 3 ve 3.5 modelleri için onaylanmıştır).

Hata Ayıklama: Önbellek hatalarına neden olan ince değişiklikleri belirlemek bazen zor olabilir. Çağrılar arasındaki tam önek içeriğinin dikkatli bir şekilde karşılaştırılması gerekir.

Etkili Önbelleğe Alma için En İyi Uygulamalar

İstem önbelleğe almanın faydalarını en üst düzeye çıkarmak için:

  1. İstemleri Akıllıca Yapılandırın: En kararlı, yeniden kullanılabilir bilgileri (sistem istemleri, talimatlar, araç tanımlamaları, bağlam belgeleri, birkaç deneme örnekleri) istem dizinizin başlangıcına yerleştirin. Dinamik, sık değişen bilgileri (kullanıcı sorguları, en son konuşma turları) önbellek kesme noktasından sonra yerleştirin.
  2. Optimal Kesme Noktalarını Belirleyin: cache_control'ü (veya eşdeğer mekanizmayı) kasıtlı olarak kullanın. Gerçekten statik içeriğin mümkün olan en büyük bloğunun sonunu işaretleyin. Birden fazla kesme noktası kullanıyorsanız (Anthropic'in izin verdiği gibi), istem yapınızdaki farklı kararlılık seviyelerini göz önünde bulundurun.
  3. Önbellek Kullanımını İzleyin: API yanıtlarınızdaki cache_creation_input_tokens ve cache_read_input_tokens'u düzenli olarak kontrol edin. Zaman içinde yazmalara göre yüksek bir okuma oranı hedefleyin. Çoğunlukla yazma görürseniz, önekleriniz çok sık değişiyor olabilir veya önbelleğe alınabilir minimum uzunluğun altında olabilirler.
  4. Gereksiz Değişikliklerden Kaçının: Önekin içeriğine yapılan (bir boşluk eklemek veya noktalama işaretlerini değiştirmek gibi) küçük, önemsiz değişikliklerin bile önbelleği bozacağını unutmayın. Öneklerin nasıl oluşturulduğunda tutarlılık sağlayın.
  5. Maliyet Takaslarını Göz Önünde Bulundurun: Önbelleğe alma, uzun ve sık sık yeniden kullanılan önekler için en etkilidir. Çok kısa önekleri önbelleğe almayın, çünkü potansiyel tasarruflar minimumdur ve karmaşıklığa değmeyebilir. Yüksek oranda değişken kullanıcı girdilerini önbelleğe almaktan kaçının.
  6. Test Edin ve Yineleyin: Belirli uygulamanızın iş yükü ve kullanım kalıpları için en uygun stratejiyi bulmak için farklı istem yapılarını ve önbellek kesme noktalarını deneyin.

Sonuç

İstem önbelleğe alma, büyük dil modelleri üzerine uygulamalar geliştiren herkes için hayati bir optimizasyon tekniğidir. Statik istem öneklerinin hesaplama durumunu akıllıca depolayarak ve yeniden kullanarak, uzun veya tekrarlayan istemlerle ilişkili gecikme ve maliyet zorluklarını doğrudan ele alır. Önbelleğe almanın nasıl çalıştığını, seçtiğiniz BDM sağlayıcınız (Anthropic'in cache_control'ü gibi) için belirli uygulama ayrıntılarını, ilgili fiyatlandırma nüanslarını ve sınırlamalarını anlamak, daha verimli, duyarlı ve ekonomik yapay zeka uygulamaları tasarlamanıza olanak tanır. BDM kullanım durumları karmaşıklık ve ölçekte büyüdükçe, istem önbelleğe alma gibi özelliklerden yararlanmak, performanslı ve sürdürülebilir çözümler oluşturmak için giderek daha önemli olacaktır.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Maksimum verimlilikle birlikte çalışmak için Geliştirici Ekibiniz için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin