Skip to content

HEDELKA/k2think-api-builder

Repository files navigation

🚀 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

About

API builder для K2Think платформы

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors