npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

k2think-api-builder

v1.2.1

Published

Библиотека для создания кастомных JSON API на основе K2Think.ai

Readme

🚀 K2Think API Builder

npm version Build Status License: MIT Node.js Version

Мощный JavaScript конструктор для создания кастомных JSON API на основе K2Think.ai

Создавайте структурированные API с валидацией JSON схем, готовыми шаблонами и полной кастомизацией для ваших проектов.

🎉 v1.2.0 - Универсальный диалог и JSON Builder!

🆕 Новые классы для полной гибкости:

  • 🎯 UniversalDialog - Мульти-провайдерный диалог (K2Think, OpenAI, Anthropic, кастомные API)
  • 🛠️ K2ThinkJsonBuilder - Полный контроль над JSON структурами запросов
  • 📋 Универсальный формат - Стандартизированная структура сообщений
  • 🎛️ Гибкая конфигурация - JSON config или переменные окружения

✨ Возможности v1.2.0:

  • 🏗️ Построение кастомных JSON - Создавайте любые структуры запросов
  • 🔄 Сохранение/загрузка JSON запросов в файлы
  • 📊 История диалогов в универсальном формате
  • 🌐 Поддержка разных AI провайдеров через единый интерфейс

🎉 v1.1.0 - Критические исправления!

✅ Исправлены проблемы с cookies:

  • Invalid character in header content ["Cookie"] → ✅ Исправлено
  • ❌ Библиотека падала без cookies.txt → ✅ Graceful fallback
  • ❌ Специальные символы в cookies → ✅ URL encoding

🔧 Новые возможности:

  • 🛡️ Graceful fallback - работает без AI функций
  • 🔧 Опциональные cookies - { skipCookies: true }
  • Валидация cookies - автоматическая проверка
  • 📊 isAIEnabled() - проверка доступности AI

🚀 ВАЖНО: Настройка перед использованием

Перед началом работы необходимо настроить аутентификацию в K2Think.ai:

📋 Краткая инструкция (5 минут):

  1. Регистрация: Зайдите на https://www.k2think.ai/ и авторизуйтесь
  2. Расширение: Установите EditThisCookie (V3)
  3. Cookies: На сайте k2think.ai нажмите на иконку расширения → Export → сохраните как Cookie.json
  4. Конвертация: Запустите npm run cookies для конвертации cookies
  5. Настройка: Выполните source set-cookies.sh для настройки окружения

🔗 Подробная инструкция: SETUP.md

⚠️ Важно: Без правильной настройки cookies библиотека не будет работать!


✨ Возможности

🎯 Универсальный диалог (v1.2.0)

  • 🌐 Мульти-провайдер - K2Think.ai, OpenAI, Anthropic, кастомные API
  • 📋 Универсальный формат - Стандартизированная структура сообщений
  • 🎛️ Гибкая конфигурация - JSON config или переменные окружения
  • 📊 История диалогов - Автоматическое сохранение контекста

🛠️ JSON Builder (v1.2.0)

  • 🏗️ Полный контроль над JSON структурами запросов
  • 🔄 Сохранение/загрузка JSON запросов в файлы
  • 📝 Построение диалогов из истории сообщений
  • ⚙️ Все параметры K2Think API под контролем

🔧 Основные возможности

  • 🎯 Готовые шаблоны - 6 предустановленных JSON API для常见 задач
  • 🔧 Кастомные API - Создавайте любые API с JSON схемами
  • Валидация схем - Автоматическая проверка структуры ответов
  • 📊 Структурированные ответы - Всегда валидный JSON с предсказуемой структурой
  • 🚀 Фабричный метод - Быстрое создание и инициализация
  • 📦 Экспорт API - Сохраняйте созданные методы в файлы
  • 🧪 Покрытие тестами - Надежность и стабильность
  • 📚 Подробная документация - Легко начать использовать

📦 Установка

npm install k2think-api-builder

⚠️ После установки: Обязательно выполните настройку аутентификации перед использованием!

🚀 Быстрый старт

✅ Graceful fallback (v1.1.0)

Библиотека теперь работает даже без cookies!

const { CustomAPIBuilder } = require('k2think-api-builder');

