fix: error handling for model imports should be handled gracefully
This commit is contained in:
parent
0bc2f82ec0
commit
024992264f
@ -784,5 +784,63 @@ describe('JanModelExtension', () => {
|
|||||||
expect.anything()
|
expect.anything()
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should handle model with valid chat_template', async () => {
|
||||||
|
executeMock.mockResolvedValue('{prompt}')
|
||||||
|
;(gguf as jest.Mock).mockResolvedValue({
|
||||||
|
metadata: {},
|
||||||
|
})
|
||||||
|
// @ts-ignore
|
||||||
|
global.NODE = 'node'
|
||||||
|
// @ts-ignore
|
||||||
|
global.DEFAULT_MODEL = {
|
||||||
|
parameters: { stop: [] },
|
||||||
|
settings: {
|
||||||
|
prompt_template: '<|im-start|>{prompt}<|im-end|>',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await sut.retrieveGGUFMetadata({})
|
||||||
|
|
||||||
|
expect(result).toEqual({
|
||||||
|
parameters: {
|
||||||
|
stop: [],
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
ctx_len: 4096,
|
||||||
|
ngl: 33,
|
||||||
|
prompt_template: '{prompt}',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should handle model without chat_template', async () => {
|
||||||
|
executeMock.mockRejectedValue({})
|
||||||
|
;(gguf as jest.Mock).mockResolvedValue({
|
||||||
|
metadata: {},
|
||||||
|
})
|
||||||
|
// @ts-ignore
|
||||||
|
global.NODE = 'node'
|
||||||
|
// @ts-ignore
|
||||||
|
global.DEFAULT_MODEL = {
|
||||||
|
parameters: { stop: [] },
|
||||||
|
settings: {
|
||||||
|
prompt_template: '<|im-start|>{prompt}<|im-end|>',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await sut.retrieveGGUFMetadata({})
|
||||||
|
|
||||||
|
expect(result).toEqual({
|
||||||
|
parameters: {
|
||||||
|
stop: [],
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
ctx_len: 4096,
|
||||||
|
ngl: 33,
|
||||||
|
prompt_template: '<|im-start|>{prompt}<|im-end|>',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@ -577,7 +577,7 @@ export default class JanModelExtension extends ModelExtension {
|
|||||||
dirName,
|
dirName,
|
||||||
binaryFileName,
|
binaryFileName,
|
||||||
])
|
])
|
||||||
)
|
).catch(() => undefined)
|
||||||
|
|
||||||
const updatedModel = await this.retrieveGGUFMetadata(metadata)
|
const updatedModel = await this.retrieveGGUFMetadata(metadata)
|
||||||
|
|
||||||
@ -877,8 +877,13 @@ export default class JanModelExtension extends ModelExtension {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
async retrieveGGUFMetadata(metadata: any): Promise<Partial<Model>> {
|
async retrieveGGUFMetadata(metadata: any): Promise<Partial<Model>> {
|
||||||
const template = await executeOnMain(NODE, 'renderJinjaTemplate', metadata)
|
|
||||||
const defaultModel = DEFAULT_MODEL as Model
|
const defaultModel = DEFAULT_MODEL as Model
|
||||||
|
var template = await executeOnMain(
|
||||||
|
NODE,
|
||||||
|
'renderJinjaTemplate',
|
||||||
|
metadata
|
||||||
|
).catch(() => undefined)
|
||||||
|
|
||||||
const eos_id = metadata['tokenizer.ggml.eos_token_id']
|
const eos_id = metadata['tokenizer.ggml.eos_token_id']
|
||||||
const architecture = metadata['general.architecture']
|
const architecture = metadata['general.architecture']
|
||||||
|
|
||||||
|
|||||||
@ -16,12 +16,7 @@ export const retrieveGGUFMetadata = async (ggufPath: string) => {
|
|||||||
// Parse metadata and tensor info
|
// Parse metadata and tensor info
|
||||||
const { metadata } = ggufMetadata(buffer.buffer)
|
const { metadata } = ggufMetadata(buffer.buffer)
|
||||||
|
|
||||||
// Parse jinja template
|
return metadata
|
||||||
const renderedTemplate = renderJinjaTemplate(metadata)
|
|
||||||
return {
|
|
||||||
...metadata,
|
|
||||||
parsed_chat_template: renderedTemplate,
|
|
||||||
}
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('[MODEL_EXT]', e)
|
console.log('[MODEL_EXT]', e)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user