ai-platform-converter
Version:
Lossless API parameter conversion between multiple AI platforms (OpenAI, Anthropic, Gemini, DeepSeek, Wenwen, Vertex AI, Huawei, BigModel)
56 lines (55 loc) • 2.22 kB
JavaScript
;
/**
* Convert OpenAI response to Google Vertex AI format
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertOpenAIResponseToVertexAI = convertOpenAIResponseToVertexAI;
exports.convertVertexAIResponseToOpenAI = convertVertexAIResponseToOpenAI;
const openai_compatible_1 = require("../universal/openai-compatible");
const common_1 = require("../../types/common");
/**
* Convert OpenAI response to Vertex AI format
* Vertex AI uses OpenAI-compatible response format
*/
function convertOpenAIResponseToVertexAI(response, options) {
// Use the universal converter since VertexAI is OpenAI-compatible
const convertedResponse = (0, openai_compatible_1.convertOpenAIResponseToCompatible)(response, common_1.Platform.VertexAI, options);
// Add VertexAI-specific response handling
if (convertedResponse._extensions) {
convertedResponse._extensions.vertexai = {
...convertedResponse._extensions.vertexai,
// Normalize model name for VertexAI response
model: normalizeVertexAIModel(response.model),
// Preserve VertexAI-specific response fields
...(response._extensions?.vertexai || {})
};
}
return convertedResponse;
}
/**
* Normalize model name for VertexAI response
*/
function normalizeVertexAIModel(model) {
// Vertex AI model name mapping for responses
const modelMapping = {
'gpt-3.5-turbo': 'gemini-1.5-flash',
'gpt-4': 'gemini-1.5-pro',
'gpt-4-turbo': 'gemini-1.5-pro',
'text-davinci-003': 'text-bison',
'code-davinci-002': 'code-bison'
};
// If it's already a Vertex AI model, return as-is
if (model.startsWith('gemini') || model.includes('-bison')) {
return model;
}
// Return mapped model or default
return modelMapping[model] || 'gemini-1.5-flash';
}
/**
* Convert VertexAI response to OpenAI format
*/
function convertVertexAIResponseToOpenAI(response, options) {
// Use the universal converter for reverse conversion
const convertedResponse = (0, openai_compatible_1.convertOpenAIResponseToCompatible)(response, common_1.Platform.OpenAI, options);
return convertedResponse;
}