async function gracefulStart() {
    const builder = new CustomAPIBuilder();
    await builder.init(); // Всегда успешно!

    if (builder.isAIEnabled()) {
        console.log('✅ AI функции доступны');
        const analyzer = builder.createFromTemplate('textAnalyzer');
        const result = await analyzer.execute('Текст для анализа');
        console.log(result);
    } else {
        console.log('⚠️ AI функции недоступны');
        console.log('Настройте cookies для включения AI функций');
    }
}

🔧 Опциональные cookies (v1.1.0)

Явное отключение AI функций:

// Работаем без AI функций
const builder = new CustomAPIBuilder({ skipCookies: true });
await builder.init();
console.log('Библиотека готова к работе без AI');

Базовое использование

const { CustomAPIBuilder } = require('k2think-api-builder');

async function quickStart() {
    const builder = new CustomAPIBuilder();
    await builder.init();

    // Используем готовый шаблон
    const analyzer = builder.createFromTemplate('textAnalyzer');
    const result = await analyzer.execute('Этот продукт просто замечательный!');
    
    console.log(result);
    // Вывод:
    // {
    //   "sentiment": "позитивный",
    //   "themes": ["качество", "рекомендация"],
    //   "keywords": ["продукт", "замечательный"],
    //   "confidence": 0.95
    // }
}

Фабричный метод

const { create } = require('k2think-api-builder');

async function factoryExample() {
    const builder = await create(); // Автоматическая инициализация
    const api = builder.createFromTemplate('sentimentAnalyzer');
    const result = await api.execute('Отличный день!');
    
    console.log(result.sentiment); // "позитивный"
}

🎯 UniversalDialog (v1.2.0) - Универсальный диалог

Мульти-провайдерный диалог с поддержкой разных AI API через единый интерфейс:

const { UniversalDialog } = require('k2think-api-builder');

// Базовое использование с K2Think
const dialog = new UniversalDialog({
    provider: 'k2think',
    model: 'MBZUAI-IFM/K2-Think',
    systemPrompt: 'Ты - эксперт по программированию'
});

// Отправить сообщение
const response = await dialog.sendMessage('Что такое async/await?');
console.log(response.content);

// Работа с историей
const history = dialog.getHistory();
dialog.saveHistory('my-dialog.json');

🌐 Разные провайдеры

// OpenAI
const openaiDialog = new UniversalDialog({
    provider: 'openai',
    apiKey: 'sk-...',
    model: 'gpt-4'
});

// Anthropic  
const anthropicDialog = new UniversalDialog({
    provider: 'anthropic',
    apiKey: 'sk-ant-...',
    model: 'claude-3-sonnet-20240229'
});

// Кастомный API
const customDialog = new UniversalDialog({
    provider: 'custom',
    baseUrl: 'https://your-api.com',
    endpoint: '/v1/chat/completions',
    apiKey: 'your-key'
});

🛠️ K2ThinkJsonBuilder (v1.2.0) - Полный контроль над JSON

Создавайте любые JSON структуры для K2Think.ai API:

const { K2ThinkJsonBuilder } = require('k2think-api-builder');

const builder = new K2ThinkJsonBuilder(cookies);

// Создаем JSON запрос как вам нужно
let request = builder.createBaseRequest('MBZUAI-IFM/K2-Think');

// Добавляем сообщения в универсальном формате
request = builder.addSystemMessage(request, 'Ты - эксперт по JavaScript');
request = builder.addUserMessage(request, 'Объясни замыкания');
request = builder.addAssistantMessage(request, 'Замыкание - это функция...');
request = builder.addUserMessage(request, 'Приведи пример кода');

// Настраиваем параметры
request = builder.setModelParams(request, {
    temperature: 0.7,
    max_output_tokens: 2048,
    top_p: 0.9
});

// Сохраняем JSON для переиспользования
builder.saveRequest(request, 'my-custom-request.json');

// Отправляем запрос
const response = await builder.sendRequest(request);
console.log(response.response);

📋 Универсальный формат JSON

