@atjsh/llmlingua-2
Version:
JavaScript/TypeScript Implementation of LLMLingua-2
146 lines (136 loc) • 4.52 kB
TypeScript
/**
* @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