seo-generator-server/tests/_helpers/mockLLMManager.js
2025-09-03 15:29:19 +08:00

25 lines
863 B
JavaScript

/**
* Mock LLMManager : renvoie des sorties déterministes selon l'input,
* et peut simuler des erreurs transitoires (429/500) via flags.
*/
export class MockLLMManager {
constructor({failTimes=0, failCode=429} = {}) {
this.failTimes = failTimes;
this.failCode = failCode;
this.calls = [];
}
async callModel({provider='mock', model='mock-1', input}) {
this.calls.push({provider, model, input});
if (this.failTimes > 0) {
this.failTimes--;
const err = new Error(`Mock transient ${this.failCode}`);
err.statusCode = this.failCode;
throw err;
}
// sortie déterministe simple
const text = (typeof input === 'string' ? input : JSON.stringify(input));
const completion = `MOCK[${model}]::` + text.slice(0, 60);
return { completion, usage: { prompt_tokens: 100, completion_tokens: 200 } };
}
}