{
  "model": "MBZUAI-IFM/K2-Think",
  "input": [
    {
      "role": "system",
      "content": [
        {
          "type": "input_text",
          "text": "Системный промпт"
        }
      ]
    },
    {
      "role": "user", 
      "content": [
        {
          "type": "input_text",
          "text": "Сообщение пользователя"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "type": "output_text", 
          "text": "Ответ ассистента"
        }
      ]
    }
  ],
  "text": {
    "format": {
      "type": "text"
    }
  },
  "reasoning": {},
  "tools": [],
  "temperature": 1,
  "max_output_tokens": 2048,
  "top_p": 1,
  "store": true,
  "include": ["web_search_call.action.sources"]
}

🎨 Создание кастомных API

const { create } = require('k2think-api-builder');

async function customAPI() {
    const builder = await create();

    // Создаем свой API для анализа продуктов
    const productAnalyzer = builder.createJSONMethod('productAnalyzer', {
        description: 'Анализ продуктов из отзывов',
        systemPrompt: 'Проанализируй отзыв о продукте и верни детальную информацию.',
        
        jsonSchema: {
            type: "object",
            required: ["product_name", "rating", "sentiment"],
            properties: {
                product_name: { type: "string" },
                rating: { type: "number", minimum: 1, maximum: 5 },
                sentiment: { 
                    type: "string", 
                    enum: ["позитивный", "негативный", "нейтральный"] 
                },
                pros: { type: "array", items: { type: "string" } },
                cons: { type: "array", items: { type: "string" } }
            }
        }
    });

    const result = await productAnalyzer.execute(
        'iPhone 15 Pro Max - отличный телефон, камера супер!'
    );
    
    console.log(result);
}

📊 Доступные шаблоны

| Шаблон | Описание | Пример использования | |--------|----------|----------------------| | textAnalyzer | Анализ текста с тональностью | Анализ отзывов, комментариев | | contentGenerator | Генерация контента | Создание статей, постов | | classifier | Классификация текста | Категоризация документов | | translator | Перевод текста | Многоязычная поддержка | | sentimentAnalyzer | Детальный анализ тональности | Анализ эмоций | | productDescriber | Генерация описаний продуктов | E-commerce, маркетинг |

🔧 API Reference

CustomAPIBuilder

Методы

  • init() - Инициализация билдера
  • createFromTemplate(templateName) - Создание API из шаблона
  • createJSONMethod(name, config) - Создание кастомного JSON API
  • parseJSONResponse(response) - Извлечение JSON из ответа
  • validateJSON(data, schema) - Валидация JSON по схеме
  • exportAPI(methods, filename) - Экспорт API в файл

Конфигурация JSON метода

const config = {
    description: 'Описание API метода',
    systemPrompt: 'Системный промпт для модели',
    jsonSchema: {
        type: 'object',
        required: ['поле1', 'поле2'],
        properties: {
            поле1: { type: 'string' },
            поле2: { type: 'number' }
        }
    },
    validateInput: (input) => {
        // Кастомная валидация входных данных
        return true;
    },
    postProcess: (result) => {
        // Пост-обработка результата
        return result;
    }
};

📁 Структура проекта

k2think-api-builder/
├── src/
│   ├── index.js              # Главный файл библиотеки
│   ├── api-builder.js        # Основной класс CustomAPIBuilder
│   ├── k2think-dialog.js     # Диалог с K2Think
│   └── cookie-converter.js   # Конвертер cookies
├── examples/                 # Примеры использования
│   ├── basic-usage.js
│   ├── custom-api.js
│   ├── batch-processing.js
│   └── factory-method.js
├── tests/                    # Тесты
│   ├── api-builder.test.js
│   └── k2think-dialog.test.js
├── docs/                     # Документация
│   └── create-custom-api.md
├── package.json
├── README.md
├── LICENSE
└── CHANGELOG.md

🧪 Запуск тестов

# Установка зависимостей
npm install

# Запуск всех тестов
npm test

# Запуск в режиме watch
npm run test:watch

# Проверка кода
npm run lint

# Исправление кода
npm run lint:fix

📚 Примеры

Запуск демо

# Базовый пример
npm run demo

# Примеры из папки examples
node examples/basic-usage.js
node examples/custom-api.js
node examples/batch-processing.js
node examples/factory-method.js

Пакетная обработка

const { create } = require('k2think-api-builder');

async function batchProcess() {
    const builder = await create();
    const analyzer = builder.createFromTemplate('sentimentAnalyzer');
    
    const texts = [
        'Отличный продукт!',
        'Ужасное качество...',
        'Нормальный товар.'
    ];
    
    for (const text of texts) {
        const result = await analyzer.execute(text);
        console.log(`${text} -> ${result.overall_sentiment}`);
    }
}

🔌 Интеграция

Express.js

const express = require('express');
const { create } = require('k2think-api-builder');

const app = express();
app.use(express.json());

let builder;

async function initServer() {
    builder = await create();
    
    app.post('/analyze', async (req, res) => {
        try {
            const analyzer = builder.createFromTemplate('textAnalyzer');
            const result = await analyzer.execute(req.body.text);
            res.json(result);
        } catch (error) {
            res.status(500).json({ error: error.message });
        }
    });
    
    app.listen(3000);
}

initServer();

Next.js API Route

// pages/api/analyze.js
import { create } from 'k2think-api-builder';

const builder = await create();

export default async function handler(req, res) {
    if (req.method === 'POST') {
        try {
            const analyzer = builder.createFromTemplate('textAnalyzer');
            const result = await analyzer.execute(req.body.text);
            res.json(result);
        } catch (error) {
            res.status(500).json({ error: error.message });
        }
    }
}

🛠️ Разработка

Сборка проекта

npm run build

Генерация документации

npm run docs

📝 CHANGELOG

Смотрите CHANGELOG.md для информации об изменениях.

📄 Лицензия

MIT License - см. LICENSE файл для деталей.

🤝 Вклад

Приветствуются pull requests и issues! Пожалуйста, ознакомьтесь с нашими правилами внесения вклада.

📞 Поддержка

💳 Криптоподдержка

Если вы хотите поддержать проект криптовалютой:

  • USDT (TON Network): UQABR7EgocAi1K4VH3Fg4FHyhmNLC9FPoYuED3YkBJZAFelt
  • TRC20 (USDT): TKSvGezbzvEz9XpKANUUZE89ej436eiqmd

Любая поддержка помогает развивать проект! 🙏

⭐ Звезды

Если эта библиотека вам помогла, поставьте ⭐ на GitHub!


Создано с ❤️ командой K2Think.ai

📦 Установка

npm install

🔐 Настройка аутентификации

  1. Зайдите на https://www.k2think.ai
  2. Авторизуйтесь
  3. Откройте DevTools (F12) → Network
  4. Отправьте любое сообщение в чате
  5. Найдите запрос к API → Headers → Cookie
  6. Скопируйте все cookie и установите переменную окружения:
export K2THINK_COOKIES="token=ваш_jwt; AWSALB=...; AWSALBCORS=...; _ga=...; _fbp=..."

🔐 Аутентификация

Автоматическая (рекомендуется):

  1. Экспортируйте cookies из браузера в формате JSON
  2. Сохраните как Cookie.json в папке проекта
  3. Конвертируйте: npm run cookies
  4. Установите: source set-cookies.sh
  5. Запустите: npm start

Ручная:

export K2THINK_COOKIES="token=ваш_jwt; AWSALB=...; _ga=..."
npm start

🎯 Использование

Запуск диалога:

npm start
# или
node k2think-dialog.js

Создание кастомных API:

npm run api
# или
node api-builder.js

Управление cookies:

npm run cookies              # конвертировать Cookie.json
node cookie-converter.js show # показать текущие cookies

🎯 Универсальный диалог (v1.2.0):

npm run universal             # запустить универсальный диалог
node src/universal-dialog.js  # прямой запуск

🛠️ JSON Builder (v1.2.0):

npm run json                  # запустить JSON Builder
node src/k2think-json-builder.js # прямой запуск

Анализ HAR файла:

npm run analyze
# или
node har-analyzer.js

Программное использование:

const K2ThinkDialog = require('./k2think-dialog');

const dialog = new K2ThinkDialog(cookies);

// Создание нового чата
const chat = await dialog.createNewChat('Привет! Меня зовут Алексей.');

// Отправка сообщения с потоковым ответом
console.log('🤖 Ответ: ');
const response = await dialog.sendMessage(chat.id, 'Расскажи о себе');
console.log(response);

📋 Пример диалога

