laghav
v0.1.0
Published
Official TypeScript SDK for Laghav AI prompt compression & routing
Maintainers
Readme
laghav
Official TypeScript/JavaScript SDK for Laghav — compress every prompt, route to the cheapest capable model, and see exactly where your money went.
Installation
npm install laghavQuick start
import { LaghavClient } from 'laghav';
const client = new LaghavClient({ apiKey: 'lgh_live_...' });
const response = await client.complete({
messages: [{ role: 'user', content: 'Explain LLM compression in one sentence.' }],
});
console.log(response.choices[0].message.content);
console.log(`Saved $${response.laghav_meta.saved_usd.toFixed(6)} on this call`);Methods
client.complete()
Full completion with compression, routing, caching. Returns a typed LaghavResponse.
const res = await client.complete({
messages: [{ role: 'user', content: '...' }],
model: 'auto',
max_tokens: 1000,
laghav_options: { compress: true, route: true, cache: true },
});
const meta: LaghavMeta = res.laghav_meta; // fully typedclient.complete({ stream: true })
Returns an AsyncGenerator<LaghavStreamChunk>. The final chunk carries laghav_meta.
const stream = await client.complete({
messages: [{ role: 'user', content: '...' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
if (chunk.laghav_meta) {
console.log(`\nSaved: $${chunk.laghav_meta.saved_usd.toFixed(6)}`);
}
}client.ask()
Single-prompt convenience wrapper — returns the reply string directly.
const answer = await client.ask('What is prompt compression?');client.compress()
Compresses text without invoking an LLM (hits /v1/playground).
const compressed = await client.compress('Hello there! I hope you are doing well...');Error handling
import { RateLimitError, BudgetExceededError, LaghavError } from 'laghav';
try {
const res = await client.complete({ messages: [...] });
} catch (e) {
if (e instanceof RateLimitError) {
console.log(`Rate limited — retry after ${e.retryAfter}s`);
} else if (e instanceof BudgetExceededError) {
console.log(`Budget cap reached: ${e.budgetId}`);
} else if (e instanceof LaghavError) {
console.log(`API error [${e.statusCode}] ${e.code}: ${e.message}`);
}
}Environment variables
| Variable | Default | Description |
|---|---|---|
| LAGHAV_API_KEY | — | API key (required if not passed to constructor) |
| LAGHAV_BASE_URL | https://api.laghav.ai | Override for local development |
