Мощный JavaScript конструктор для создания кастомных JSON API на основе K2Think.ai
Создавайте структурированные API с валидацией JSON схем, готовыми шаблонами и полной кастомизацией для ваших проектов.
🆕 Новые классы для полной гибкости:
- 🎯 UniversalDialog - Мульти-провайдерный диалог (K2Think, OpenAI, Anthropic, кастомные API)
- 🛠️ K2ThinkJsonBuilder - Полный контроль над JSON структурами запросов
- 📋 Универсальный формат - Стандартизированная структура сообщений
- 🎛️ Гибкая конфигурация - JSON config или переменные окружения
✨ Возможности v1.2.0:
- 🏗️ Построение кастомных JSON - Создавайте любые структуры запросов
- 🔄 Сохранение/загрузка JSON запросов в файлы
- 📊 История диалогов в универсальном формате
- 🌐 Поддержка разных AI провайдеров через единый интерфейс
✅ Исправлены проблемы с 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:
- Регистрация: Зайдите на https://www.k2think.ai/ и авторизуйтесь
- Расширение: Установите EditThisCookie (V3)
- Cookies: На сайте k2think.ai нажмите на иконку расширения → Export → сохраните как
Cookie.json - Конвертация: Запустите
npm run cookiesдля конвертации cookies - Настройка: Выполните
source set-cookies.shдля настройки окружения
🔗 Подробная инструкция: SETUP.md
⚠️ Важно: Без правильной настройки cookies библиотека не будет работать!
- 🌐 Мульти-провайдер - K2Think.ai, OpenAI, Anthropic, кастомные API
- 📋 Универсальный формат - Стандартизированная структура сообщений
- 🎛️ Гибкая конфигурация - JSON config или переменные окружения
- 📊 История диалогов - Автоматическое сохранение контекста
- 🏗️ Полный контроль над JSON структурами запросов
- 🔄 Сохранение/загрузка JSON запросов в файлы
- 📝 Построение диалогов из истории сообщений
- ⚙️ Все параметры K2Think API под контролем
- 🎯 Готовые шаблоны - 6 предустановленных JSON API для常见 задач
- 🔧 Кастомные API - Создавайте любые API с JSON схемами
- ✅ Валидация схем - Автоматическая проверка структуры ответов
- 📊 Структурированные ответы - Всегда валидный JSON с предсказуемой структурой
- 🚀 Фабричный метод - Быстрое создание и инициализация
- 📦 Экспорт API - Сохраняйте созданные методы в файлы
- 🧪 Покрытие тестами - Надежность и стабильность
- 📚 Подробная документация - Легко начать использовать
npm install k2think-api-builder
⚠️ После установки: Обязательно выполните настройку аутентификации перед использованием!
Библиотека теперь работает даже без 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 функций');
}
}Явное отключение 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); // "позитивный"
}Мульти-провайдерный диалог с поддержкой разных 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'
});Создавайте любые 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);{
"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"]
}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, маркетинг |
init()- Инициализация билдераcreateFromTemplate(templateName)- Создание API из шаблонаcreateJSONMethod(name, config)- Создание кастомного JSON APIparseJSONResponse(response)- Извлечение JSON из ответаvalidateJSON(data, schema)- Валидация JSON по схемеexportAPI(methods, filename)- Экспорт API в файл
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.jsconst { 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}`);
}
}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();// 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 buildnpm run docsСмотрите CHANGELOG.md для информации об изменениях.
MIT License - см. LICENSE файл для деталей.
Приветствуются pull requests и issues! Пожалуйста, ознакомьтесь с нашими правилами внесения вклада.
- 📧 Email: HEDELKA@yandex.ru
- 🐛 Issues: GitHub Issues
- 📖 Документация: GitHub Wiki
Если вы хотите поддержать проект криптовалютой:
- USDT (TON Network):
UQABR7EgocAi1K4VH3Fg4FHyhmNLC9FPoYuED3YkBJZAFelt - TRC20 (USDT):
TKSvGezbzvEz9XpKANUUZE89ej436eiqmd
Любая поддержка помогает развивать проект! 🙏
Если эта библиотека вам помогла, поставьте ⭐ на GitHub!
Создано с ❤️ командой K2Think.ai
npm install- Зайдите на https://www.k2think.ai
- Авторизуйтесь
- Откройте DevTools (F12) → Network
- Отправьте любое сообщение в чате
- Найдите запрос к API → Headers → Cookie
- Скопируйте все cookie и установите переменную окружения:
export K2THINK_COOKIES="token=ваш_jwt; AWSALB=...; AWSALBCORS=...; _ga=...; _fbp=..."- Экспортируйте cookies из браузера в формате JSON
- Сохраните как
Cookie.jsonв папке проекта - Конвертируйте:
npm run cookies - Установите:
source set-cookies.sh - Запустите:
npm start
export K2THINK_COOKIES="token=ваш_jwt; AWSALB=...; _ga=..."
npm startnpm start
# или
node k2think-dialog.jsnpm run api
# или
node api-builder.jsnpm run cookies # конвертировать Cookie.json
node cookie-converter.js show # показать текущие cookiesnpm run universal # запустить универсальный диалог
node src/universal-dialog.js # прямой запускnpm run json # запустить JSON Builder
node src/k2think-json-builder.js # прямой запускnpm run analyze
# или
node har-analyzer.jsconst 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 файл с записью запросов к K2Think.ai, вы можете:
- Разместить HAR файл в папке проекта как
www.k2think.ai.har - Запустить анализ:
npm run analyzeилиnode har-analyzer.js - Получить данные: cookies, headers, структура запросов
- 🍪 Cookies для аутентификации
- 📡 API эндпоинты и методы
- 📝 Структура запросов и ответов
- 🔧 Headers для правильных запросов
Создавайте собственные 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 для полной документации.
- 📖 Полная документация: docs/UNIVERSAL_DIALOG.md
- 🌐 Поддержка мульти-провайдеров (K2Think, OpenAI, Anthropic, кастомные)
- 📋 Универсальный формат сообщений
- 🎛️ Гибкая конфигурация через JSON или переменные окружения
- 📊 Автоматическое сохранение истории диалогов
- 📖 Полная документация: docs/JSON_BUILDER.md
- 🏗️ Полный контроль над JSON структурами запросов
- 🔄 Сохранение и загрузка JSON запросов
- 📝 Построение диалогов из истории сообщений
- ⚙️ Все параметры K2Think API под вашим контролем
examples/configs/config-example.json- пример конфигурацииexamples/json-requests/- готовые JSON запросыexamples/test-fixes.js- тестовые примеры
createNewChat(message)- Создание нового чатаsendMessage(chatId, message)- Отправка сообщения с потоковым ответомgetChat(chatId)- Получение информации о чатеgetChatList(page)- Получение списка чатов
- Память диалога: Модель помнит всю историю разговора
- Потоковая передача: Ответы приходят по частям через SSE
- Контекст сохраняется: Каждый новый запрос включает всю историю
- Русский язык: Полная поддержка русского языка
- Node.js 18+
- npm
MIT