👤 Пользователь: Привет! Меня зовут Алексей. Я разработчик из Москвы.
🤖 Ответ: Привет, Алексей! Я искусственный интеллект...

💬 Вопрос: Как меня зовут?
🤖 Ответ: Ваше имя — Алексей.

💬 Вопрос: Чем я занимаюсь?
🤖 Ответ: Вы разработчик...

💬 Вопрос: Откуда я?
🤖 Ответ: Вы из Москвы...

🏗️ Структура проекта

k2think-no-ofs/
├── k2think-dialog.js      # Основной класс для работы с API
├── api-builder.js         # 🎨 Конструктор кастомных API
├── cookie-converter.js    # Конвертер cookies из JSON в строку
├── har-analyzer.js        # Анализатор HAR файлов для извлечения данных
├── package.json           # Зависимости проекта
├── README.md             # Документация
├── create-custom-api.md  # 📚 Документация по созданию API
├── Cookie.json           # Cookies в формате JSON (ваш файл)
├── cookies.txt           # Cookies в строке (генерируется)
└── set-cookies.sh        # Скрипт установки (генерируется)

🔍 Анализ HAR файла

Если у вас есть HAR файл с записью запросов к K2Think.ai, вы можете:

  1. Разместить HAR файл в папке проекта как www.k2think.ai.har
  2. Запустить анализ: npm run analyze или node har-analyzer.js
  3. Получить данные: cookies, headers, структура запросов

Что извлекает анализатор:

  • 🍪 Cookies для аутентификации
  • 📡 API эндпоинты и методы
  • 📝 Структура запросов и ответов
  • 🔧 Headers для правильных запросов

🎨 Custom API Builder

Создавайте собственные API методы на основе K2Think.ai для любых задач:

📊 Готовые шаблоны:

  • textAnalyzer - анализ тональности, тем, ключевых слов
  • contentGenerator - генерация контента по параметрам
  • classifier - классификация объектов
  • translator - перевод между языками
  • dataExtractor - извлечение структурированных данных

🚹 Пример использования:

const CustomAPIBuilder = require('./api-builder');
const builder = new CustomAPIBuilder();

// Анализ текста
const analyzer = builder.createFromTemplate('textAnalyzer');
const result = await analyzer.execute('Отличный продукт!');
// { sentiment: 'позитивный', themes: ['отзывы'], keywords: ['отличный'] }

// Кастомный метод
const customMethod = builder.createCustom('summarizer', {
    systemPrompt: 'Создай краткое содержание текста',
    parseResponse: (response) => response.trim()
});

const summary = await customMethod.execute('Длинный текст...');

📖 Подробнее:

См. create-custom-api.md для полной документации.


📚 Документация по новым классам (v1.2.0)

🎯 UniversalDialog

  • 📖 Полная документация: docs/UNIVERSAL_DIALOG.md
  • 🌐 Поддержка мульти-провайдеров (K2Think, OpenAI, Anthropic, кастомные)
  • 📋 Универсальный формат сообщений
  • 🎛️ Гибкая конфигурация через JSON или переменные окружения
  • 📊 Автоматическое сохранение истории диалогов

🛠️ K2ThinkJsonBuilder

  • 📖 Полная документация: docs/JSON_BUILDER.md
  • 🏗️ Полный контроль над JSON структурами запросов
  • 🔄 Сохранение и загрузка JSON запросов
  • 📝 Построение диалогов из истории сообщений
  • ⚙️ Все параметры K2Think API под вашим контролем

📁 Примеры использования

  • examples/configs/config-example.json - пример конфигурации
  • examples/json-requests/ - готовые JSON запросы
  • examples/test-fixes.js - тестовые примеры

⚙️ API методы

  • createNewChat(message) - Создание нового чата
  • sendMessage(chatId, message) - Отправка сообщения с потоковым ответом
  • getChat(chatId) - Получение информации о чате
  • getChatList(page) - Получение списка чатов

📝 Особенности

  • Память диалога: Модель помнит всю историю разговора
  • Потоковая передача: Ответы приходят по частям через SSE
  • Контекст сохраняется: Каждый новый запрос включает всю историю
  • Русский язык: Полная поддержка русского языка

🔧 Требования

  • Node.js 18+
  • npm

📄 Лицензия

MIT