Kurze Antwort
Wie rufe ich LLMwithCrypto aus Node.js auf?
Installieren Sie das offizielle Paket mit npm install openai und erstellen Sie dann den Client mit baseURL: "https://llmwithcrypto.com/api/v1" und apiKey: process.env.LLMWITHCRYPTO_API_KEY. LLMwithCrypto antwortet auf client.chat.completions.create() im OpenAI-Format für 12 Open-Weight-Modelle, mit Streaming und Tool Calls, wo das Modell sie unterstützt, wie am 23. Oktober 2026 dokumentiert.
Was Sie brauchen
| Node.js | 18 oder neuer, ES-Module (.mjs oder "type": "module") |
|---|---|
| Paket | openai (offiziell) |
| Base URL | https://llmwithcrypto.com/api/v1 |
| Key | In der Umgebungsvariable LLMWITHCRYPTO_API_KEY, niemals im Code oder im Browser |
Wie sende ich eine einzelne Anfrage?
Erstellen Sie den Client einmal beim Start und verwenden Sie ihn überall wieder. Bewahren Sie den Key auf dem Server auf: Ein Key, der im Browser-Code ausgeliefert wird, kann von jedem gelesen werden, der die Seite öffnet. Rufen Sie die API daher von Ihrem Backend auf und senden Sie nur die Antwort an den 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');
Wie führe ich einen Batch aus, ohne das Rate Limit zu erreichen?
Führen Sie jeweils eine feste Anzahl von Anfragen gleichzeitig aus. Der kleine mapLimit-Helper unten hält vier Anfragen in Bearbeitung und gibt die Ergebnisse in der richtigen Reihenfolge zurück; ein zusätzliches Paket ist nicht nötig. Jedes Konto hat ein Anfrage- und Token-Limit pro Minute, das im Dashboard angezeigt wird; fragen Sie den Support, dann kann es erhöht werden.
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));
Wie streame ich die Antwort?
Übergeben Sie stream: true und verwenden Sie for await für das Ergebnis. Jeder Chunk enthält einen Textabschnitt in choices[0].delta.content; mit stream_options: { include_usage: true } enthält der letzte Chunk die Token-Zahlen.
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`);
}
Wie lese ich das verbleibende Guthaben aus?
Der credits-Endpoint ist nicht Teil des OpenAI SDK, rufen Sie ihn daher mit fetch auf. Er ist kostenlos; rufen Sie ihn vor einem großen Batch auf, um sicherzustellen, dass das Guthaben dafür ausreicht.
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');
Wie behandle ich Fehler?
Das SDK wirft bei jedem HTTP-Fehler einen OpenAI.APIError, mit dem Status in err.status und dem code des Bodys in err.code. Prüfen Sie den Code, nicht die Meldung: insufficient_balance bedeutet aufladen, model_not_found bedeutet eine falsche id, rate_limit_exceeded bedeutet warten und erneut versuchen.
Das SDK versucht manche Fehler bereits zweimal mit einer Pause erneut (maxRetries). Behalten Sie bei langen Batches diesen Standard bei, begrenzen Sie die Nebenläufigkeit wie oben und protokollieren Sie die Fehler, bei denen Sie aufgeben. Die Fehlerseite listet jeden Status und welche davon einen erneuten Versuch wert sind. Fehlgeschlagene Aufrufe kosten nichts: Sie zahlen pro Token aus Ihrem Guthaben: Input- und Output-Tokens werden mit dem eigenen Tokenizer des Modells gezählt und zum Preis des Modells pro 1M Tokens berechnet. Ein Aufruf, der mit einem Fehler endet, kostet nichts.
Wie stelle ich eine bestehende OpenAI-App um?
Ändern Sie die Client-Optionen, baseURL und apiKey, und ersetzen Sie jeden gpt-…-Modellnamen durch eine id von der Modellseite. Prompts, Streaming-Code und das Parsen von choices und usage bleiben unverändert. Führen Sie Ihre Tests mit dem neuen Modell aus, bevor Sie den Traffic umstellen: Tool-Calling und JSON-Ausgabe richten sich nach dem, was das jeweilige Modell unterstützt.
Node.js: häufige Fragen
Kann ich die API aus dem Browser aufrufen?
Technisch ja, aber niemals mit Ihrem Key in der Seite. Rufen Sie sie von Ihrem Server aus auf oder von einer serverless Function, die den Key enthält.
Funktioniert das Vercel AI SDK?
Jede Bibliothek, die eine OpenAI-kompatible Base URL akzeptiert, funktioniert. Die API spricht das OpenAI chat completions-Format: Richten Sie das OpenAI SDK, LangChain oder ein beliebiges OpenAI-kompatibles Tool mit Ihrem API-Schlüssel auf unsere Base-URL und ändern Sie den Modellnamen.
Was passiert, wenn das Guthaben aufgebraucht ist?
Aufrufe geben 402 insufficient_balance zurück und kosten nichts. Die Fehlerseite zeigt, wie Sie reagieren.