빠른 답변
Node.js에서 LLMwithCrypto을 어떻게 호출하나요?
npm install openai으로 공식 패키지를 설치한 다음, baseURL: "https://llmwithcrypto.com/api/v1"과 apiKey: process.env.LLMWITHCRYPTO_API_KEY로 클라이언트를 생성하세요. LLMwithCrypto는 2026년 10월 23일 기준 문서화된 대로, 12개의 오픈 가중치 모델에 대해 OpenAI 형식으로 client.chat.completions.create()에 응답하며, 모델이 지원하는 경우 스트리밍과 툴 호출도 제공합니다.
필요한 것
| Node.js | 18 이상, ES 모듈 (.mjs 또는 "type": "module") |
|---|---|
| 패키지 | openai (공식) |
| Base URL | https://llmwithcrypto.com/api/v1 |
| Key | 코드나 브라우저가 아니라 환경 변수 LLMWITHCRYPTO_API_KEY에 넣으세요 |
요청 하나는 어떻게 보내나요?
클라이언트는 시작할 때 한 번만 만들고 어디서든 재사용하세요. 키는 서버에 두세요. 브라우저 코드에 넣은 키는 페이지를 연 사람 누구나 읽을 수 있으므로, 백엔드에서 API를 호출하고 브라우저에는 답변만 보내세요.
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');
rate limit에 걸리지 않고 배치는 어떻게 실행하나요?
한 번에 정해진 수의 요청만 실행하세요. 아래의 작은 mapLimit 헬퍼는 동시에 네 개를 유지하고 결과를 순서대로 반환하며, 추가 패키지가 필요하지 않습니다. 모든 계정에는 분당 요청 및 토큰 한도가 있으며 대시보드에 표시됩니다. 지원팀에 요청하면 한도를 올릴 수 있습니다.
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));
답변은 어떻게 스트리밍하나요?
stream: true을 전달하고 결과에 for await을 사용하세요. 각 청크는 choices[0].delta.content에 텍스트 조각을 담고, stream_options: { include_usage: true }을 쓰면 마지막 청크에 토큰 수가 들어 있습니다.
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`);
}
남은 크레딧은 어떻게 확인하나요?
크레딧 endpoint는 OpenAI SDK에 포함되어 있지 않으므로 fetch로 호출하세요. 이 호출은 무료이며, 큰 배치 전에 호출하면 크레딧으로 감당할 수 있는지 확인할 수 있습니다.
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');
오류는 어떻게 처리하나요?
SDK는 모든 HTTP 오류에 대해 OpenAI.APIError를 발생시키며, 상태 코드는 err.status에, 본문의 code는 err.code에 담깁니다. 메시지가 아니라 코드를 확인하세요. insufficient_balance은 충전하라는 뜻이고, model_not_found은 잘못된 id라는 뜻이며, rate_limit_exceeded은 기다렸다가 재시도하라는 뜻입니다.
SDK는 이미 일부 오류를 잠시 멈춘 뒤 두 번 재시도합니다(maxRetries). 긴 배치에서는 이 기본값을 유지하고, 위처럼 동시성을 제한하며, 포기한 실패는 로그로 남기세요. errors 페이지에는 모든 상태 코드와 재시도할 가치가 있는 항목이 정리되어 있습니다. 실패한 호출에는 비용이 들지 않습니다: 잔액에서 토큰 단위로 결제합니다. 입력 및 출력 토큰은 모델 자체의 tokenizer로 계산되며, 해당 모델의 1M 토큰당 가격으로 청구됩니다. 오류로 끝난 호출은 비용이 들지 않습니다.
기존 OpenAI 앱은 어떻게 옮기나요?
클라이언트 옵션인 baseURL과 apiKey을 바꾸고, 모든 gpt-… 모델 이름을 models 페이지에 있는 id로 교체하세요. 프롬프트, 스트리밍 코드, choices와 usage 파싱은 그대로 둡니다. 트래픽을 전환하기 전에 새 모델에서 테스트를 실행하세요. tool calling과 JSON 출력은 각 모델이 지원하는 사양을 따릅니다.
Node.js: 자주 묻는 질문
브라우저에서 API를 호출할 수 있나요?
기술적으로는 가능하지만, 페이지에 키를 넣어서는 절대 안 됩니다. 서버에서 호출하거나, 키를 보관하는 서버리스 함수에서 호출하세요.
Vercel AI SDK는 동작하나요?
OpenAI 호환 base URL을 받는 라이브러리라면 모두 동작합니다. API는 OpenAI chat completions 형식을 따릅니다. OpenAI SDK, LangChain 또는 OpenAI 호환 도구의 base URL을 우리 base URL로 지정하고 키를 넣은 뒤 모델 이름만 바꾸면 됩니다.
크레딧이 소진되면 어떻게 되나요?
호출은 402 insufficient_balance을 반환하며 비용이 들지 않습니다. errors 페이지에 대응 방법이 나와 있습니다.