mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-11 20:08:37 +00:00
feat: add session impl (#6254)
This commit is contained in:
@@ -59,12 +59,74 @@ test('should be able to manage prompt', async t => {
|
||||
{ role: 'user', content: 'hello' },
|
||||
]);
|
||||
t.is((await prompt.list()).length, 1, 'should have one prompt');
|
||||
t.is((await prompt.get('test')).length, 2, 'should have two messages');
|
||||
t.is(
|
||||
(await prompt.get('test'))!.finish({}).length,
|
||||
2,
|
||||
'should have two messages'
|
||||
);
|
||||
|
||||
await prompt.update('test', [{ role: 'system', content: 'hello' }]);
|
||||
t.is((await prompt.get('test')).length, 1, 'should have one message');
|
||||
t.is(
|
||||
(await prompt.get('test'))!.finish({}).length,
|
||||
1,
|
||||
'should have one message'
|
||||
);
|
||||
|
||||
await prompt.delete('test');
|
||||
t.is((await prompt.list()).length, 0, 'should have no prompt');
|
||||
t.is((await prompt.get('test')).length, 0, 'should have no messages');
|
||||
t.is(await prompt.get('test'), null, 'should not have the prompt');
|
||||
});
|
||||
|
||||
test('should be able to render prompt', async t => {
|
||||
const { prompt } = t.context;
|
||||
|
||||
const msg = {
|
||||
role: 'system' as const,
|
||||
content: 'translate {{src_language}} to {{dest_language}}: {{content}}',
|
||||
params: { src_language: ['eng'], dest_language: ['chs', 'jpn', 'kor'] },
|
||||
};
|
||||
const params = {
|
||||
src_language: 'eng',
|
||||
dest_language: 'chs',
|
||||
content: 'hello world',
|
||||
};
|
||||
|
||||
await prompt.set('test', [msg]);
|
||||
const testPrompt = await prompt.get('test');
|
||||
t.assert(testPrompt, 'should have prompt');
|
||||
t.is(
|
||||
testPrompt?.finish(params).pop()?.content,
|
||||
'translate eng to chs: hello world',
|
||||
'should render the prompt'
|
||||
);
|
||||
t.deepEqual(
|
||||
testPrompt?.paramKeys,
|
||||
Object.keys(params),
|
||||
'should have param keys'
|
||||
);
|
||||
t.deepEqual(testPrompt?.params, msg.params, 'should have params');
|
||||
t.throws(() => testPrompt?.finish({ src_language: 'abc' }), {
|
||||
instanceOf: Error,
|
||||
});
|
||||
});
|
||||
|
||||
test('should be able to render listed prompt', async t => {
|
||||
const { prompt } = t.context;
|
||||
|
||||
const msg = {
|
||||
role: 'system' as const,
|
||||
content: 'links:\n{{#links}}- {{.}}\n{{/links}}',
|
||||
};
|
||||
const params = {
|
||||
links: ['https://affine.pro', 'https://github.com/toeverything/affine'],
|
||||
};
|
||||
|
||||
await prompt.set('test', [msg]);
|
||||
const testPrompt = await prompt.get('test');
|
||||
|
||||
t.is(
|
||||
testPrompt?.finish(params).pop()?.content,
|
||||
'links:\n- https://affine.pro\n- https://github.com/toeverything/affine\n',
|
||||
'should render the prompt'
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user