LLM. Кэш. Поиск. Из любого приложения.
Одна строка подключения — и в любом Node/TS/JS приложении появляется LLM, кэш, векторный поиск, телеметрия. Адаптер меняется в конфиге, код не трогаешь.
Три строки — и платформа работает.
KBPlatform из @kb-labs/sdk/platform — HTTP-клиент для Gateway. Zero внешних зависимостей, использует нативный fetch. Все вызовы идут через POST /platform/v1/[adapter]/[method].
Внутри плагинов — те же адаптеры через in-process хуки useLLM(), useCache() — без HTTP round-trip.
import { KBPlatform } from '@kb-labs/sdk/platform';
const platform = new KBPlatform({
endpoint: process.env.KB_ENDPOINT!, // http://localhost:4000
apiKey: process.env.KB_API_KEY!,
});
// LLM, cache, vector search, telemetry — ready to useLLM. Кэш. Векторы. Телеметрия.
Каждый адаптер — типизированный прокси над Unified Platform API. Провайдер выбирается в конфиге — код один и тот же и для OpenAI, и для любого кастомного адаптера.
// Text completion
const result = await platform.llm.complete(
'Explain this function',
{
model: 'gpt-4o',
systemPrompt: 'You are a code assistant.',
temperature: 0.3,
}
);
console.log(result.content);
// { content: '...', usage: { promptTokens: 84, completionTokens: 312 }, model: 'gpt-4o' }
// Chat with tool calling
const res = await platform.llm.chatWithTools(messages, tools);
// { content, toolCalls: [{ id, name, input }], stopReason: 'tool_use' }In-process хуки. Ноль HTTP overhead.
Плагины работают с теми же адаптерами через хуки из SDK — напрямую в памяти, без сетевого слоя. Тот же ILLM, ICache, IAnalytics — одинаковые интерфейсы, другая доставка.
Доступ к адаптерам декларируется в manifest.ts через withPlatform(). Платформа применяет governance, квоты и изоляцию namespace автоматически.
import { useLLM, useCache, useAnalytics, useStorage } from '@kb-labs/sdk';
// In-process — no HTTP round-trip, same interfaces as KBPlatform
const llm = useLLM();
const cache = useCache();
const analytics = useAnalytics();
const storage = useStorage();
const result = await llm.complete(prompt, { temperature: 0.2 });
await cache.set('result', result, 60_000);
await analytics.track('commit.plan.generated', { tokensUsed: result.usage.completionTokens });Меняешь адаптер. Код не трогаешь.
Провайдер LLM, бэкенд кэша, векторная БД — всё в kb.config.json. Поменял одну строку — и весь стек переехал на другой провайдер. Плагины и внешние приложения используют один и тот же интерфейс.
// kb.config.json — swap adapter here, code stays the same
{
"platform": {
"adapters": {
"llm": "@kb-labs/adapters-openai",
"cache": "@kb-labs/adapters-redis",
"vectorStore": "@kb-labs/adapters-qdrant",
"analytics": "@kb-labs/adapters-analytics-duckdb"
},
"adapterOptions": {
"llm": { "model": "gpt-4o-mini" },
"cache": { "url": "redis://localhost:6379" }
}
}
}Один SDK. Любое Node приложение.
LLM, кэш, поиск и телеметрия — без vendor lock-in. Адаптер меняется в конфиге.
npm install @kb-labs/sdk