Memahami model bayar-per-token
Penagihan bayar per token berarti Anda hanya membayar untuk apa yang dikonsumsi, bukan untuk akses menganggur ke server. Berbeda dengan langganan bulanan tradisional, model ini menyelaraskan biaya langsung dengan volume penggunaan. Anda dikenakan biaya berdasarkan token input dan output aktual yang diproses oleh endpoint.
Sebagian besar penyedia mengenakan tarif berbeda untuk input dibandingkan token output. Misalnya, beberapa layanan LLM uncensored menetapkan harga input sebesar $0,15 per juta token dan output sebesar $0,50 per juta token. Ketimpangan ini ada karena menghasilkan teks membutuhkan komputasi yang jauh lebih besar daripada membacanya.
Anda harus memantau jumlah token Anda dengan cermat. Satu respons panjang dapat melebihi biaya input Anda jika Anda tidak memperkirakan panjang output. Selalu periksa metadata penggunaan yang dikembalikan dalam header atau body respons untuk melacak pengeluaran Anda dengan akurat.
Mengapa respons streaming terpotong lebih awal
Respons streaming terpotong awal karena klien sering berhenti mendengarkan setelah beberapa potongan pertama. Server mengirimkan data secara real-time, tetapi aplikasi Anda mungkin terputus lebih awal jika tidak menangani stream dengan benar.
Setiap chunk berisi teks parsial. Anda harus menggabungkan chunk-chunk ini untuk membentuk respons lengkap. Jika Anda membuang chunk antara, Anda kehilangan data. Chunk terakhir biasanya berisi statistik penggunaan lengkap.
Periksa pengaturan timeout Anda. Beberapa jaringan memutus koneksi setelah beberapa detik tidak aktif. Pastikan klien Anda menangani jeda intermiten dalam stream. Ini umum terjadi pada model bahasa besar yang menghasilkan teks panjang.
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)
Menangani jendela konteks 100k dengan benar
Batas jendela konteks mencakup baik prompt Anda maupun completion yang dihasilkan. Anda tidak dapat mengirim 100k token dalam prompt dan mengharapkan 100k lagi dalam respons. Panjang total gabungan harus tetap dalam batas.
Jika Anda mengirim prompt besar, ruang untuk respons menjadi lebih kecil. Sebagai contoh, prompt 90k token menyisakan hanya 10k token untuk output. Ini dapat memotong jawaban panjang secara tiba-tiba.
Terapkan penghitungan token di sisi Anda. Gunakan tokenizer yang sesuai dengan encoding model. Ini memastikan Anda tidak melebihi batas selama permintaan. Jika Anda melewatinya, server akan mengembalikan error.
Perhatikan pemotongan pesan lama dalam riwayat obrolan. Ini menjaga konteks terbaru sambil tetap dalam batas. Ini sangat penting untuk menjaga koherensi percakapan selama sesi panjang.
Isi ulang kripto: mengapa saldo Anda tidak diperbarui
Isi ulang kripto gagal diperbarui ketika Anda mengirim token ke jaringan yang salah. API kami menerima USDT di TRC20 dan USDC di Base. Mengirim USDT di Ethereum ke alamat TRC20 akan mengakibatkan dana hilang.
Selalu verifikasi prefix jaringan sebelum mengirim. Halaman deposit menunjukkan alamat dan jaringan spesifik untuk setiap mata uang. Jangan mengasumsikan semua alamat USDT dapat dipertukarkan.
Tunggu jumlah konfirmasi yang diperlukan. Transaksi tidak instan. Sistem mengkredit akun Anda hanya setelah blockchain mengkonfirmasi transfer. Ini mencegah masalah double-spending.
Periksa hash transaksi di penjelajah blok. Jika saldo tidak diperbarui, berikan hash tersebut kepada dukungan. Mereka dapat memverifikasi transfer secara manual. Ini adalah cara tercepat untuk menyelesaikan ketidaksesuaian.
Memperbaiki kesalahan pemanggilan fungsi dalam model tanpa sensor
Kesalahan function calling sering kali berasal dari format JSON yang tidak standar pada model uncensored. Model-model ini mengutamakan kreativitas di atas struktur yang ketat, yang dapat merusak parser yang kaku.
Atur format respons menjadi json_object untuk memaksakan output yang lebih ketat. Ini mengurangi kemungkinan JSON yang tidak valid. Namun, ini mungkin sedikit mengurangi kreativitas.
Validkan respons sebelum parsing. Gunakan blok try-catch untuk menangani kesalahan dekode JSON. Jika parsing gagal, coba ulang dengan suhu yang lebih rendah. Ini mendorong output yang lebih deterministik.
from openai import OpenAI
client = OpenAI(base_url="https://api.aiapisubscription.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)
Batas laju: menangani lonjakan 300 RPM
Batas laju membatasi berapa banyak permintaan yang dapat Anda kirim per menit. API kami mengizinkan 300 permintaan per menit per kunci. Melebihi batas ini mengembalikan kode status 429.
Terapkan backoff eksponensial saat Anda mencapai batas. Coba ulang permintaan setelah jeda singkat. Ini mencegah membebani server selama penggunaan puncak.
Pantau frekuensi permintaan Anda. Jika Anda mengirimkan permintaan terlalu cepat, Anda mungkin memicu batas. Jarakkan permintaan Anda secara merata. Ini memastikan kinerja yang konsisten.
Gunakan beberapa kunci jika Anda membutuhkan throughput yang lebih tinggi. Setiap kunci memiliki batasnya sendiri. Ini memungkinkan Anda untuk menskalakan aplikasi Anda tanpa mencapai satu titik bottleneck.
Kesalahan dan pemformatan respons mode JSON
Kesalahan mode JSON terjadi ketika model mengembalikan sintaks yang tidak valid. Hal ini umum terjadi pada model uncensored yang mengutamakan bahasa alami daripada data terstruktur.
Gunakan response_format parameter untuk memaksakan output JSON. Ini memberi tahu model untuk menyusun responsnya sebagai JSON yang valid. Namun, ini tidak menjamin kebenaran.
Validkan output menggunakan skema JSON. Ini memastikan data sesuai dengan struktur yang Anda harapkan. Jika validasi gagal, minta coba ulang atau sesuaikan prompt.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.aiapisubscription.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);
Debugging ketidaksesuaian penghitungan token
Ketidaksesuaian penghitungan token muncul ketika klien Anda menggunakan tokenizer yang berbeda dari model. Hal ini menyebabkan estimasi biaya yang tidak akurat.
Gunakan tokenizer resmi yang disediakan oleh vendor model. Ini memastikan hitungan Anda sesuai dengan penggunaan aktual. Tokenizer pihak ketiga mungkin menangani karakter khusus secara berbeda.
Periksa metadata penggunaan dalam respons. Ini memberikan jumlah token yang tepat. Bandingkan ini dengan jumlah lokal Anda untuk mengidentifikasi ketidaksesuaian.
Perhitungkan token khusus. Ini termasuk prompt sistem dan definisi fungsi. Token ini dikonsumsi tetapi mungkin tidak terlihat dalam teks mentah.
Kapan Beralih dari Lokal ke API
Beralih ke API ketika perangkat keras lokal tidak dapat memenuhi persyaratan latensi atau skala Anda. Menjalankan model besar secara lokal memerlukan GPU mahal dan daya yang signifikan.
API menawarkan skalabilitas tanpa pemeliharaan perangkat keras. Anda dapat menangani lonjakan lalu lintas tiba-tiba dengan mudah. Ini ideal untuk lingkungan produksi.
Pertimbangkan biaya. Jika Anda menjalankan model lokal 24/7, biaya listrik dan perangkat keras mungkin melebihi penggunaan API. Penagihan per-token hanya efektif secara biaya jika penggunaan bervariasi.
curl https://api.aiapisubscription.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Summarize the technical specs of the new GPU."}]
}'