Merge 31da281d9b6784e2618d246caa6ef4d3b2419f4f into 43513cd1df63af0704dfb351ee7864607f955dcc

This commit is contained in:
LIU Yaohua 2026-03-21 13:36:20 +08:00 committed by GitHub
commit 0f7afc41bf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -216,6 +216,19 @@ interface OllamaChatResponse {
eval_duration?: number;
}
// ── Helpers ──────────────────────────────────────────────────────────────────
function parseToolArgs(raw: unknown): Record<string, unknown> {
if (typeof raw === "string") {
try {
return JSON.parse(raw) as Record<string, unknown>;
} catch {
return {};
}
}
return (raw as Record<string, unknown>) ?? {};
}
// ── Message conversion ──────────────────────────────────────────────────────
type InputContentPart =
@ -254,9 +267,9 @@ function extractToolCalls(content: unknown): OllamaToolCall[] {
const result: OllamaToolCall[] = [];
for (const part of parts) {
if (part.type === "toolCall") {
result.push({ function: { name: part.name, arguments: part.arguments } });
result.push({ function: { name: part.name, arguments: parseToolArgs(part.arguments) } });
} else if (part.type === "tool_use") {
result.push({ function: { name: part.name, arguments: part.input } });
result.push({ function: { name: part.name, arguments: part.input ?? {} } });
}
}
return result;
@ -355,7 +368,7 @@ export function buildAssistantMessage(
type: "toolCall",
id: `ollama_call_${randomUUID()}`,
name: tc.function.name,
arguments: tc.function.arguments,
arguments: parseToolArgs(tc.function.arguments),
});
}
}