Memahami model bayar-per-token
Pembayaran mengikut token bermaksud anda hanya membayar untuk apa yang anda gunakan, bukan untuk akses lapang ke pelayan. Berbanding langganan bulanan tradisional, model ini menyelaraskan kos secara langsung dengan volume penggunaan. Anda dikenakan caj berdasarkan token input dan output sebenar yang diproses oleh hujung.
Kebanyakan penyedia mengenakan kadar berbeza untuk input berbanding token output. Sebagai contoh, sesetengah perkhidmatan LLM uncensored menghargai input pada $0.15 per juta token dan output pada $0.50 per juta token. Perbezaan ini wujud kerana menjana teks memerlukan pengiraan yang jauh lebih besar daripada membacanya.
Anda harus memantau kiraan token anda dengan teliti. Satu respons panjang tunggal boleh melebihi kos input anda jika anda tidak menganggarkan panjang output. Sentiasa periksa metadata penggunaan yang dikembalikan dalam header atau badan respons untuk melacak perbelanjaan anda dengan tepat.
Mengapa respons aliran anda terputus awal
Respons penstriman terputus awal kerana klien sering berhenti mendengar selepas beberapa bahagian pertama. Pelayan menghantar data secara masa nyata, tetapi aplikasi anda mungkin memutuskan sambungan secara prematur jika ia tidak mengendalikan aliran dengan betul.
Setiap chunk mengandungi teks separa. Anda mesti menyambungkan chunk-chunk ini untuk membentuk respons lengkap. Jika anda membuang chunk antara, anda kehilangan data. Chunk terakhir biasanya mengandungi statistik penggunaan yang lengkap.
Semak tetapan timeout anda. Sesetengah rangkaian memutuskan sambungan selepas beberapa saat tidak aktif. Pastikan klien anda mengendalikan jeda antara masa dalam aliran. Ini biasa berlaku dengan model bahasa besar yang menjana 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 tetingkap konteks 100k dengan betul
Had jendela konteks termasuk prompt dan penyelesaian yang dihasilkan. Anda tidak boleh menghantar 100k token dalam prompt dan mengharapkan 100k lagi dalam respons. Jumlah panjang gabungan mesti kekal dalam had.
Jika anda menghantar prompt besar, anda mempunyai kurang ruang untuk respons. Sebagai contoh, prompt 90k token hanya meninggalkan 10k token untuk output. Ini boleh menyebabkan jawapan panjang terpotong secara tiba-tiba.
Laksanakan pengiraan token di pihak anda. Gunakan tokeniser yang sepadan dengan pengekodan model. Ini memastikan anda tidak melebihi had semasa permintaan. Jika anda melakukannya, pelayan akan memulangkan ralat.
Pertimbangkan pemotongan mesej lama dalam sejarah sembang. Ini mengekalkan konteks terkini sambil kekal dalam had. Ini sangat penting untuk mengekalkan koheren perbualan sepanjang sesi yang panjang.
Top-up crypto: mengapa baki anda tidak dikemas kini
Isi semula crypto gagal dikemas kini apabila anda menghantar token ke rangkaian yang salah. API kami menerima USDT pada TRC20 dan USDC pada Base. Menghantar USDT pada Ethereum ke alamat TRC20 akan mengakibatkan dana hilang.
Sentiasa sahkan awalan rangkaian sebelum menghantar. Halaman deposit menunjukkan alamat dan rangkaian khusus untuk setiap mata wang. Jangan andaikan semua alamat USDT boleh dipertukarkan.
Tunggu bilangan pengesahan yang diperlukan. Transaksi tidak serta-merta. Sistem meng kredit akaun anda hanya selepas blockchain mengesahkan pemindahan. Ini mencegah masalah pembelanjaan berganda.
Semak hash transaksi pada penjelajah blok. Jika baki tidak dikemas kini, berikan hash kepada sokongan. Mereka boleh mengesahkan pemindahan secara manual. Ini adalah cara terpantas untuk menyelesaikan percanggahan.
Membetulkan ralat pemanggilan fungsi dalam model tanpa sensor
Ralat panggilan fungsi sering berpunca daripada format JSON yang tidak standard dalam model tanpa sensor. Model-model ini mengutamakan kreativiti berbanding struktur ketat, yang boleh merosakkan parser yang kaku.
Tetapkan format respons kepada json_object untuk memaksakan output yang lebih ketat. Ini mengurangkan kemungkinan JSON rosak. Walau bagaimanapun, ia mungkin sedikit mengurangkan kreativiti.
Sahkan respons sebelum pengekodan. Gunakan blok cuba-tangkap untuk menangani ralat pengekodan JSON. Jika pengekodan gagal, cuba semula dengan suhu yang lebih rendah. Ini menggalakkan 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)
Had kadar: mengendalikan lonjakan 300 RPM
Rate limits restrict how many requests you can send per minute. Our API allows 300 requests per minute per key. Exceeding this limit returns a 429 status code.
Laksanakan penangguhan eksponen apabila anda mencapai had. Cuba semula permintaan selepas kelewatan singkat. Ini menghalang pelayan daripada dipbanjiri semasa waktu penggunaan puncak.
Pantau kekerapan permintaan anda. Jika anda menghantar permintaan terlalu cepat, anda mungkin mencetuskan had. Jarakkan permintaan anda secara rata. Ini memastikan prestasi yang konsisten.
Gunakan pelbagai kunci jika anda memerlukan throughput yang lebih tinggi. Setiap kunci mempunyai hadnya sendiri. Ini membolehkan anda meluaskan skala aplikasi anda tanpa mencapai satu halangan tunggal.
Kegagalan mod JSON dan pemformatan respons
Kegagalan mod JSON berlaku apabila model mengembalikan sintaks yang tidak sah. Ini biasa pada model tanpa sensor yang mengutamakan bahasa semula jadi berbanding data terstruktur.
Gunakan response_format parameter untuk memaksa output JSON. Ini memberitahu model untuk menyusun responsnya sebagai JSON yang sah. Walau bagaimanapun, ia tidak menjamin ketepatan.
Sahkan output menggunakan skema JSON. Ini memastikan data sepadan dengan struktur yang dijangkakan anda. Jika pengesahan gagal, minta cuba semula atau laraskan arahan.
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);
Nyahpepijat percanggahan pengiraan token
Percanggahan pengiraan token berlaku apabila klien anda menggunakan tokeniser yang berbeza daripada model. Ini membawa kepada anggaran kos yang tidak tepat.
Gunakan pengira token rasmi yang disediakan oleh vendor model. Ini memastikan kiraan anda sepadan dengan penggunaan sebenar. Pengira token pihak ketiga mungkin mengendalikan aksara khas dengan berbeza.
Semak metadata penggunaan dalam respons. Ini memberikan kiraan token tepat. Bandingkan ini dengan kiraan tempatan anda untuk mengenal pasti percanggahan.
Ambil kira token khas. Ini termasuk prompt sistem dan definisi fungsi. Token ini menggunakan token tetapi mungkin tidak kelihatan dalam teks mentah.
Bila Beralih Dari Tempatan Ke API
Tukar ke API apabila perkakasan tempatan tidak dapat memenuhi keperluan latensi atau skala anda. Menjalankan model besar secara tempatan memerlukan GPU mahal dan kuasa yang besar.
API menawarkan penskalaan tanpa penyelenggaraan perkakasan. Anda boleh menangani lonjakan trafik secara mudah. Ini adalah ideal untuk persekitaran pengeluaran.
Pertimbangkan kos. Jika anda menjalankan model tempatan 24/7, kos elektrik dan perkakasan mungkin melebihi penggunaan API. Pengebilan per-token hanya berkesan dari segi kos jika penggunaan adalah berubah-ubah.
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."}]
}'