@mikitasazan/content-engine
v1.0.2
Published
Фабрика контента для сайтов автора: собирает промпты для описаний игр, длинных Q&A-статей и блог-постов и детерминированно проверяет результат гейтами. Чистая TypeScript-библиотека (ESM) — ничего не запускает, не ходит в сеть, кроме вызова модели, и не хр
Readme
@mikitasazan/content-engine
Фабрика контента для сайтов автора: собирает промпты для описаний игр, длинных Q&A-статей и блог-постов и детерминированно проверяет результат гейтами. Чистая TypeScript-библиотека (ESM) — ничего не запускает, не ходит в сеть, кроме вызова модели, и не хранит состояние.
Пакет проприетарный. Он опубликован в npm только для того, чтобы его могли
устанавливать проекты автора. Публикация не даёт прав на использование — см.
LICENSE.
Установка
npm i @mikitasazan/content-engineПровайдер модели
Движок работает с любым OpenAI-совместимым эндпоинтом. Вендор — это URL, ключ и имя модели, а не класс: сменить провайдера значит поменять конфигурацию, а не выпустить релиз.
| Переменная | Обязательна | Зачем |
|---|---|---|
| LLM_API_KEY | да | ключ |
| LLM_BASE_URL | да | адрес API |
| LLM_MODEL | да | имя модели |
| LLM_EXTRA_BODY | нет | JSON, подмешивается в тело запроса — место для нестандартных параметров вендора |
Значений по умолчанию нет ни у одной обязательной: неверный адрес всплыл бы как 401 посреди ночной генерации, а зашитый в публичный пакет — рассказал бы, чья подписка платит за вызовы.
Всё то же можно передать конструктором, минуя окружение:
new OpenAiCompatibleProvider({ apiKey, baseURL, model, extraBody: { thinking: { type: 'disabled' } } });Использование
import { buildGameDescriptionPrompt, createProviderFromEnv } from '@mikitasazan/content-engine';
const provider = createProviderFromEnv();
const text = await provider.complete(
[{ role: 'user', content: buildGameDescriptionPrompt(game, siteConfig) }],
{ temperature: 0.4, maxTokens: 4500 }
);Публичный API — только то, что экспортирует src/index.ts.
Разработка
Устройство движка, действующие решения и грабли — в docs/ внутри репозитория;
в npm-пакет уезжает только dist/.
npm test # 430 тестов, ключ не нужен
npm run typecheck
release patch # релиз и раскатка по потребителям, канон — скилл package-ops