The official Node.js SDK for training, deploying, and managing AI models with Langtrain.
1npm install langtrain-ai23# With yarn4yarn add langtrain-ai56# With pnpm7pnpm add langtrain-ai
1import Langtrain from 'langtrain-ai';23// Option 1: Environment variable (recommended)4// LANGTRAIN_API_KEY=your-api-key56// Option 2: Direct initialization7const client = new Langtrain({8 apiKey: 'your-api-key',9});1011// Option 3: From environment12const client = new Langtrain({13 apiKey: process.env.LANGTRAIN_API_KEY,14});
1import { LoRATrainer } from 'langtrain-ai';23const trainer = new LoRATrainer({4 model: 'meta-llama/Llama-3.3-8B',5 outputDir: './my-model',6});78// Train on your data9await trainer.train('training_data.jsonl');1011// Save and upload the trained model12await trainer.save();13await trainer.push('my-custom-model');
1import { Dataset } from 'langtrain-ai';23// Upload a dataset4const dataset = await Dataset.upload({5 filePath: 'data.jsonl',6 name: 'customer-support-v1',7});89console.log('Dataset ID:', dataset.id);10console.log('Rows:', dataset.rowCount);1112// List all datasets13const datasets = await Dataset.list();14datasets.forEach(ds => {15 console.log(`- ${ds.name} (${ds.status})`);16});
1import { TrainingJob } from 'langtrain-ai';23// Create a training job4const job = await TrainingJob.create({5 modelId: 'llama-3.3-8b',6 datasetId: dataset.id,7 config: {8 method: 'qlora',9 epochs: 3,10 learningRate: 2e-4,11 batchSize: 4,12 },13});1415// Poll for completion16while (['pending', 'running'].includes(job.status)) {17 await job.refresh();18 console.log(`Status: ${job.status}, Progress: ${job.progress}%`);19 await new Promise(r => setTimeout(r, 30_000));20}2122console.log('Training completed:', job.modelId);
1import { Model } from 'langtrain-ai';23const model = await Model.load('my-custom-model');45// Generate text6const response = await model.generate({7 prompt: 'Explain machine learning',8 maxTokens: 200,9 temperature: 0.7,10});11console.log(response);1213// Chat interface14const chatResponse = await model.chat([15 { role: 'user', content: 'Hello!' }16]);17console.log(chatResponse.content);1819// Streaming20for await (const chunk of model.stream('Tell me a story')) {21 process.stdout.write(chunk);22}
1import Langtrain, {2 type TrainingConfig,3 type GenerateOptions,4 type ChatMessage,5} from 'langtrain-ai';67const config: TrainingConfig = {8 method: 'qlora',9 epochs: 3,10 learningRate: 2e-4,11};1213const messages: ChatMessage[] = [14 { role: 'system', content: 'You are a helpful assistant.' },15 { role: 'user', content: 'What is fine-tuning?' },16];1718const client = new Langtrain();19const response = await client.chat(messages, { model: 'my-model' });
1import {2 LangtrainError,3 AuthenticationError,4 RateLimitError,5 ValidationError,6 NotFoundError,7} from 'langtrain-ai';89try {10 const job = await TrainingJob.create({ ... });11} catch (err) {12 if (err instanceof AuthenticationError) {13 console.error('Invalid API key');14 } else if (err instanceof RateLimitError) {15 console.error(`Rate limited — retry in ${err.retryAfter}s`);16 } else if (err instanceof ValidationError) {17 console.error('Invalid config:', err.message);18 } else if (err instanceof NotFoundError) {19 console.error('Model or dataset not found');20 }21}