gigachat-node
Version:
The unoffical JavaScript/TypesSript library for the GigaChat API
147 lines (146 loc) • 6.76 kB
TypeScript
/// <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 };