BaşlarkenKılavuz
Bir API anahtarını güvenle saklayın: ortam değişkeni, .gitignore, sızıntı düzeltmesi
CheapTokens anahtarınızı koddan ve git'ten uzak tutun: bir ortam değişkeni ayarlayın, .env dosyasını .gitignore'a ekleyin ve anahtar sızarsa ne yapacağınızı bilin.

Bu sayfada
Anahtarı kodunuzda değil, bir ortam değişkeninde tutun ve .env dosyasını .gitignore içine bir satır ekleyerek git'ten uzak tutun. Anahtar zaten bir yerde herkese açık hale geldiyse önce anahtarla ilgilenin, temizliği sonra yapın: anahtar hâlâ kodunuzda ve araçlarınızda dururken git geçmişini temizlemek hiçbir şeyi düzeltmez.
Bütün fikir bu. Bu kılavuz işin uygulamalı hali (temeller API anahtarı nedir yazısında): üç komut, çalışan tek bir istek ve kötü gün için kısa bir plan.
Anahtar neden kodunuzda olmamalı#
API anahtarı, paranızı harcayan bir paroladır. Onu elinde tutan herkes bakiyeniz üzerinden istek gönderebilir ve hizmet onları sizden ayırt edemez.
İşlerin ters gitmesinin olağan yolu sıkıcıdır. İlk isteği çalıştırmak için anahtarı bir betiğe yapıştırırsınız, betik çalışır, git push yaparsınız ve depo herkese açık olur. Ya da yapılandırma dosyanızı bir iş arkadaşınıza gönderirsiniz. Ya da köşesinde anahtar görünen bir hata ekran görüntüsü alırsınız. Her seferinde sonuç aynıdır.
GitHub bu kalıbı iyi bilir. Gizli bilgi taraması (GitHub docs, 29 Ekim 2026'da kontrol edildi) tüm dallardaki tam Git geçmişinde sabit kodlanmış kimlik bilgilerini arar; ayrıca issue'lar, pull request'ler, tartışmalar, wiki'ler ve gizli gist'ler içinde de arar ve bulduğunda bir uyarı oluşturur. Yani bir sonraki commit'inizde satırı silmek hiçbir şeyi değiştirmez: eski commit'te hâlâ durur.
Aynı betiğin öncesi ve sonrası.
Karşılaştır
Aynı betik, anahtar koddan çıkarıldı
Anahtar kodda
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="<your-key>", # pasted here: ends up in git
)Anahtar ortamdan
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)İkinci sürüm olduğu gibi GitHub'a, bir sohbete veya kod incelemesine gidebilir. Anahtar makinenizde, dosyanın dışında yaşar.
Adım 1: anahtarı bir ortam değişkenine koyun#
Ortam değişkeni, terminalinizin başlattığı her programa verdiği adlandırılmış bir değerdir. Betik CHEAPTOKENS_ değişkenini adıyla ister ve nereden geldiğini hiç görmez.
macOS ve Linux'ta:
export CHEAPTOKENS_API_KEY="<your-key>"Windows PowerShell'de:
setx CHEAPTOKENS_API_KEY "<your-key>"İki ayrıntı insanları yanıltır. export yalnızca o terminal penceresi için geçerlidir, kalıcı olması için satırı kabuk profilinize (~/.zshrc veya ~/.bashrc) ekleyin. Ve setx yazdığınız pencereyi değiştirmez: test etmeden önce yeni bir terminal açın.
Şimdi tam bir istek. OpenAI uyumlu uç noktayı, https:/, ve tam kimliğiyle DeepSeek-V4-Flash'i kullanır (deepseek-; adlar sağlayıcılar arasında farklılık gösterdiği için kimlikleri CheapTokens docs üzerinden alın):
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
resp = client.chat.completions.create(
model="deepseek-ai/DeepSeek-V4-Flash-0731",
messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)
print(resp.usage)Kısa bir selamlama, yaklaşık 20 token giriş ve 20 token çıkıştan oluşan bir istektir; mevcut fiyatlarla bu $0.0000023 tutarındadır (tam liste fiyatlandırma sayfasında). Henüz ilk isteğinizi göndermediyseniz, CheapTokens ile ilk API isteğiniz sıfırdan adım adım anlatır.
Modelin yanıtı choices[0]. içinde döner ve usage saydığı token'ları gösterir. Anahtar dosyada hiç görünmez.

