|
|
import type { ProxyReqMutator } from "../index"; |
|
|
|
|
|
|
|
|
export const finalizeBody: ProxyReqMutator = (manager) => { |
|
|
const req = manager.request; |
|
|
|
|
|
if (["POST", "PUT", "PATCH"].includes(req.method ?? "") && req.body) { |
|
|
|
|
|
if (req.outboundApi === "openai-image") { |
|
|
delete req.body.stream; |
|
|
} |
|
|
|
|
|
if (req.outboundApi === "anthropic-chat") { |
|
|
delete req.body.prompt; |
|
|
} |
|
|
|
|
|
if (req.outboundApi === "openai-responses") { |
|
|
|
|
|
if (req.body.messages) { |
|
|
req.log.info("Formatting messages for Responses API in finalizeBody"); |
|
|
|
|
|
req.body.input = req.body.messages; |
|
|
delete req.body.messages; |
|
|
} else if (req.body.input && req.body.input.messages) { |
|
|
req.log.info("Reformatting input.messages for Responses API in finalizeBody"); |
|
|
|
|
|
req.body.input = req.body.input.messages; |
|
|
} |
|
|
|
|
|
|
|
|
if (req.body.max_completion_tokens) { |
|
|
req.log.info("Converting max_completion_tokens to max_output_tokens in finalizeBody"); |
|
|
if (!req.body.max_output_tokens) { |
|
|
req.body.max_output_tokens = req.body.max_completion_tokens; |
|
|
} |
|
|
delete req.body.max_completion_tokens; |
|
|
} |
|
|
|
|
|
|
|
|
if (req.body.max_tokens) { |
|
|
req.log.info("Converting max_tokens to max_output_tokens in finalizeBody"); |
|
|
if (!req.body.max_output_tokens) { |
|
|
req.body.max_output_tokens = req.body.max_tokens; |
|
|
} |
|
|
delete req.body.max_tokens; |
|
|
} |
|
|
|
|
|
|
|
|
const unsupportedParams = [ |
|
|
'frequency_penalty', |
|
|
'presence_penalty', |
|
|
]; |
|
|
|
|
|
for (const param of unsupportedParams) { |
|
|
if (req.body[param] !== undefined) { |
|
|
req.log.info(`Removing unsupported parameter for Responses API: ${param}`); |
|
|
delete req.body[param]; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
const serialized = |
|
|
typeof req.body === "string" ? req.body : JSON.stringify(req.body); |
|
|
manager.setHeader("Content-Length", String(Buffer.byteLength(serialized))); |
|
|
manager.setBody(serialized); |
|
|
} |
|
|
}; |
|
|
|