UNPKG

@atjsh/llmlingua-2

Version:

JavaScript/TypeScript Implementation of LLMLingua-2

146 lines (136 loc) 4.52 kB
/** * @categoryDescription Factory A collection of utility functions and types for model-specific token handling. * * @showCategories */ import { AutoConfig, AutoModelForTokenClassification, AutoTokenizer, PretrainedConfig, TransformersJSConfig } from "@huggingface/transformers"; import { Tiktoken } from "js-tiktoken"; import { PromptCompressorLLMLingua2 } from "./prompt-compressor.js"; import { Logger } from "./utils.js"; type PreTrainedTokenizerOptions = Parameters<typeof AutoTokenizer.from_pretrained>[1]; type PretrainedModelOptions = Parameters<typeof AutoModelForTokenClassification.from_pretrained>[1]; /** * Options for the LLMLingua-2 factory functions. * * @category Factory */ export interface LLMLingua2FactoryOptions { /** * Configuration for Transformers.js. */ transformerJSConfig: TransformersJSConfig; /** * The tokenizer to use calculating the compression rate. */ oaiTokenizer: Tiktoken; /** * Optional pretrained configuration. */ pretrainedConfig?: PretrainedConfig | null; /** * Optional pretrained tokenizer options. */ pretrainedTokenizerOptions?: PreTrainedTokenizerOptions | null; /** * Optional model-specific options. */ modelSpecificOptions?: PretrainedModelOptions | null; /** * Optional logger function. */ logger?: Logger; } /** * Return type for the LLMLingua-2 factory functions. Use `promptCompressor` to compress prompts. * * @category Factory */ export interface LLMLingua2FactoryReturn { /** * Instance of LLMLingua-2 PromptCompressor. * * @see {@link PromptCompressorLLMLingua2} */ promptCompressor: PromptCompressorLLMLingua2; /** * The model used for token classification. */ model: AutoModelForTokenClassification; /** * The tokenizer used for tokenization. */ tokenizer: AutoTokenizer; /** * The configuration used for the model. */ config: AutoConfig; } /** * Factory functions to create instances of LLMLingua-2 PromptCompressor * with XLM-RoBERTa model. * * @category Factory * * @example * ```ts import { LLMLingua2 } from "@atjsh/llmlingua-2"; import { Tiktoken } from "js-tiktoken/lite"; import o200k_base from "js-tiktoken/ranks/o200k_base"; const modelName = "atjsh/llmlingua-2-js-xlm-roberta-large-meetingbank"; const oai_tokenizer = new Tiktoken(o200k_base); const { promptCompressor } = await LLMLingua2.WithXLMRoBERTa(modelName, { transformerJSConfig: { device: "auto", dtype: "fp32", }, oaiTokenizer: oai_tokenizer, modelSpecificOptions: { use_external_data_format: true, }, } ); const compressedText: string = await promptCompressor.compress_prompt( "LLMLingua-2, a small-size yet powerful prompt compression method trained via data distillation from GPT-4 for token classification with a BERT-level encoder, excels in task-agnostic compression. It surpasses LLMLingua in handling out-of-domain data, offering 3x-6x faster performance.", { rate: 0.8 } ); console.log({ compressedText }); ``` */ export declare function WithXLMRoBERTa(modelName: string, options: LLMLingua2FactoryOptions): Promise<LLMLingua2FactoryReturn>; /** * Factory functions to create instances of LLMLingua-2 PromptCompressor * with BERT Multilingual model. * * @category Factory * * @example * ```ts import { LLMLingua2 } from "@atjsh/llmlingua-2"; import { Tiktoken } from "js-tiktoken/lite"; import o200k_base from "js-tiktoken/ranks/o200k_base"; const modelName = "Arcoldd/llmlingua4j-bert-base-onnx"; const oai_tokenizer = new Tiktoken(o200k_base); const { promptCompressor } = await LLMLingua2.WithBERTMultilingual(modelName, { transformerJSConfig: { device: "auto", dtype: "fp32", }, oaiTokenizer: oai_tokenizer, modelSpecificOptions: { subfolder: "", }, } ); const compressedText: string = await promptCompressor.compress_prompt( "LLMLingua-2, a small-size yet powerful prompt compression method trained via data distillation from GPT-4 for token classification with a BERT-level encoder, excels in task-agnostic compression. It surpasses LLMLingua in handling out-of-domain data, offering 3x-6x faster performance.", { rate: 0.8 } ); console.log({ compressedText }); ``` */ export declare function WithBERTMultilingual(modelName: string, options: LLMLingua2FactoryOptions): Promise<LLMLingua2FactoryReturn>; export {}; //# sourceMappingURL=factory.d.ts.map