UNPKG

cui-llama.rn

Version:
233 lines 8.72 kB
import type { TurboModule } from 'react-native'; export type NativeEmbeddingParams = { embd_normalize?: number; }; export type NativeContextParams = { model: string; is_model_asset?: boolean; use_progress_callback?: boolean; n_ctx?: number; n_batch?: number; n_threads?: number; n_gpu_layers?: number; /** * Enable flash attention, only recommended in GPU device (Experimental in llama.cpp) */ flash_attn?: boolean; /** * KV cache data type for the K (Experimental in llama.cpp) */ cache_type_k?: number; /** * KV cache data type for the V (Experimental in llama.cpp) */ cache_type_v?: number; use_mlock?: boolean; use_mmap?: boolean; vocab_only?: boolean; lora?: string; lora_scaled?: number; rope_freq_base?: number; rope_freq_scale?: number; pooling_type?: number; embedding?: boolean; embd_normalize?: number; }; export type NativeCompletionParams = { prompt: string; n_threads?: number; /** * Set grammar for grammar-based sampling. Default: no grammar */ grammar?: string; /** * Specify a JSON array of stopping strings. * These words will not be included in the completion, so make sure to add them to the prompt for the next iteration. Default: `[]` */ stop?: Array<string>; /** * Set the maximum number of tokens to predict when generating text. * **Note:** May exceed the set limit slightly if the last token is a partial multibyte character. * When 0,no tokens will be generated but the prompt is evaluated into the cache. Default: `-1`, where `-1` is infinity. */ n_predict?: number; /** * If greater than 0, the response also contains the probabilities of top N tokens for each generated token given the sampling settings. * Note that for temperature < 0 the tokens are sampled greedily but token probabilities are still being calculated via a simple softmax of the logits without considering any other sampler settings. * Default: `0` */ n_probs?: number; /** * Limit the next token selection to the K most probable tokens. Default: `40` */ top_k?: number; /** * Limit the next token selection to a subset of tokens with a cumulative probability above a threshold P. Default: `0.95` */ top_p?: number; /** * The minimum probability for a token to be considered, relative to the probability of the most likely token. Default: `0.05` */ min_p?: number; /** * Set the chance for token removal via XTC sampler. Default: `0.0`, which is disabled. */ xtc_probability?: number; /** * Set a minimum probability threshold for tokens to be removed via XTC sampler. Default: `0.1` (> `0.5` disables XTC) */ xtc_threshold?: number; /** * Enable locally typical sampling with parameter p. Default: `1.0`, which is disabled. */ typical_p?: number; /** * Adjust the randomness of the generated text. Default: `0.8` */ temperature?: number; /** * Last n tokens to consider for penalizing repetition. Default: `64`, where `0` is disabled and `-1` is ctx-size. */ penalty_last_n?: number; /** * Control the repetition of token sequences in the generated text. Default: `1.0` */ penalty_repeat?: number; /** * Repeat alpha frequency penalty. Default: `0.0`, which is disabled. */ penalty_freq?: number; /** * Repeat alpha presence penalty. Default: `0.0`, which is disabled. */ penalty_present?: number; /** * Penalize newline tokens when applying the repeat penalty. Default: `false` */ /** * Enable Mirostat sampling, controlling perplexity during text generation. Default: `0`, where `0` is disabled, `1` is Mirostat, and `2` is Mirostat 2.0. */ mirostat?: number; /** * Set the Mirostat target entropy, parameter tau. Default: `5.0` */ mirostat_tau?: number; /** * Set the Mirostat learning rate, parameter eta. Default: `0.1` */ mirostat_eta?: number; /** * Set the DRY (Don't Repeat Yourself) repetition penalty multiplier. Default: `0.0`, which is disabled. */ dry_multiplier?: number; /** * Set the DRY repetition penalty base value. Default: `1.75` */ dry_base?: number; /** * Tokens that extend repetition beyond this receive exponentially increasing penalty: multiplier * base ^ (length of repeating sequence before token - allowed length). Default: `2` */ dry_allowed_length?: number; /** * How many tokens to scan for repetitions. Default: `-1`, where `0` is disabled and `-1` is context size. */ dry_penalty_last_n?: number; /** * Specify an array of sequence breakers for DRY sampling. Only a JSON array of strings is accepted. Default: `['\n', ':', '"', '*']` */ dry_sequence_breakers?: Array<string>; /** * Ignore end of stream token and continue generating. Default: `false` */ ignore_eos?: boolean; /** * Modify the likelihood of a token appearing in the generated text completion. * For example, use `"logit_bias": [[15043,1.0]]` to increase the likelihood of the token 'Hello', or `"logit_bias": [[15043,-1.0]]` to decrease its likelihood. * Setting the value to false, `"logit_bias": [[15043,false]]` ensures that the token `Hello` is never produced. The tokens can also be represented as strings, * e.g.`[["Hello, World!",-0.5]]` will reduce the likelihood of all the individual tokens that represent the string `Hello, World!`, just like the `presence_penalty` does. * Default: `[]` */ logit_bias?: Array<Array<number>>; /** * Set the random number generator (RNG) seed. Default: `-1`, which is a random seed. */ seed?: number; emit_partial_completion: boolean; }; export type NativeCompletionTokenProbItem = { tok_str: string; prob: number; }; export type NativeCompletionTokenProb = { content: string; probs: Array<NativeCompletionTokenProbItem>; }; export type NativeCompletionResultTimings = { prompt_n: number; prompt_ms: number; prompt_per_token_ms: number; prompt_per_second: number; predicted_n: number; predicted_ms: number; predicted_per_token_ms: number; predicted_per_second: number; }; export type NativeCompletionResult = { text: string; tokens_predicted: number; tokens_evaluated: number; truncated: boolean; stopped_eos: boolean; stopped_word: string; stopped_limit: number; stopping_word: string; tokens_cached: number; timings: NativeCompletionResultTimings; completion_probabilities?: Array<NativeCompletionTokenProb>; }; export type NativeTokenizeResult = { tokens: Array<number>; }; export type NativeEmbeddingResult = { embedding: Array<number>; }; export type NativeLlamaContext = { contextId: number; gpu: boolean; reasonNoGPU: string; model: Object; }; export type NativeSessionLoadResult = { tokens_loaded: number; prompt: string; }; export type NativeLlamaChatMessage = { role: string; content: string; }; export type NativeCPUFeatures = { armv8: boolean; i8mm: boolean; dotprod: boolean; }; export interface Spec extends TurboModule { setContextLimit(limit: number): Promise<void>; modelInfo(path: string, skip?: string[]): Promise<Object>; initContext(contextId: number, params: NativeContextParams): Promise<NativeLlamaContext>; loadSession(contextId: number, filepath: string): Promise<NativeSessionLoadResult>; saveSession(contextId: number, filepath: string, size: number): Promise<number>; completion(contextId: number, params: NativeCompletionParams): Promise<NativeCompletionResult>; stopCompletion(contextId: number): Promise<void>; tokenizeAsync(contextId: number, text: string): Promise<NativeTokenizeResult>; tokenizeSync(contextId: number, text: string): NativeTokenizeResult; getCpuFeatures(): Promise<NativeCPUFeatures>; getFormattedChat(contextId: number, messages: NativeLlamaChatMessage[], chatTemplate?: string): Promise<string>; detokenize(contextId: number, tokens: number[]): Promise<string>; embedding(contextId: number, text: string, params: NativeEmbeddingParams): Promise<NativeEmbeddingResult>; bench(contextId: number, pp: number, tg: number, pl: number, nr: number): Promise<string>; releaseContext(contextId: number): Promise<void>; releaseAllContexts(): Promise<void>; } declare const _default: Spec; export default _default; //# sourceMappingURL=NativeRNLlama.d.ts.map