debug(geminiLive): minimal SDK config to isolate rejected field

This commit is contained in:
Hermann_Kitio 2026-04-27 02:59:07 +03:00
parent 91bb93a07f
commit 61be6b1959
2 changed files with 25 additions and 22 deletions

View file

@ -125,23 +125,19 @@ describe("openGeminiLiveSession (SDK)", () => {
capturedConnect = null; capturedConnect = null;
}); });
it("appelle live.connect avec le modèle + config Live (audio + system + transcripts + VAD)", async () => { it("appelle live.connect avec une config minimale (debug Sprint 6d — isolement champ rejeté)", async () => {
const client = new FakeWs(); const client = new FakeWs();
const capture = await openWithMock(client); const capture = await openWithMock(client);
expect(capture.model).toMatch(/gemini/); expect(capture.model).toMatch(/gemini/);
const config = capture.config; const config = capture.config;
expect(config.responseModalities).toContain("AUDIO"); expect(config.responseModalities).toContain("AUDIO");
expect(config.systemInstruction).toContain( // ⚠ DEBUG : les autres champs sont temporairement commentés dans
"un bailleur qui propose un appartement", // geminiLive.ts pour isoler celui qui fait rejeter le setup par Gemini.
); expect(config.systemInstruction).toBeUndefined();
expect(config.inputAudioTranscription).toEqual({}); expect(config.inputAudioTranscription).toBeUndefined();
expect(config.outputAudioTranscription).toEqual({}); expect(config.outputAudioTranscription).toBeUndefined();
// eslint-disable-next-line @typescript-eslint/no-explicit-any expect(config.realtimeInputConfig).toBeUndefined();
const vad: any = (config.realtimeInputConfig as any)
?.automaticActivityDetection;
expect(vad?.disabled).toBe(false);
expect(vad?.silenceDurationMs).toBe(2000);
}); });
it("forwarde un chunk audio client {type:'audio'} via session.sendRealtimeInput (PCM 16k base64)", async () => { it("forwarde un chunk audio client {type:'audio'} via session.sendRealtimeInput (PCM 16k base64)", async () => {

View file

@ -293,19 +293,26 @@ export function openGeminiLiveSession(
}; };
// ── Ouverture de la session SDK ────────────────────────────────────── // ── Ouverture de la session SDK ──────────────────────────────────────
// ⚠ DEBUG : config minimale pour isoler le champ qui fait rejeter le setup
// par Gemini. À restaurer une fois identifié.
// Variables conservées en signature pour ne pas casser les imports / la
// construction du prompt qui valide le sujet.
void systemPrompt;
void StartSensitivity;
void EndSensitivity;
const sdkConfig = { const sdkConfig = {
responseModalities: [Modality.AUDIO], responseModalities: [Modality.AUDIO],
systemInstruction: systemPrompt, // systemInstruction: systemPrompt,
inputAudioTranscription: {}, // inputAudioTranscription: {},
outputAudioTranscription: {}, // outputAudioTranscription: {},
realtimeInputConfig: { // realtimeInputConfig: {
automaticActivityDetection: { // automaticActivityDetection: {
disabled: false, // disabled: false,
startOfSpeechSensitivity: StartSensitivity.START_SENSITIVITY_LOW, // startOfSpeechSensitivity: StartSensitivity.START_SENSITIVITY_LOW,
endOfSpeechSensitivity: EndSensitivity.END_SENSITIVITY_LOW, // endOfSpeechSensitivity: EndSensitivity.END_SENSITIVITY_LOW,
silenceDurationMs: 2000, // silenceDurationMs: 2000,
}, // },
}, // },
}; };
console.log("[T2] SDK config:", JSON.stringify(sdkConfig, null, 2)); console.log("[T2] SDK config:", JSON.stringify(sdkConfig, null, 2));