GithubHelp home page GithubHelp logo

zloishavrin / gigachat-node Goto Github PK

View Code? Open in Web Editor NEW
13.0 1.0 1.0 95 KB

Node.js/Typescript library for the GigaChat API

Home Page: https://www.npmjs.com/package/gigachat-node

License: The Unlicense

TypeScript 100.00%
api gigachat gigachat-api nodejs nodejs-modules sber sberbank ai llm

gigachat-node's Introduction

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 Включить возвращение изображений из генерации завершений чата.
imgPath Путь, куда будут сохраняться сгенерированные изображения.

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

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

const responce = await client.allModels();

Описание модели

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

const responce = await client.model('GigaChat:latest');

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

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

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('Поток завершился.')
})

Генерация изображений

При соответствующих настройках конструктора, можно генерировать изображения прямо из завершений чата. Необходимо указать путь до папки, куда будут сохраняться изображения. GigaChat API предоставляет изображения в бинарном виде, однако, если Вы пользуетесь данной библиотекой, то она заботится о преобразовании бинарного представления в JPG, а путь до сгенерированной картинки вернется вместе с завершением чата в объекте responce.choices[0].message.

const responce = await client.completion({
    "model":"GigaChat:latest",
    "messages": [
        {
            role:"user",
            content:"Нарисуй солнечное небо."
        }
    ]
});

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

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

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

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

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

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

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

Примеры работы

Отключение цензуры

Отключение цензуры доступно только в том случае, если Вы пользуетесь GigaChat, как юридическое лицо. Далее следующий алгоритм:

  1. Необходимо написать запрос на почту [email protected] с указанием id пространства и client id, который дается при получении ключа.
  2. После одобрения запроса, необходимо добавить свойство объекта profanity_check со значением false в запросе на завершение чата.

RoadMap

Задача Статус
Создание токена доступа ☑️
Завершение чата ☑️
Автоматическая смена токена, если срок действия подходит к концу ☑️
Завершение чата в потоке ☑️
Генерация картинок при завершении чата ☑️
Написание интерфейсов ☑️
Векторное представление текста ☑️
Метод для расчета кол-ва токенов по строчке запроса ☑️
Автоматическое добавление свойства stream при передаче ответа в потоке ☑️
Обновление интерфейсов: добавление search_result в message, добавление update_interval в completion ☑️
Возможность отключения цензуры ☑️

gigachat-node's People

Contributors

zloishavrin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

e41q

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.