Perkara penting
- Context windows combine prompt and completion, so long histories drain limits faster than expected.
- Streaming memerlukan penanganan peristiwa SSE dengan teliti untuk mengelakkan JSON rosak atau token hilang.
- JSON mode demands strict schema adherence; malformed responses cause silent parsing failures.
- Pembayaran kripto prabayar bermakna ralat adalah percuma, tetapi pengiraan token mesti tepat untuk mengelakkan kejutan.
Mengapa kunci API anda mungkin ditolak
Kunci API ditolak apabila klien menghantar header yang tidak sah atau melebihi had badan permintaan. Pelayan mengesahkan header pengesahan sebelum memproses sebarang logik. Jika header hilang atau mengandungi ruang putih tambahan, permintaan gagal serta-merta.
Punca biasa lain ialah menghantar payload yang melebihi had saiz badan 8 MB. Tingkap konteks besar dengan banyak mesej boleh dengan mudah melebihi had ini. Periksa panjang array mesej dan kiraan token sebelum menghantar.
- Pastikan header Authorization menggunakan awalan 'Bearer' dengan betul.
- Verify the request body size stays under 8 MB.
- Pastikan kunci API aktif dan tidak luput tarikh luput.
Memahami had tetingkap konteks
Tetingkap konteks merangkumi sama ada petanda input mahupun penyelesaian yang dijana. API kami menyokong tetingkap 100,000 token, tetapi anda perlu mengambil kira kedua-dua belah. Jika anda menghantar 80,000 token konteks, anda hanya mempunyai 20,000 baki untuk respons.
Kebanyakan model menetapkan had output yang kecil secara lalai jika anda tidak menentukan max_tokens. Ini boleh memendekkan jawapan panjang secara tidak dijangka. Tetapkan max_tokens kepada panjang yang dikehendaki hanya jika anda ingin menetapkan had. Ingat bahawa had ini terpakai kepada keseluruhan permintaan, bukan hanya prompt.
Mengendalikan gangguan aliran dengan betul
Penstriman melalui Peristiwa Dihantar Pelayan (SSE) memerlukan pengendalian ralat yang kukuh. Jika sambungan terputus, anda mungkin kehilangan token akhir atau metadata penggunaan. Sentiasa menimbulkkan potongan data masuk dan bina semula respons penuh di sisi klien.
Data penggunaan token biasanya dihantar dalam bahagian aliran terakhir. Jika anda menutup sambungan lebih awal, anda mungkin terlepas jumlah token yang tepat. Ini menjejaskan ketepatan pengebilan dalam sistem pra-bayar. Laksanakan mekanisme cuba semula dengan penangguhan eksponen untuk menangani masalah rangkaian sementara.
Gunakan klien penstriman khusus yang mengendalikan pengekodan SSE secara automatik. Ini mengurangkan risiko ralat pengekodan dan memastikan anda menangkap semua data.
Ralat penguraian mod JSON
Apabila menggunakan response_format: {"type": "json_object"}, model mesti mengembalikan JSON yang sah. Mana-mana penyimpangan akan menyebabkan ralat penguraian dalam aplikasi anda. Pastikan arahan anda secara jelas mengarahkan model untuk mengeluarkan hanya JSON.
Kadangkala model termasuk blok kod markdown di sekitar JSON, yang memusnahkan parser ketat. Buang pembungkus sebelum penguraian. Selain itu, sahkan struktur JSON di sisi klien sebelum menggunakan data tersebut.
Gunakan pustaka pengesahan skema untuk mengesan ralat seawal mungkin. Ini mencegah kerosakan apabila model mengembalikan kunci atau jenis yang tidak dijangka.
Kejutan pengiraan token dan pengebilan
Pembayaran pra-bayar hanya mengenakan caj untuk penggunaan token sebenar. Ralat dan penolakan adalah percuma, yang merupakan kelebihan besar berbanding model langganan. Walau bagaimanapun, pengiraan token boleh menjadi rumit jika anda tidak mengambil kira keseluruhan konteks.
Setiap mesej dalam sejarah perbualan dikira sebagai sebahagian daripada had token input. Perbualan yang panjang akan menguras kredit prabayar anda dengan lebih cepat daripada yang anda jangka. Pantau penggunaan anda secara berkala untuk mengelakkan kredit habis semasa sesi.
Tetapkan amaran untuk baki kredit rendah. Ini memastikan anda boleh menambah saldo sebelum permintaan anda gagal. Ingat bahawa kredit tidak pernah luput, jadi anda boleh menambah saldo pada bila-bila masa yang mudah.
Mengelakkan penolakan lembut dalam arahan NSFW
Penolakan lembut berlaku apabila model ragu-ragu atau memberikan jawapan separa sebagai ganti kepada respons langsung. Ini sering berlaku dengan topik kontroversi atau dewasa. Walaupun dalam model tanpa sensor, pemicu tertentu boleh menyebabkan keraguan.
Laraskan parameter temperature untuk mengurangkan kebarangkalian. Suhu yang lebih rendah menjadikan model lebih deterministik dan kurang cenderung untuk bersikap berhati-hati. Selain itu, pastikan prompt anda jelas dan langsung. Elakkan bahasa yang samar yang mungkin mengelirukan model.
Jika anda menghadapi penolakan lembut yang kerap, cuba ubah suai petanda sedikit. Perubahan kecil dalam perkataan sering dapat mengatasi keraguan dan mendapatkan jawapan langsung.
Lonjakan had kadar dan strategi penarikan balik
API membolehkan 300 permintaan setiap minit dan 8 permintaan serentak setiap kunci. Lonjakan trafik boleh mencapai had-had ini dengan cepat. Laksanakan backoff eksponen untuk mengendalikan ralat had kadar dengan baik.
Apabila anda menerima kod status 429, tunggu sebelum mencuba semula. Mulakan dengan kelewatan singkat dan tingkatkan kelewatan tersebut dengan setiap percubaan semula. Ini mengelakkan server menjadi terlalu banyak permintaan semasa waktu puncak.
Pantau kadar permintaan anda dan laraskan tahap kekonkurensian anda dengan sewajarnya. Jika anda membuat banyak permintaan serentak, pertimbangkan untuk menyebarkannya merentasi masa. Ini memastikan kelancaran aliran tanpa melanggar had.
Struktur payload pemanggilan fungsi
Pemanggilan fungsi memerlukan struktur payload khusus. Takrifkan fungsi anda dalam parameter tools dan nyatakan tool_choice. Model akan memulangkan panggilan fungsi jika ia menentukan bahawa itu adalah respons yang sesuai.
Pastikan definisi fungsi anda tepat dan lengkap. Parameter yang hilang atau jenis yang salah boleh menyebabkan model menjana panggilan yang tidak sah. Sentiasa sahkan hujung panggilan fungsi sebelum melaksanakannya.
Gunakan parameter tool_choice untuk mengawal bila model memanggil fungsi. Anda boleh memaksa panggilan fungsi, membiarkan model membuat keputusan, atau menonaktifkan panggilan fungsi sepenuhnya. Ini memberikan anda kawalan yang lebih tepat terhadap tingkah laku model.
Menyelesaikan masalah ralat 400 berbanding 500
Ralat 400 menunjukkan masalah di sisi klien, seperti JSON tidak sah atau parameter yang hilang. Ralat 500 mencadangkan masalah di sisi pelayan, seperti ralat dalaman atau masa tamat. Membezakan antara keduanya membantu anda mengesan kerosakan dengan lebih pantas.
Untuk ralat 400, semak mesej ralat yang disediakan dalam respons. Ia biasanya menunjukkan secara langsung kepada isu tersebut. Untuk ralat 500, cuba semula permintaan selepas sedikit penangguhan. Jika ralat masih berlaku, hubungi sokongan dengan ID permintaan.
Logkan butiran permintaan dan respons bagi setiap ralat. Ini membantu mengenal pasti corak dan isu yang berulang. Gunakan perkhidmatan log untuk menjejaki ralat dari masa ke semasa dan meningkatkan integrasi API anda.