Jawaban singkat
Bagaimana cara memanggil LLMwithCrypto dari Node.js?
Instal paket resmi dengan npm install openai, lalu buat client dengan baseURL: "https://llmwithcrypto.com/api/v1" dan apiKey: process.env.LLMWITHCRYPTO_API_KEY. LLMwithCrypto menjawab client.chat.completions.create() dalam format OpenAI untuk 12 model open-weight, dengan streaming dan tool call di mana model mendukungnya, sebagaimana didokumentasikan pada 23 Oktober 2026.
Yang Anda butuhkan
| Node.js | 18 atau lebih baru, ES module (.mjs atau "type": "module") |
|---|---|
| Paket | openai (resmi) |
| Base URL | https://llmwithcrypto.com/api/v1 |
| Key | Di environment variable LLMWITHCRYPTO_API_KEY, jangan pernah di kode atau di browser |
Bagaimana cara mengirim satu request?
Buat client sekali saat start-up dan gunakan kembali di mana-mana. Simpan key di server: key yang dikirim dalam kode browser bisa dibaca siapa saja yang membuka halaman, jadi panggil API dari backend Anda dan kirim hanya jawabannya ke browser.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-v4-pro',
messages: [
{ role: 'system', content: 'Answer in two sentences.' },
{ role: 'user', content: 'What is a context window?' },
],
max_tokens: 200,
});
console.log(resp.choices[0].message.content);
console.log(resp.usage.prompt_tokens, 'in,', resp.usage.completion_tokens, 'out');
Bagaimana cara menjalankan batch tanpa terkena rate limit?
Jalankan sejumlah request tetap pada satu waktu. Helper kecil mapLimit di bawah ini menjaga empat request berjalan bersamaan dan mengembalikan hasilnya sesuai urutan; tidak perlu paket tambahan. Setiap akun memiliki batas permintaan dan token per menit yang ditampilkan di dashboard; hubungi support dan batas itu dapat dinaikkan.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
async function translate(text) {
const resp = await client.chat.completions.create({
model: 'qwen3-235b-a22b-instruct-2507',
messages: [
{ role: 'system', content: 'Translate into Spanish. Reply with the translation only.' },
{ role: 'user', content: text },
],
max_tokens: 200,
});
return resp.choices[0].message.content;
}
// at most 4 requests in flight
async function mapLimit(items, limit, fn) {
const out = new Array(items.length);
let next = 0;
async function worker() {
while (next < items.length) {
const i = next++;
out[i] = await fn(items[i]);
}
}
await Promise.all(Array.from({ length: limit }, worker));
return out;
}
const lines = ['Your order has shipped.', 'Your payment was received.', 'Your key was revoked.'];
console.log(await mapLimit(lines, 4, translate));
Bagaimana cara streaming jawabannya?
Lewatkan stream: true dan gunakan for await pada hasilnya. Setiap chunk membawa sepotong teks di choices[0].delta.content; dengan stream_options: { include_usage: true } chunk terakhir berisi jumlah token.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
const stream = await client.chat.completions.create({
model: 'deepseek-v4.1-flash',
messages: [{ role: 'user', content: 'Write a haiku about latency.' }],
stream: true,
stream_options: { include_usage: true },
max_tokens: 120,
});
for await (const chunk of stream) {
const text = chunk.choices[0]?.delta?.content;
if (text) process.stdout.write(text);
if (chunk.usage) console.log(`\n${chunk.usage.prompt_tokens} in, ${chunk.usage.completion_tokens} out`);
}
Bagaimana cara membaca sisa kredit?
Endpoint credits bukan bagian dari OpenAI SDK, jadi panggil dengan fetch. Gratis; panggil sebelum batch besar untuk memastikan kreditnya cukup.
const res = await fetch('https://llmwithcrypto.com/api/v1/credits', {
headers: { Authorization: `Bearer ${process.env.LLMWITHCRYPTO_API_KEY}` },
});
const credits = await res.json();
console.log('credit left:', credits.balance_usd, 'USD');
Bagaimana cara menangani error?
SDK melempar OpenAI.APIError untuk setiap HTTP error, dengan status di err.status dan code dari body di err.code. Uji kodenya, bukan pesannya: insufficient_balance berarti top up, model_not_found berarti id salah, rate_limit_exceeded berarti tunggu dan coba lagi.
SDK sudah mencoba ulang beberapa error dua kali dengan jeda (maxRetries). Untuk batch panjang, pertahankan default itu, batasi konkurensi seperti di atas, dan catat kegagalan yang Anda serah. Halaman errors mencantumkan setiap status dan mana yang layak dicoba ulang. Panggilan yang gagal tidak memakan biaya: Anda membayar per token dari saldo Anda: token input dan output dihitung oleh tokenizer model itu sendiri dan ditagih sesuai harga model tersebut per 1M token. Panggilan yang berakhir dengan error tidak dikenai biaya.
Bagaimana cara memindahkan aplikasi OpenAI yang sudah ada?
Ubah opsi client, baseURL dan apiKey, lalu ganti setiap nama model gpt-… dengan id dari halaman models. Prompt, kode streaming, serta parsing choices dan usage tetap sama. Jalankan tes Anda pada model baru sebelum mengalihkan traffic: tool calling dan output JSON mengikuti apa yang didukung setiap model.
Node.js: pertanyaan umum
Bisakah saya memanggil API dari browser?
Secara teknis bisa, tapi jangan pernah dengan key Anda di halaman. Panggil dari server Anda, atau dari serverless function yang menyimpan key.
Apakah Vercel AI SDK bisa dipakai?
Library apa pun yang menerima base URL kompatibel OpenAI bisa dipakai. API ini berbicara dalam format chat completions OpenAI: arahkan OpenAI SDK, LangChain, atau alat apa pun yang kompatibel dengan OpenAI ke base URL kami dengan API key Anda, lalu ubah nama modelnya.
Apa yang terjadi saat kredit habis?
Panggilan mengembalikan 402 insufficient_balance dan tidak memakan biaya. Halaman errors menunjukkan cara bereaksi.