diff --git a/.gitignore b/.gitignore index 577a4f199..c09c7071c 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,4 @@ node_modules/ .eslintcache # build output -dist/ \ No newline at end of file +dist/.DS_Store diff --git a/src/routes/messages/non-stream-translation.ts b/src/routes/messages/non-stream-translation.ts index dc41e6382..b441e763b 100644 --- a/src/routes/messages/non-stream-translation.ts +++ b/src/routes/messages/non-stream-translation.ts @@ -239,11 +239,26 @@ function translateAnthropicToolsToOpenAI( function: { name: tool.name, description: tool.description, - parameters: tool.input_schema, + parameters: normalizeToolParameters(tool.input_schema), }, })) } +function normalizeToolParameters( + inputSchema: unknown, +): Record { + if (!inputSchema || typeof inputSchema !== "object") { + return { type: "object", properties: {} } + } + + const schema = { ...inputSchema } as Record + if (schema.type === "object" && schema.properties === undefined) { + return { ...schema, properties: {} } + } + + return schema +} + function translateAnthropicToolChoiceToOpenAI( anthropicToolChoice: AnthropicMessagesPayload["tool_choice"], ): ChatCompletionsPayload["tool_choice"] {