Özet
- Yanlış uç noktalara çarpmamak için OpenAI SDK istemcinizde base URL'yi açıkça her zaman ayarlayın.
- Son SSE olayından toplam token kullanımını çıkarmak için akış parçalarını dikkatlice ayrıştırın.
- Sarmalayıcı uygulamalar için yapılandırılmış çıktılar sağlamak üzere response_format json_object kullanın.
- Büyük ipuçları göndermeden önce bağlam penceresi sınırlarınızı kontrol edin, kesme hatalarından kaçınmak için.
OpenAI İstemcileri için Base URL'i Ayarlamayı Unutmak
İlk hata, isteği göndermeden önce bile gerçekleşir. Büyük bir sağlayıcıdan daha ucuz bir alternatife geçtiğinizde, genellikle temel URL'yi güncellemeyi unutursunuz. SDK'nız varsayılan uç noktaya istek gönderir; bu uç nokta kapalı olabilir veya hız sınırlamasına tabi olabilir.
İstemci nesnesini hemen yapılandırın. Temel URL'yi şuna ayarlayın https://api.apillmcheapest.com/v1 SDK başlatmanızda. Bu, tüm çağrıların doğru sunucuya gitmesini sağlar. Herhangi bir standart OpenAI-uyumlu kütüphane kullanabilirsiniz. Değişiklik genellikle bir satır kod kadardır.
- İstemciyi yeni temel URL ile başlatın.
- Basit bir model listesi çağrısıyla bağlantıyı doğrulayın.
- API anahtarının doğru şekilde iletildiğini kontrol edin.
from openai import OpenAI
client = OpenAI(base_url="https://api.apillmcheapest.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Bu küçük adım, ilerleyen saatlerde saatlerce hata ayıklamayı önler. Sarmalayıcı uygulamanızın ilk günden itibaren güvenilir çalışmasını istersiniz.
Yapılandırma Akış Yanıtı Parçaları
Akış kullanıcı deneyimi için hayati önem taşır, ancak karmaşıklık getirir. Çoğu geliştirici akış yanıtlarını standart JSON gibi muamele eder. Tüm akışı tek bir nesne olarak ayrıştırmaya çalışır. Bu başarısız olur çünkü veri parçalar halinde gelir.
Her parçayı ayrı ayrı yönetin. Her olaydan metin içeriğini biriktirin. Akış bittiğinde yalnızca son birleştirilmiş dizeyi ayrıştırın. Bu yaklaşım seçtiğiniz herhangi bir LLM API'si için çalışır. Kodunuzu basit ve sağlam tutar.
- Şunu dinleyin
contentfield her chunk'ta. - Metni bir arabellek değişkenine ekleyin.
- Akış kapandıktan sonra yalnızca tam metni işleyin.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Akış, algılanan gecikmeyi önemli ölçüde azaltır. Kullanıcılar tokenların gerçek zamanlı olarak belirdiğini görür. Bu, uygulamanızın daha hızlı ve duyarlı hissetmesini sağlar.
Yapılandırılmış Veriler için JSON Modunu Yok Say
Bir AI wrapper geliştiriyorsanız büyük olasılıkla yapılandırılmış veriye ihtiyacınız vardır. Modelden JSON döndürmesini istemek ancak formatı zorlamamak, bozuk ayrıştırıcılara yol açar. Model markdown kod blokları veya ek metinler ekleyebilir. Bu, sonraki aşamadaki mantığınızı bozar.
Şu response_format parametre. Değerini {"type": "json_object"}. Bu, modelin geçerli JSON çıktısı vermesini zorlar. Ayrıştırma hatalarını azaltır ve kodunuzu basitleştirir. Her seferinde tutarlı sonuçlar alırsınız.
- İhtiyaçlarınız için sıkı bir JSON şeması tanımlayın.
- Yanıt biçimi parametresini ayarlayın
- Çıktıyı daha fazla işlem yapmadan önce doğrulayın.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apillmcheapest.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Bu özellik veri çıkarma görevleri için önemlidir. Yan projenizin manuel müdahale olmadan binlerce isteği işleyebilmesini sağlar.
Bağlam Penceresini Kontrol Etmeden Token Limitlerine Ulaşmak
Bağlam pencerelerinin katı limitleri vardır. Modelin kapasitesini aşan bir prompt gönderirseniz, istek başarısız olur. Token ve paranızı boşa harcarsınız. Çok sayıda geliştirici, limitin aslında olduğundan daha yüksek olduğunu varsayar.
Veri göndermeden önce bağlam penceresi boyutunu kontrol edin. Modelimiz toplamda 100,000 token destekler. Bu hem giriş hem de çıktıyı kapsar. Üretimi için isteminizi 84,000 token altında tutun. Token sayılarını doğru hesaplayın. Hassasiyet için bir tokenizer kütüphanesi kullanın.
- İstem metninizdeki tokenları sayın.
- Yanıttaki tahmini token sayısını ekleyin.
- 100.000 limitinin çok altında kalın.
curl https://api.apillmcheapest.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "What is the current status of the database migration job?"}]
}'Sınırların göz ardı edilmesi pahalı hatalara yol açar. Her API çağrısından maksimum değer elde etmek istersiniz. Bağlam kullanımınızı dikkatlice planlayın.
Fonksiyon Çağırmanın GPT-4 Gibi Çalıştığını Varsaymak
İşlev çağırma sözdizimi sağlayıcılar arasında farklılık gösterir. Araç tanımlama biçimi biraz farklı olabilir. Kodunuz, modelin tanımadığı parametreler gönderebilir. Bu durum boş araç çağrılarına veya hatalara neden olur.
Belirli API'niz için fonksiyon çağırma belgelerine göz atın. Araçları standart JSON şema formatını kullanarak tanımlayın. Araçlar dizisini istek gövdesinde iletin. Model, yanıtta araç çağrılarını döndürür. İşlevleri yürütün ve sonuçları geri gönderin.
- Araçları net açıklamalarla tanımlayın.
- İstek içindeki tools dizisini geçirin.
- Kod döngünüzde araç çağrılarını işleyin.
from openai import OpenAI
client = OpenAI(base_url="https://api.apillmcheapest.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Fonksiyon çağırma karmaşık iş akışlarını mümkün kılar. Modelin harici veriyi ne zaman kullanması gerektiğine karar vermesine olanak tanır. Uygulamanızın API spesifikasyonlarıyla eşleştiğinden emin olun.
SSE'de Akış Token Sayılarını Göz Ardı Etme
Token sayıları faturalandırma için kritiktir. Tam olarak ne kadar harcadığınızı bilmeniz gerekir. Bazı API'ler token kullanımını yalnızca son yanıtta döndürür. Diğerleri her parçada içerir. Veriyi nerede bulacağınızı bilmeniz gerekir.
Akışın son parçasını kontrol edin. Token kullanımı genellikle son SSE olayında dahil edilir.Harcamalarınızı izlemek için bu verileri ayrıştırın. Toplam maliyet için giriş ve çıktı tokenlerini toplayın. Bu, bütçenizde kalmanıza yardımcı olur.
- Akıştaki son parçayı dinleyin.
- Çıkart
usageyanıttan veri. - Faturalandırma analizi için token sayılarını günlüğe kaydedin.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Doğru takip, sürpriz faturaları önler. Promptlarınızı token kullanımına göre optimize edebilirsiniz. Bu bilgi, projenizi ölçeklendirirken hayati önem taşır.
Tekrarlanabilir Sonuçlar İçin Seed Kullanmama
LLM'ler varsayılan olarak deterministik değildir. Aynı istem iki kez çalıştırıldığında farklı çıktılar üretebilir. Bu yaratıcı görevler için uygundur ancak testler için uygun değildir. Kodunuzdaki hataları ayıklamak için tutarlı sonuçlara ihtiyacınız vardır.
Şunu ayarlayın: seed parametresi isteğinizde. Sabit bir tamsayı değeri kullanın. Bu, aynı çıktıyı alma şansını artırır. %100 determinizm garantisi vermez. Test etmeyi çok daha kolay hale getirir.
- Tohum (seed) için rastgele bir tam sayı seçin.
- Her istekte seed'i dahil edin.
- Geliştirme sırasında çıktı tutarlılığını doğrula.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apillmcheapest.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Yenilenebilirlik hata ayıklamayı önemli ölçüde hızlandırır. Tahmin yürütmeksizin sorunları tespit edebilirsiniz. Geliştirme sırasında seed (tohum) değerleri kullanın, üretim ortamında bunları kaldırın.
Limitleri Kontrol Etmeden En Ucuz LLM API'sini Seçmek
Token başına fiyat sadece bir kısmıdır. Hız sınırlamaları da önemlidir. Bir sınıra ulaşırsanız, uygulamanız çalışmayı durdurur. Yeniden denemeler veya kullanıcı kaybı için daha fazla ödeme yapabilirsiniz. Sağlayıcılar arasında sınırlamaları karşılaştırın.
Dakika başına istek sayısını ve eşzamanlı bağlantıları kontrol edin. API'miz dakikada 300 isteğe izin verir. Bu, çoğu yan proje için yeterlidir. Limitlerin kullanım desenlerinizle eşleştiğinden emin olun. Katı kısıtlama uygulayan sağlayıcılardan kaçının.
- Sağlayıcılar arasında RPM sınırlarını karşılaştırın.
- Eşzamanlı istek limitlerini kontrol et.
- Küçük bir yük testiyle sınırları test edin.
curl https://api.apillmcheapest.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "What is the current status of the database migration job?"}]
}'En ucuz seçenek en iyi seçenek olmayabilir; sizi yavaşlatabilir. Maliyeti performansla dengeleyin. Kullanıcılarınız hızlı yanıtlar bekler.