Adım 2: commit etmeden bir .env dosyası kullanın#
Her yeni pencerede export yazmak yorucu olur. Bir .env dosyası değeri projenin yanında tek bir yerde tutar:
CHEAPTOKENS_API_KEY=<your-key>Python bunu python-dotenv ile okur (pip install python-):
from dotenv import load_dotenv
load_dotenv() # fills os.environ from .envDosya ancak git onu hiç görmezse güvenlidir. İlk commit'ten önce .gitignore içine ekleyin:
echo ".env" >> .gitignore
git check-ignore -v .envHer şey doğruysa ikinci komut . gibi bir şey yazdırır: git size dosyayı hangi kuralın yok saydığını söyler. Hiçbir şey yazdırmıyorsa kural çalışmıyor demektir. Windows'ta bir düzenleyicide .env satırıyla .gitignore oluşturun ya da Add- kullanın: PowerShell'in >> komutu UTF-16 yazabilir ve git bunu yok sayabilir.
Bir tuzak: .gitignore yalnızca git'in henüz izlemediği dosyaları etkiler. .env daha önce bir kez commit edildiyse, git'in onu izlemeyi bırakması için git rm - çalıştırın ve içindeki anahtarı açığa çıkmış sayın (aşağıda daha fazlası var). Düzenli bir alışkanlık, değer yerine değişken adını ve bir yer tutucuyu içeren bir .env.example commit etmektir; böylece bir ekip arkadaşı neyi ayarlaması gerektiğini bilir.
Anahtar sızdıysa: sırasıyla ne yapmalı#
Belki anahtar herkese açık bir depoya gitti, belki bir ekran görüntüsünde durdu, belki tüm yapılandırmayı bir forum başlığına yapıştırdınız. Sıra, herhangi bir adımın hızından daha önemlidir.
GitHub'ın kendi yönergesi (aynı sayfa, 29 Ekim 2026'da kontrol edildi) kimlik bilgisini hemen döndürmenizdir; Git geçmişini yeniden yazmak isteğe bağlıdır ve kimlik bilgisi iptal edildikten sonra çoğu zaman gereksizdir. İnsanlar bunu tersine yapma eğilimindedir: anahtar hâlâ çalışırken geçmişi temizlemek için bir saat harcarlar. Yapmayın.
Durumunu seç
Anahtarınıza ne oldu? En yakın durumu seçin
Cevabı görmek için bir seçenek seçin
Anahtar artık herkese açık bir commit'teydi
Önce anahtarı koddan çıkarın, ortam değişkenine geçin, .env satırını .gitignore içine ekleyin ve göndermediğiniz istekler için bakiyenize bakın. Geçmişi temizlemek sonrasında yapılacak güzel bir ekstra, acil kısım değil.
Anahtar bir ekran görüntüsünde veya paylaşılan bir dosyadaydı
Aynı sıra: o anahtarı araçlarınızda kullanmayı bırakıp ortam değişkenine geçin, sonra mümkünse gönderiyi veya dosyayı silin. Silinen bir ekran görüntüsü çoktan kopyalanmış olabilir, bu yüzden yalnızca silmeye güvenmeyin.
Aynı anahtar birkaç araçta kullanılıyor
Anahtarı barındıran her yeri gözden geçirin: kabuk profiliniz, .env dosyaları, düzenleyici ve terminal araçları; her birini ortam değişkenine yönlendirin, böylece değiştirilecek tek bir yer olsun. Bir araç değişkeni okuyamazsa, 401/404 sorun giderme kılavuzu hatanın nasıl göründüğünü gösterir.

Temizlikten sonra, Adım 1'deki gibi küçük bir test isteği gönderin ve bakiyenizi kontrol edin. Yanıt veriyorsa ve bakiye ile istekler normal görünüyorsa temizlik tamamlanmıştır; önümüzdeki birkaç gün bakiyeyi göz önünde bulundurun. Herkese açık hale gelmiş bir anahtar, koddan çıkardıktan sonra bile açığa çıkmış sayılmalıdır; bu yüzden bakiyeyi ve istek sayısını göndermediğiniz bir şey için izleyin ve o anahtarı yeni yerlerde yeniden kullanmayın. Anahtarların yaşamaya eğilimli olduğu yerler için Kendi API anahtarınızı nereye takmalısınız yazısına bakın.
Kendinizi test edin#
Kendin deneDeneyin: değişkeni kaldırın ve betiği çalıştırın. Ne görüyorsunuz?Cevabı göster
Python, makinenizden herhangi bir istek çıkmadan KeyError: 'CHEAPTOKENS_ ile durur. Bu iyi bir başarısızlıktır: betik sessizce yapıştırılmış bir anahtar kullanmak yerine anahtar olmadan çalışmayı reddeder. Bunun yerine 401 görürseniz değişken ayarlanmıştır ama anahtar yanlıştır; anahtarı ve adresi 401/404 kılavuzuna göre kontrol edin.



