0.0.12 • Published 6 months ago

gigachat v0.0.12

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

GigaChat SDK (TypeScript/JavaScript) библиотека

Данная библиотека реализует методы REST API GigaChat. Она является частью GigaChain

Вот часть того, что она поддерживает:

!TIP Больше примеров работы с библиотекой gigachat — в папке examples.

Установка

npm install gigachat

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

Для работы с библиотекой вам понадобится ключ авторизации API.

Чтобы получить ключ авторизации:

  1. Создайте проект GigaChat API в личном кабинете Studio.
  2. В интерфейсе проекта, в левой панели выберите раздел Настройки API.
  3. Нажмите кнопку Получить ключ.

В открывшемся окне скопируйте и сохраните значение поля Authorization Key. Ключ авторизации, отображается только один раз и не хранятся в личном кабинете. При компрометации или утере ключа авторизации вы можете сгенерировать его повторно.

Подробно о том, как создать проект GigaChat API — в официальной документации, в разделах Быстрый старт для физических лиц и Быстрый старт для ИП и юридических лиц.

Передайте полученный ключ авторизации в параметре credentials при инициализации объекта GigaChat.

Пример показывает как отправить простой запрос на генерацию с помощью библиотеки GigaChat:

import GigaChat from 'gigachat';
import { Agent } from 'node:https';

const httpsAgent = new Agent({
  rejectUnauthorized: false, // Отключает проверку корневого сертификата
  // Читайте ниже как можно включить проверку сертификата Мин. Цифры
});

const client = new GigaChat({
  timeout: 600,
  model: 'GigaChat',
  credentials: 'ваш_ключ_авторизации',
  httpsAgent: httpsAgent,
});

client
  .chat({
    messages: [{ role: 'user', content: 'Привет, как дела?' }],
  })
  .then((resp) => {
    console.log(resp.choices[0]?.message.content);
  });

Способы авторизации

Для авторизации запросов, кроме ключа, полученного в личном кабинете, вы можете использовать:

  • credentials
  • имя пользователя и пароль для доступа к сервису;
  • сертификаты TLS;
  • токен доступа (access token), полученный в обмен на ключ авторизации в запросе POST /api/v2/oauth.

Для этого передайте соответствующие параметры при инициализации.

Пример авторизации с credentials:

const client = new GigaChat({
  credentials: 'креды',
  scope: 'GIGACHAT_API_PERS / GIGACHAT_API_B2B / GIGACHAT_API_CORP',
});

Пример авторизации с помощью логина и пароля:

const client = new GigaChat({
  baseUrl: 'BASE URL апи',
  user: 'юзернейм',
  password: 'пароль',
});

Авторизация с помощью сертификатов по протоколу TLS (mTLS):

import GigaChat from 'gigachat';
import { Agent } from 'node:https';
import fs from 'node:fs';

const httpsAgent = new Agent({
  ca: fs.readFileSync('certs/ca.pem'),
  cert: fs.readFileSync('certs/tls.pem'),
  key: fs.readFileSync('certs/tls.key'),
  passphrase: 'пароль от приватного ключа',
});

const client = new GigaChat({
  baseUrl: 'BASE URL апи',
  httpsAgent: httpsAgent,
});

Авторизация с помощью токена доступа:

const client = new GigaChat({
  baseUrl: 'BASE URL апи',
  accessToken: 'токен',
});

NOTE Токен действителен в течение 30 минут.

Предварительная авторизация

По умолчанию, библиотека GigaChat получает токен доступа при первом запросе к API.

Если вам нужно получить токен и авторизоваться до выполнения запроса, инициализируйте объект GigaChat и вызовите метод get_token().

const client = new GigaChat({
  credentials: 'креды',
  scope: 'GIGACHAT_API_PERS / GIGACHAT_API_B2B / GIGACHAT_API_CORP',
});
await giga.updateToken();

Параметры объекта GigaChat

В таблице описаны параметры, которые можно передать при инициализации объекта GigaChat:

ПараметрОписание
credentialsКлюч авторизации для обмена сообщениями с GigaChat API.Ключ авторизации содержит информацию о версии API, к которой выполняются запросы. Если вы используете версию API для ИП или юрлиц, укажите это явно в параметре scope
scopeВерсия API, к которой будет выполнен запрос. По умолчанию запросы передаются в версию для физических лиц. Возможные значения:GIGACHAT_API_PERS — версия API для физических лиц;GIGACHAT_API_B2B — версия API для ИП и юрлиц при работе по предоплате.GIGACHAT_API_CORP — версия API для ИП и юрлиц при работе по постоплате.
modelнеобязательный параметр, в котором можно явно задать модель GigaChat. Вы можете посмотреть список доступных моделей с помощью метода get_models(), который выполняет запрос GET /models.Стоимость запросов к разным моделям отличается. Подробную информацию о тарификации запросов к той или иной модели вы ищите в официальной документации
baseUrlАдрес API. По умолчанию запросы отправляются по адресу https://gigachat.devices.sberbank.ru/api/v1/, но если вы хотите использовать модели в раннем доступе, укажите адрес https://gigachat-preview.devices.sberbank.ru/api/v1
httpsAgentНастройки HTTPS, которые добавляются при подключении к серверу API (подключение по сертификату, отключение проверки корневого сертифаката и т.д). В браузере не поддерживается!
dangerouslyAllowBrowserФлаг, включащий библиотеку в браузере. По умолчанию, данная библиотека в браузере не работает, так как так можно разоблачить ваш GigaChat токен.
timeoutТаймаут (в секундах), который используется при подключении

Переменные окружения

Также клиент автоматически подтягивает настройки из следующих переменных окружения:

  • GIGACHAT_CREDENTIALS
  • GIGACHAT_SCOPE
  • GIGACHAT_BASE_URL
  • GIGACHAT_MODEL
  • GIGACHAT_TIMEOUT

Не работает в браузере

Работа в браузере

По умолчанию, библиотека в браузере выкидывает Exception. Чтобы его отключить инициализируйте клиент так:

const client = new GigaChat({
  timeout: 600,
  model: 'GigaChat',
  credentials: 'ваш_ключ_авторизации',
  dangerouslyAllowBrowser: true,
});

Также в браузере нельзя создавать клиент с настройками HTTPS, то есть нельзя будет отключить игнорирование сертификатов.

0.0.10

7 months ago

0.0.11

7 months ago

0.0.12

6 months ago

0.0.1

8 months ago

0.0.3

8 months ago

0.0.2

8 months ago

0.0.9

8 months ago

0.0.8

8 months ago

0.0.5

8 months ago

0.0.4

8 months ago

0.0.7

8 months ago

0.0.6

8 months ago

1.0.18

1 year ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago