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

gigachat-node

v2.4.5

Published

The unoffical JavaScript/TypesSript library for the GigaChat API

Readme

GigaChat API Library

Эта библиотека обеспечивает удобный доступ к GigaChat REST API из TypeScript или JavaScript.

Чтобы узнать, как использовать GigaChat API, ознакомьтесь с документацией по API.

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

Установка

npm i gigachat-node

Импорт

Первый вариант импорта:

import { GigaChat } from 'gigachat-node';

Второй вариант импорта:

const GigaChat = require('gigachat-node').GigaChat;

Начало работы

Создание экземпляра класса и получение токена доступа к API (подробнее в документации). Обратите внимание, что при получении CLIENT_SECRET необходимо копировать значение в Base64, иначе придется переводить самостоятельно ключ в Base64.

const client = new GigaChat({
    clientSecretKey: 'CLIENT-SECRET-KEY', 
    isIgnoreTSL: true,
    isPersonal: true,
    autoRefreshToken: true
});
await client.createToken();

| Аргумент конструктора | Характеристика | |-----------------------|----------------| |clientSecretKey| Нужен для получения токена доступа к API. Получить можно в личном кабинете. Обязательно в base64. | |isIgnoreTSL| Используется для настройки https-агента. Некоторые системы считают сертификат безопасности Сбербанка ненадежным. Если сертикат безопасности игнорируется, то может снизиться безопасность обмена данными. Если же сертификат безопасности не игнорируется, то необходимо его установить. | |isPersonal| Нужно для получения токена доступа к API. Если вы используете API, как физическое лицо - ставьте true. Если юридическое лицо - false. | |autoRefreshToken| Если параметр указан true, то токен будет автоматически обновляться. Токен обновляется, если при запросе получена ошибка о том, что срок действия токена закончился (запрос при этом выполняется повторно). Если параметр указан false, то при попытке использовать недействительный токен вернется ошибка. Срок действия токена - 30 минут. | |imgOn|Включить возвращение изображений из генерации завершений чата. |

Получение всех моделей

Возвращает массив объектов с данными доступных моделей.

const responce = await client.allModels();

Завершение чата

Возвращает ответ модели с учетом переданных сообщений. Подробнее про параметры запроса можно прочитать в оффициальной документации.

const responce = await client.completion({
    "model":"GigaChat:latest",
    "messages": [
        {
            role:"user",
            content:"Привет! Как дела?"
        }
    ]
});

console.log(responce.choices[0].message);

Завершение чата в потоке

Возвращает ответ модели в потоке в base64. Подробнее можно прочитать в оффициальной документации.

const stream = await client.completionStream({
    "model":"GigaChat:latest",
    "messages": [
        {
            role:"user",
            content:"Привет! Напиши текст на 2000 слов про историю часов."
        }
    ]
});

let str = '';

stream.on('data', async (data) => {
    const decodedData = await data.toString('utf-8');
    const jsonData = await JSON.parse(decodedData.substring(6));
    str += jsonData.choices[0].delta.content;
})

stream.on('end', () => {
    console.log('Поток завершился.')
})

Векторное представление текста

Возвращает векторные представления соответствующих текстовых запросов. Подробнее в документации API.

const embed = await client.embedding(["Как дела?", "Векторное представлеие? 0_0"]);
console.log(embed.data);

Подсчет кол-ва токенов

Возвращает объект с информацией о количестве токенов, посчитанных заданной моделью. Подробнее в документации API.

const sum = await client.summarize("GigaChat", ["Подсчитай кол-во токенов в этой строке"]);
console.log(sum[0].tokens);

Загрузка файлов

Загружает в хранилище текстовые документы или изображения. Возвращает объект с данными загруженного файла. Загруженные файлы доступны только вам. Подробнее в документации API.

const file = await client.uploadFile("path/to/file");
console.log(file);

Получение доступных файлов

Получение списка всех доступных файлов. Возвращает массив объектов с данными доступных файлов. Подробнее в документации API.

const files = await client.getAllFiles();
console.log(files);

Получение информации о файле

Получение информации о файле по уникальному идентификатору. Возвращает объект с описанием указанного файла. Подробнее в документации API.

const file = await client.getFileInfo('fileId');
console.log(file);

Получение баланса токенов

Возвращает доступный остаток токенов для каждой из моделей. Подробнее в документации API.

const balance = await client.getBalance();
console.log(balance);

Удаление файла

Удаление файла по уникальному идентификатору. Переводит статус файла в значение deleted. Подробнее в документации API.

const deletedFile = await client.deleteFile('fileId');
console.log(deletedFile);

Скачивание файла

Получение файла в бинарном формате по уникальному идентификатору.

const binary = await client.downloadFile("fileId");
console.log(binary);

RoadMap

| Задача | Статус | |--------|--------| |Создание токена доступа|☑️| |Завершение чата|☑️| |Автоматическая смена токена, если срок действия подходит к концу|☑️| |Завершение чата в потоке|☑️| |Генерация картинок при завершении чата|☑️| |Написание интерфейсов|☑️| |Векторное представление текста|☑️| |Метод для расчета кол-ва токенов по строчке запроса|☑️| |Автоматическое добавление свойства stream при передаче ответа в потоке|☑️| |Обновление интерфейсов: добавление search_result в message, добавление update_interval в completion|☑️| |Возможность отключения цензуры|☑️| |Загрузка файлов|☑️| |Конфиг-интерфейс для конструктора класса|☑️| |Настройка ESLinter|☑️| |Настройка Prettier|☑️| |Автодокументирование|☑️| |Pre-Commit|☑️| |GH-Action для NPM-публикации|☑️| |Примеры использования|☑️| |Избавиться от UUID-зависимости|☑️| |Избавиться от FormData-зависимости|☑️| |Добавить обработку ошибок|☑️| |Настроить дженерики для обработки ошибок|☑️| |Настроить экспорт ошибки|☑️| |Настройка тестов в проекте|☑️| |Переписать библиотеку на нативный HTTPS вместо Axios|☑️| |Настроить минификацию пакета в CI|☑️| |Метод для получения списка доступных файлов|☑️| |Метод для получения информации о файле|☑️| |Метод для удаления файла|☑️| |Метод для получения баланса|☑️| |Метод для скачивания файла|☑️| |Добавить поддержку загрузки файла с помощью бинарных данных| | |Рефакторинг обработки ошибок| | |Тесты для публичных методов| | |Извлечение видео из завершения чата| | |Поддержка работы из браузерной среды| |