Özet
- Kimlik bilgilerinizin yanlışlıkla deposuna eklenmesini önlemek için `api_key` için ortam değişkenleri kullanın.
- API, 100.000 token'lık bir bağlam penceresi destekler, ancak çıktı isteğe bağlı olarak 16.000 token ile sınırlandırılmıştır.
- Hız sınırları dakikada 300 istek olarak ayarlanmıştır ve Python istemcilerinizde sağlam yeniden deneme mantığı gerektirir.
- SSE üzerinden akış yanıtları, sohbet benzeri kullanıcı deneyimleri için gerekli olan gerçek zamanlı token üretimi sağlar.
Python Komut Dosyalarından Anahtarınızı Çıkarma
"için arama sonuçları "moonshot" "api_key" filetype:py test dosyalarında bırakılan sabit kodlanmış kimlik bilgilerini sıkça ortaya çıkarır. Entegrasyonunuzu güvence altına almak için anahtarı betiğinizin yapılandırma katmanından çıkarın. API anahtarınızı üretim uygulamanızın kaynak kodunda doğrudan saklamayın. Anahtarları sabit kodlamak, deposuna erişimi olan herkes için görünür hale getirir ve döndürme stratejilerini karmaşıklaştırır.
Bunun yerine, anahtarı bir ortam değişkeninden veya özel bir yapılandırma dosyasından yükleyin. Bu yaklaşım hassas verileri mantıktan ayrı tutar. Mevcut uygulamaları aradığınızda, basit atamalar gibi birçok örnek göreceksiniz api_key = "sk-...". Bu kalıbı kullanarak yükseltin. os.environ.get() ou une bibliothèque comme python-dotenv. Bu, anahtarınızın sürüm kontrolü geçmişinde görünmez kalmasını sağlar. Ayrıca anahtarları kodu değiştirmeden değiştirmenize olanak tanır.
Bu Konunun Önemi
Güvenlik sadece şifreleme hakkında değildir; görünürlük hakkındadır. Anahtarınızı ayırarak, uygulamanızın saldırı yüzeyini azaltırsınız. Geliştiriciler genellikle bu basit adımı göz ardı eder ve bu da genel GitHub depolarında açığa çıkan kimlik bilgilerine yol açar. Üretim için özel bir hizmet hesabı anahtarı kullanın, böylece komprome uğraması durumunda etki alanını sınırlayın.
Ortam Değişkenleri vs. Sabit Kodlanmış Anahtarlar
Sabitlenmiş anahtarlar kırılgan ve güvensizdir. Ortam değişkenleri, farklı dağıtım ortamlarında kimlik bilgilerini yönetmek için esnek ve güvenli bir yol sağlar. Python betiğinizi bir sunucuya veya bulut platformuna dağıttığınızda, ortam değişkenleri çalışma zamanında enjekte edilir. Bu, bir anahtarı değiştirmek için görüntüyü yeniden oluşturmanız veya hizmetinizi yeniden başlatmanız gerekmediği anlamına gelir.
Sabit kodlanmış bir anahtar ile ortam değişkeni arasındaki farkı değerlendirin. Sabit kodlanmış bir anahtar kodunuzda şöyle görünür: key = "sk-12345". Bir ortam değişkeni şu şekilde görünür: key = os.getenv("API_KEY"). İkincisi daha temiz ve daha profesyoneldir. Ayrıca, kod tabanınızı değiştirmeden geliştirme, test ve üretim ortamları için farklı anahtarlar kullanmanıza olanak tanır.
En İyi Uygulamalar
- Kullan
.envdosyaları yerel geliştirme için. - Değişkenleri CI/CD hattınız aracılığıyla enjekte edin.
- Veröffentlichen Sie niemals Ihre
.envdosyasını sürüm kontrole ekleyin. - Güçlü, rastgele oluşturulan anahtarlar kullanın.
Bu sorumluluk ayrımı, uygulamanızı daha sürdürülebilir ve güvenli hale getirir. Güvenilirlik ve güvenlikte önemli faydalar sağlayan küçük bir değişikliktir.
Python'da Hız Sınırlarını İşleme (300 RPM)
API'miz, anahtar başına dakikada 300 istek için limit uygular. Bu limiti aşarsanız, 429 Too Many Requests hatası alırsınız. Bunu zarifçe yönetmek için Python istemcinizde üstel geri çekilme (exponential backoff) uygulayın. Bu, her başarısız denemeden sonra bekleme süresini artırarak anlamına gelir. Bu, API zaten zorlandığında uygulamanızın API'yi isteklerle doldurmasını önler.
Hız sınırlama, hizmet kararlılığını korumak için kritiktir. Doğru şekilde işlenmezse uygulamanız çökebilir veya başarısız istekleri yeniden denemek için aşırı kaynak tüketebilir. Şu kütüphaneyi kullanın: tenacity veya özel bir yeniden deneme döngüsü uygulayın. Bu araçlar, yeniden deneme sayısını, başlangıç gecikmesini ve maksimum gecikmeyi belirtmenizi sağlar.
Uygulama Örneği
Bir 429 hatasıyla karşılaştığınızda, yeniden denemeden önce birkaç saniye bekleyin. Bu, API'nin toparlanmasına zaman tanır. Sınırların içinde kalmak için kullanımınızı da izleyebilirsiniz. Bazı istemciler mevcut kullanımınızı gösteren başlıklar sağlar. Bu bilgileri istek hızınızı dinamik olarak ayarlamak için kullanın. Bu, yoğun zamanlarda bile sorunsuz bir kullanıcı deneyimi sağlar.
SSE ile Akış Uygulaması
Server-Sent Events (SSE) üzerinden akış yanıtlar, metin oluşturulurken gösterilmesini sağlar. Bu, anında geri bildirim sağlayarak kullanıcı deneyimini iyileştirir. Tüm yanıtın tamamlanmasını beklemek yerine, tokenlar geldikçe gösterebilirsiniz. Bu özellikle uzun yanıtlar veya sohbet uygulamaları için kullanışlıdır.
Python'da akış (streaming) uygulamak için stream=True parametresi API isteğinizde. Yanıt parçalarını yineleyin ve her tokenı işleyin. Bu, gerçek zamanlı bir sohbet arayüzü oluşturmanıza olanak tanır. Akış, algılanan gecikmeyi azaltarak uygulamanızın daha hızlı hissetmesini sağlar.
Teknik Detaylar
Her bir parça kısmi metin ve meta veri içerir. Token kullanımını son parçadan çıkarabilirsiniz. Bu, maliyetleri doğru bir şekilde izlemenizi sağlar. Akış, bellek kullanımını azalttığı için verimlidir. İşlemeden önce tüm yanıtı bellekte tutmanıza gerek yoktur. Bu, özellikle uzun bağlamlar için önemlidir.
Bağlam Pencerelerini Yönetme (100k Token)
API, 100.000 token'lık bir bağlam penceresini destekler. Bu, tüm belgeler veya uzun konuşma geçmişleri gibi büyük miktarda veri göndermenize olanak tanır. Ancak, maksimum çıktı istek başına 16.000 token ile sınırlıdır. Daha uzun bir yanıta ihtiyacınız varsa, girdilerinizi parçalara ayırmanız veya birden fazla istek yapmanız gerekebilir.
Bağlamı verimli bir şekilde yönetmek performans için kritiktir. Eski mesajları kısaltın veya uzun belgeleri göndermeden önce özetleyin. Bu, bağlam pencerenizin sınırlar içinde kalmasını sağlar ve maliyetleri düşürür. Token'lar hem giriş hem de çıktı için sayılır. Bu dengeyi anlamak, uygulamanızı optimize etmenize yardımcı olur.
Stratejiler
- Uzun belgeleri göndermeden önce özetleyin.
- Eski konuşma geçmişini kısaltın.
- Büyük veri setleri için parçalama kullanın.
- Limitler içinde kalmak için token kullanımını izleyin.
Bu yaklaşım, uygulamanızın duyarlı ve maliyet etkin kalmasını sağlar. Ayrıca büyük miktarda bağlam gerektiren karmaşık görevleri işlemenize olanak tanır.
Sansürsüz Yanıtlar İçin Hata Yönetimi
Kısıtlanmamış modeller beklenmedik çıktılar üretebilir. Bu durumları yönetmek için sağlam hata işleme uygulayın. HTTP durum kodlarını kontrol edin ve API'den hata mesajlarını ayrıştırın. Bu, hız sınırları veya geçersiz girdiler gibi belirli hataları zarifçe yönetmenizi sağlar.
Hata yönetimi, güvenilirlik için kritiktir. Yoksa uygulamanız çökebilir veya kullanıcılara kafa karıştırıcı hatalar gösterebilir. İstisnaları yakalamak ve uygun şekilde yönetmek için try-except bloklarını kullanın. Hata ayıklama ve izleme için hataları günlüğe kaydedin. Bu, sorunları hızlıca belirlemenize ve çözmenize yardımcı olur.
Yaygın Hatalar
Yaygın hatalar arasında 400 Bad Request, 401 Unauthorized, 429 Too Many Requests ve 500 Internal Server Error bulunur. Her biri farklı bir işleme stratejisi gerektirir. Örneğin, bir 401 hatası süresi dolmuş bir anahtara işaret edebilir. Bir 429 hatası, geri çekilme ile yeniden deneme gerektirir. Bir 500 hatası geçici bir sunucu sorununa işaret edebilir.
Maliyet İzleme ve Token Muhasebesi
Maliyetleri izlemek için token kullanımını izleyin. API, 1M girdi tokenı başına $0.15 ve 1M çıktı tokenı başına $0.50 ücretlendirir. Maliyetleri hesaplamak için API yanıtındaki token kullanım bilgilerini kullanın. Bu, giderlerinizi bütçelendirmenizi ve tahmin etmenizi sağlar.
Maliyet izleme, finansal planlama için esastır. Bu olmadan farkında olmadan aşırı harcama yapabilirsiniz. Token kullanımını zaman içinde izlemek için günlük kayıtları (logging) uygulayın. Bu verileri, kalıpları belirlemek ve uygulamanızı optimize etmek için kullanın. Örneğin, belirli istemlerin (prompt) diğerlerinden daha fazla token tükettiğini fark edebilirsiniz.
Optimizasyon İpuçları
- Mümkün olduğunda kısa istemler kullanın.
- Uzun girdileri özetleyin.
- Çıkış token kullanımını izleyin.
- Yüksek kullanım için uyarılar ayarlayın.
Bu yaklaşım, performansı korurken bütçeniz dahilinde kalmanızı sağlar. Ayrıca iyileştirme alanlarını belirlemenize yardımcı olur.
$0.50 Deneme Anahtarı ile Test
Her yeni hesap için 7 gün boyunca geçerli $0.50 deneme kredisi sağlanır. Daha büyük bir yükleme yapmadan önce entegrasyonunuzu test etmek için bunu kullanın. Bu, kodunuzun doğru çalıştığını doğrulamanıza ve kullanım durumunuz için maliyetleri tahmin etmenize olanak tanır.
Test, kalite güvencesi için kritiktir. Uygulamanızı zorlamak için deneme anahtarını kullanın. Farklı istemleri, modelleri ve parametreleri test edin. Bu, canlıya geçmeden önce herhangi bir sorunu belirlemenize yardımcı olur. Deneme kredisi, finansal risk olmadan başlamak için harika bir yoldur.
Başlarken
Deneme anahtarınızı almak için bir hesap oluşturun. Bu anahtarı kullanarak ilk API isteklerinizi yapın. Kredilerinizin bitmediğinden emin olmak için token kullanımınızı izleyin. Bu, API'nin performansını ve fiyatlandırmasını gerçekçi bir şekilde deneyimlemenizi sağlar.