Claude API на TypeScript и Node.js
Рабочий серверный пример с официальным пакетом @anthropic-ai/sdk для Node.js и TypeScript.
Проверено: 1 августа 2026 года.
Короткий ответ
@anthropic-ai/sdk, задайте ключ в переменной окружения и создайте клиент с baseURL: "https://api.llm-gate.tech". Не включайте dangerouslyAllowBrowser: API-ключ должен оставаться на сервере.Установка
npm install @anthropic-ai/sdk
export ANTHROPIC_API_KEY="sk-cs2-YOUR_API_KEY"Текущий официальный SDK поддерживает Node.js 20 LTS и более новые поддерживаемые версии. Зафиксируйте dependency lockfile и обновляйте пакет после проверки тестов.
Первый запрос
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
baseURL: "https://api.llm-gate.tech",
});
const message = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 128,
messages: [
{ role: "user", content: "Объясни event loop в двух предложениях." },
],
});
for (const block of message.content) {
if (block.type === "text") console.log(block.text);
}
console.log(message.usage);Только server-side
Потоковый ответ
const stream = client.messages
.stream({
model: "claude-sonnet-4-6",
max_tokens: 256,
messages: [{ role: "user", content: "Напиши короткий пример." }],
})
.on("text", (text) => process.stdout.write(text));
const finalMessage = await stream.finalMessage();
console.log(finalMessage.usage);Для HTTP-ответа вашего приложения учитывайте отключение клиента: отменяйте upstream stream, когда пользователь закрыл соединение, и не продолжайте оплачиваемую генерацию без получателя.
Обработка ошибок
try {
await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 64,
messages: [{ role: "user", content: "Привет!" }],
});
} catch (error) {
if (error instanceof Anthropic.APIError) {
console.error(error.status, error.name);
// Не логируйте API-ключ и полный пользовательский prompt.
}
throw error;
}- Ограничивайте одновременные запросы очередью или semaphore.
- Передавайте timeout, соответствующий вашему HTTP-серверу и прокси.
- Не повторяйте 400/401/403/404 без исправления причины.
- Для 429 и временных 5xx используйте ограниченный exponential backoff.
TypeScript или OpenAI SDK
Для нового Claude-приложения нативный Anthropic SDK точнее отражает Messages API, content blocks и streaming events. Если существующий проект уже построен на пакете OpenAI, в справочнике Messages API указан OpenAI-compatible endpoint.
Официальная документация SDK
Установка, поддерживаемые runtime, типы и streaming сверены с официальным руководством TypeScript SDK. Наш Base URL и модель берутся из актуальной конфигурации Claude API Tech.