feat: add batched recipe import queue
This commit is contained in:
@@ -75,3 +75,36 @@ test('MiniMax 사고 과정 분리와 충분한 출력 한도를 요청한다',
|
||||
assert.match(request.messages[0].content, /수량, 온도, 시간 값은 변환하지 않습니다/);
|
||||
assert.equal(result.ingredientGroups[0].name, '재료');
|
||||
});
|
||||
|
||||
test('여러 본문과 jobId를 MiniMax 단일 요청으로 보내고 각각 검증한다', async () => {
|
||||
const requests = [];
|
||||
const client = {
|
||||
chat: {
|
||||
completions: {
|
||||
async create(parameters) {
|
||||
requests.push(parameters);
|
||||
const sources = JSON.parse(parameters.messages[1].content).sources;
|
||||
return {
|
||||
choices: [{
|
||||
message: {
|
||||
content: JSON.stringify({
|
||||
results: sources.map(({ jobId }) => ({ jobId, recipe: recipeDraft })),
|
||||
}),
|
||||
},
|
||||
}],
|
||||
};
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
const service = new RecipeParserService({ client, model: 'MiniMax-M2.7' });
|
||||
const results = await service.parseMany([
|
||||
{ jobId: 'job-1', source: { platform: 'instagram', title: null, rawText: '본문 1' } },
|
||||
{ jobId: 'job-2', source: { platform: 'youtube', title: '제목', rawText: '본문 2' } },
|
||||
]);
|
||||
|
||||
assert.equal(requests.length, 1);
|
||||
assert.equal(requests[0].max_completion_tokens, 16384);
|
||||
assert.deepEqual(results.map(({ jobId }) => jobId), ['job-1', 'job-2']);
|
||||
assert.deepEqual(results.map(({ recipe }) => recipe), [recipeDraft, recipeDraft]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user