perf: improve AI prompt cache reuse
This commit is contained in:
@@ -100,13 +100,15 @@ void main() {
|
||||
);
|
||||
|
||||
expect(reply?.reply, 'Where are you from?');
|
||||
expect(messages, hasLength(3));
|
||||
expect(messages, hasLength(4));
|
||||
expect(messages![0]['role'], 'system');
|
||||
expect(jsonDecode(messages![1]['content'] as String), {
|
||||
expect(messages![1]['role'], 'user');
|
||||
expect(messages![1]['content'], startsWith('[ConversationConfig]'));
|
||||
expect(jsonDecode(messages![2]['content'] as String), {
|
||||
'reply': "Hi! What's your name?",
|
||||
});
|
||||
expect(messages![2]['role'], 'user');
|
||||
final last = messages![2]['content'] as String;
|
||||
expect(messages![3]['role'], 'user');
|
||||
final last = messages![3]['content'] as String;
|
||||
expect(last, startsWith('My name is Alex.'));
|
||||
expect(
|
||||
last,
|
||||
@@ -114,28 +116,33 @@ void main() {
|
||||
);
|
||||
expect(
|
||||
last,
|
||||
endsWith('Do not repeat any questions or greetings already asked or answered.'),
|
||||
endsWith(
|
||||
'Do not repeat any questions or greetings already asked or answered.',
|
||||
),
|
||||
);
|
||||
expect(messages![0]['content'], isNot(contains('Ask where the learner')));
|
||||
});
|
||||
|
||||
test('dialogue system prompt stays identical across turns', () {
|
||||
test('dialogue system prompt stays identical across levels and lessons', () {
|
||||
final words = ['Excuse me.', 'Can you help me?'];
|
||||
final a = AiService.dialogueSystemPrompt(
|
||||
level: 'A1',
|
||||
allowedLanguage: words,
|
||||
);
|
||||
final b = AiService.dialogueSystemPrompt(
|
||||
level: 'A1',
|
||||
allowedLanguage: words,
|
||||
);
|
||||
final a = AiService.dialogueSystemPrompt();
|
||||
final b = AiService.dialogueSystemPrompt();
|
||||
expect(a, b);
|
||||
expect(a, contains('CEFR A1'));
|
||||
expect(a, contains('Strictly do not repeat any question'));
|
||||
expect(a, endsWith('Taught language: Excuse me.; Can you help me?'));
|
||||
expect(a, isNot(contains('Excuse me.')));
|
||||
|
||||
final config = AiService.dialogueConversationConfig(
|
||||
level: 'A1',
|
||||
allowedLanguage: words,
|
||||
);
|
||||
expect(config, contains('A1'));
|
||||
expect(config, contains('Excuse me.'));
|
||||
expect(
|
||||
AiService.dialogueSystemPrompt(level: 'A0', allowedLanguage: const []),
|
||||
contains('A0 English conversation partner'),
|
||||
AiService.dialogueConversationConfig(
|
||||
level: 'A0',
|
||||
allowedLanguage: const [],
|
||||
),
|
||||
contains('simple, common A0 English'),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user