feat(runner): add structured gemini API request/response logging

This commit is contained in:
2026-06-03 16:10:36 -07:00
parent 1219c9d00f
commit 9d3aef33e8

View File

@@ -121,12 +121,33 @@ export async function callGeminiChat(opts: {
const fns = toGeminiFunctions(opts.tools ?? []); const fns = toGeminiFunctions(opts.tools ?? []);
if (fns) config.tools = fns; if (fns) config.tools = fns;
console.log("\n========================================================");
console.log("➡️ [GEMINI API REQUEST]");
console.log("========================================================");
console.log(
`System Prompt: ${config.systemInstruction ? config.systemInstruction.slice(0, 1000) + "..." : "None"}`,
);
console.log(
"Contents Payload:",
JSON.stringify(toGeminiContents(opts.messages), null, 2),
);
console.log("========================================================\n");
const response = await ai.models.generateContent({ const response = await ai.models.generateContent({
model: GEMINI_MODEL, model: GEMINI_MODEL,
contents: toGeminiContents(opts.messages), contents: toGeminiContents(opts.messages),
config, config,
}); });
console.log("\n========================================================");
console.log("⬅️ [GEMINI API RESPONSE]");
console.log("========================================================");
console.log(
"Raw Candidates:",
JSON.stringify(response.candidates, null, 2),
);
console.log("========================================================\n");
let text = ""; let text = "";
let thoughts = ""; let thoughts = "";
const toolCalls: ToolCall[] = []; const toolCalls: ToolCall[] = [];
@@ -183,6 +204,18 @@ export async function* streamGeminiChat(opts: {
const fns = toGeminiFunctions(opts.tools ?? []); const fns = toGeminiFunctions(opts.tools ?? []);
if (fns) config.tools = fns; if (fns) config.tools = fns;
console.log("\n========================================================");
console.log("➡️ [GEMINI STREAM REQUEST]");
console.log("========================================================");
console.log(
`System Prompt: ${config.systemInstruction ? config.systemInstruction.slice(0, 1000) + "..." : "None"}`,
);
console.log(
"Contents Payload:",
JSON.stringify(toGeminiContents(opts.messages), null, 2),
);
console.log("========================================================\n");
const streamResult = await ai.models.generateContentStream({ const streamResult = await ai.models.generateContentStream({
model: GEMINI_MODEL, model: GEMINI_MODEL,
contents: toGeminiContents(opts.messages), contents: toGeminiContents(opts.messages),