UNPKG

gigachat-node

Version:

The unoffical JavaScript/TypesSript library for the GigaChat API

147 lines (146 loc) 6.76 kB
/// <reference types="node" /> import { Readable } from 'stream'; import { IBalanceResponse } from '@interfaces/balance'; import { ICompletionRequest, ICompletionResponse } from '@interfaces/completion'; import { GigaChatConfig } from '@interfaces/config'; import { IEmbeddingResponse } from '@interfaces/embedding'; import { IFile, IFileDeleteResponse } from '@interfaces/file'; import { IAllModelResponse } from '@interfaces/model'; import { ISummarizeResponse } from '@interfaces/summarize'; import { ITokenResponse } from '@interfaces/token'; import { GigaChatError } from './utils/GigaChatError'; /** * Класс для взаимодействия с API GigaChat. * Позволяет выполнять авторизацию, отправлять запросы к модели, загружать файлы и работать с потоками данных. */ declare class GigaChat { /** * HTTP-Клиент для обработки запросов. */ private httpClient; /** * Токен авторизации для API. */ authorization: string | undefined; /** * Секретный ключ клиента. */ private clientSecretKey; /** * Флаг, определяющий, следует ли игнорировать ошибки TLS. */ private isIgnoreTSL; /** * Флаг, определяющий, является ли клиент личным пользователем (Personal) или корпоративным (Corporation). */ private isPersonal; /** * Флаг, разрешающий автоматическое обновление токена при истечении срока его действия. */ private autoRefreshToken; /** * Включена ли обработка изображений в ответах модели. */ private imgOn; /** * Основной URL API GigaChat. */ private url; /** * URL для авторизации и получения токена. */ private urlAuth; /** * Область действия (scope) API для личных пользователей. */ private scopeForPersonal; /** * Область действия (scope) API для корпоративных пользователей. */ private scopeForCorporation; /** * Создает новый экземпляр GigaChat. * @param {GigaChatConfig} config Конфигурация клиента. */ constructor({ clientSecretKey, isIgnoreTSL, isPersonal, autoRefreshToken, imgOn, }: GigaChatConfig); /** * Извлекает URL изображения из ответа модели. * @param {string} completionContent Содержимое ответа. * @returns {IExtractImage | null} Результат извлечения изображения. */ private extractImageSource; /** * Обработка ошибки * @param {unknown} error Ошибка. * @param {() => Promise<T>} currentFunction Функция, которую надо выполнить, если проблема была в токенах и она решилась. * @returns {Promise<T>} Результат выполнения currentFunction(). * @throws {GigaChatError} Специфичная ошибка API */ private handlingError; /** * Создает новый токен доступа. * @returns {Promise<ITokenResponse>} Данные токена. */ createToken(): Promise<ITokenResponse>; /** * Отправляет запрос на завершение чата. * @param {ICompletionRequest} data - Данные запроса. * @returns {Promise<ICompletionResponse>} Ответ сервера. */ completion(data: ICompletionRequest): Promise<ICompletionResponse>; /** * Отправляет потоковый запрос на завершение чата. * @param {ICompletionRequest} data - Данные запроса. * @returns {Promise<Readable>} Потоковый ответ сервера. */ completionStream(data: ICompletionRequest): Promise<Readable>; /** * Получает список всех моделей. * @returns {Promise<IAllModelResponse>} Ответ сервера с моделями. */ allModels(): Promise<IAllModelResponse>; /** * Выполняет embedding запроса. * @param {string[]} input - Входные данные. * @returns {Promise<IEmbeddingResponse>} Ответ сервера с embedding. */ embedding(input: string[]): Promise<IEmbeddingResponse>; /** * Подсчитывает количество токенов в тексте. * @param {string} model - Модель. * @param {string[]} input - Входные данные. * @returns {Promise<ISummarizeResponse[]>} Ответ с количеством токенов. */ summarize(model: string, input: string[]): Promise<ISummarizeResponse[]>; /** * Загружает файл в сервис. * @param {string} pathToFile - Путь к файлу. * @param {string} [purpose='general'] - Назначение файла. * @returns {Promise<IFile>} Ответ сервера с данными файла. */ uploadFile(pathToFile: string, purpose?: string): Promise<IFile>; /** * Получение списка доступных файлов. * @returns {Promise<IFile[]>} Массив объектов с информацией о доступных файлах. */ getAllFiles(): Promise<IFile[]>; /** * Получение информации о файле по идентификатору. * @param {string} fileId - Идентификатор файла. * @returns {Promise<IFile>} Объект с информацией о файле. */ getFileInfo(fileId: string): Promise<IFile>; /** * Удаление файла по идентификатору. * @param {string} fileId - Идентификатор файла. * @returns {Promise<IFileDeleteResponse>} Ответ сервера. */ deleteFile(fileId: string): Promise<IFileDeleteResponse>; /** * Получение баланса токенов по всем моделям. * @returns {Promise<IBalanceResponse>} Ответ сервера с информацией о балансе. */ getBalance(): Promise<IBalanceResponse>; downloadFile(fileId: string): Promise<any>; } export { GigaChat, GigaChatError };