mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-07 01:09:54 +08:00
feat: add cache for tokenizer (#13333)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Performance Improvements** * Improved the efficiency of token encoder retrieval, resulting in faster response times when working with supported models. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -16,16 +16,24 @@ export const mintChallengeResponse = async (resource: string, bits: number) => {
|
|||||||
return serverNativeModule.mintChallengeResponse(resource, bits);
|
return serverNativeModule.mintChallengeResponse(resource, bits);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const ENCODER_CACHE = new Map<string, Tokenizer>();
|
||||||
|
|
||||||
export function getTokenEncoder(model?: string | null): Tokenizer | null {
|
export function getTokenEncoder(model?: string | null): Tokenizer | null {
|
||||||
if (!model) return null;
|
if (!model) return null;
|
||||||
|
const cached = ENCODER_CACHE.get(model);
|
||||||
|
if (cached) return cached;
|
||||||
if (model.startsWith('gpt')) {
|
if (model.startsWith('gpt')) {
|
||||||
return serverNativeModule.fromModelName(model);
|
const encoder = serverNativeModule.fromModelName(model);
|
||||||
|
if (encoder) ENCODER_CACHE.set(model, encoder);
|
||||||
|
return encoder;
|
||||||
} else if (model.startsWith('dall')) {
|
} else if (model.startsWith('dall')) {
|
||||||
// dalle don't need to calc the token
|
// dalle don't need to calc the token
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
// c100k based model
|
// c100k based model
|
||||||
return serverNativeModule.fromModelName('gpt-4');
|
const encoder = serverNativeModule.fromModelName('gpt-4');
|
||||||
|
if (encoder) ENCODER_CACHE.set('gpt-4', encoder);
|
||||||
|
return encoder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user